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}]);