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