arnaucube
arnaucube/openworktimePublic Self-hosted repository
openworktime/webapp/controllers.js
webapp/controllers.jsRaw
  1
  2angular.module('workApp', ['chart.js'])
  3  .controller('workController', function(
  4        $scope,
  5        $interval
  6    ) {
  7        $scope.username="user";
  8        //localStorage.clear();
  9        $scope.working=false;
 10    $scope.projects=[];
 11    $scope.currentproject={};
 12    if(localStorage.getItem("w_l_projects"))
 13    {
 14        $scope.projects=JSON.parse(localStorage.getItem("w_l_projects")); //w_local_
 15    }
 16    if($scope.projects.length>0)
 17    {
 18        $scope.newproject={
 19            id: $scope.projects[$scope.projects.length-1].id+1,
 20            chart: {
 21                labels: [],
 22                series: ['Working time'],
 23                data: []
 24            }
 25        };
 26    }else{
 27        $scope.newproject={
 28            id: 0,
 29            chart: {
 30                labels: [],
 31                series: ['Working time'],
 32                data: []
 33            }
 34        };
 35    }
 36    //$scope.newproject.id=$scope.projects[$scope.projects.length-1].id+1;
 37    $scope.addNewProject = function(){
 38        $scope.newproject.totaltime="0";
 39        $scope.projects.push($scope.newproject);
 40        localStorage.setItem("w_l_projects", angular.toJson($scope.projects));
 41        $scope.newproject={
 42            id: $scope.projects[$scope.projects.length-1].id+1,
 43            chart: {
 44                labels: [],
 45                series: ['Working time'],
 46                data: []
 47            }
 48        };
 49    };
 50    $scope.editingIndex="";
 51    $scope.editProject = function(index){
 52        $scope.editingIndex=index;
 53        $scope.editingProject=angular.copy($scope.projects[index]);
 54    };
 55    $scope.cancelEditProject = function(){
 56        $scope.editingProject=false;
 57    };
 58    $scope.updateProject = function(){
 59        $scope.projects[$scope.editingIndex]=angular.copy($scope.editingProject);
 60        $scope.currentproject=angular.copy($scope.editingProject);
 61        $scope.editingProject=false;
 62    };
 63    $scope.removeProject = function(index){
 64        $scope.projects.splice(index, 1);
 65        localStorage.setItem("w_l_projects", angular.toJson($scope.projects));
 66        $scope.projectSelect(0);
 67    };
 68    $scope.projectSelect = function(index){
 69        $scope.btnStop();
 70        $scope.currentproject=$scope.projects[index];
 71    };
 72    var interval;
 73    $scope.currentStrike=0;
 74    $scope.btnWork = function(){
 75        $scope.editingProject=false;
 76        $scope.working=true;
 77        $scope.currentStrike=0;
 78        interval = $interval(function(){
 79            $scope.currentStrike++;
 80            $scope.currentproject.totaltime++;
 81        }, 1000);
 82    };
 83    $scope.btnStop = function(){
 84        $interval.cancel(interval);
 85        if($scope.working==true)
 86        {
 87            $scope.working=false;
 88            $scope.currentproject.chart.labels.push("work strike " + $scope.currentproject.chart.labels.length);
 89            $scope.currentproject.chart.data.push($scope.currentStrike);
 90
 91            localStorage.setItem("w_l_projects", angular.toJson($scope.projects));
 92        }
 93
 94
 95    }
 96
 97    $scope.openCode = function(){
 98        toastr.info("Visiting code");
 99        var urlCode="https://github.com/idoctnef/openworktime";
100        if(typeof process !== 'undefined'){
101            console.log(process.versions['electron']);
102            const {shell} = require('electron');
103
104            shell.openExternal(urlCode);
105        }else{
106            window.open(urlCode);
107        }
108    };
109
110    //chart
111    /*$scope.chart={
112        labels: ['A', 'B', 'C', 'D', 'E', 'F', 'G'],
113        series: ['Working time', 'Series B'],
114        data: [
115            [65, 59, 80, 81, 56, 55, 40],
116            [28, 48, 40, 19, 86, 27, 90]
117        ]
118    };*/
119
120  })
121
122  .filter('secondsToDateTime', [function() {
123    return function(seconds) {
124        return new Date(2016, 0, 1).setSeconds(seconds);
125    };
126}]);