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