openworktime/webapp/controllers.js
webapp/controllers.jsRaw
1var urlapi = "http://localhost:3000/api/";
2
3angular.module('workApp', ['chart.js'])
4 .controller('workController', function(
5 $scope,
6 $interval,
7 $http
8 ) {
9 $scope.currentInclude='login.html';
10 if(localStorage.getItem("owt_user")){
11 $scope.user=JSON.parse(localStorage.getItem("owt_user"));
12 $scope.currentInclude="dashboard.html";
13 }else{
14 //window.location="index.html";
15 }
16
17 /* LOGIN SIGNUP */
18 $scope.showSignup = function(){
19
20 };
21 $scope.onBtnSignup = function(){
22 $scope.user.projects=[];
23 $http({
24 url: urlapi + 'users',
25 method: "POST",
26 data: $scope.user
27 }).then(function(response) {
28 window.location="index.html";
29 },
30 function(response) {// failed
31 });
32 };
33
34 $scope.onBtnLogin = function(){
35 $http({
36 url: urlapi + 'auth',
37 method: "POST",
38 data: $scope.user
39 }).then(function(response) {
40 console.log(response);
41 if(response.data.success)
42 {
43 localStorage.setItem("owt_token", angular.toJson(response.data.token));
44 localStorage.setItem("owt_user", angular.toJson(response.data.user));
45 window.location="dashboard.html";
46 }else{
47 toastr.error("login error", response.data.message);
48 }
49 },
50 function(response) {// failed
51 });
52 };
53 $scope.onBtnLogout = function(){
54 localStorage.removeItem("owt_token");
55 localStorage.removeItem("owt_user");
56 //window.location.reload();
57 };
58 /* </ LOGIN SIGNUP */
59
60 //localStorage.clear();
61 $scope.working=false;
62 $scope.projects=[];
63 $scope.currentproject={};
64 if(localStorage.getItem("w_l_projects"))
65 {
66 $scope.projects=JSON.parse(localStorage.getItem("w_l_projects")); //w_local_
67 }
68 if($scope.projects.length>0)
69 {
70 $scope.newproject={
71 id: $scope.projects[$scope.projects.length-1].id+1,
72 chart: {
73 labels: [],
74 series: ['Working time'],
75 data: []
76 }
77 };
78 }else{
79 $scope.newproject={
80 id: 0,
81 chart: {
82 labels: [],
83 series: ['Working time'],
84 data: []
85 }
86 };
87 }
88 //$scope.newproject.id=$scope.projects[$scope.projects.length-1].id+1;
89 $scope.addNewProject = function(){
90 $scope.newproject.totaltime="0";
91 $scope.projects.push($scope.newproject);
92 localStorage.setItem("w_l_projects", angular.toJson($scope.projects));
93 $scope.newproject={
94 id: $scope.projects[$scope.projects.length-1].id+1,
95 chart: {
96 labels: [],
97 series: ['Working time'],
98 data: []
99 }
100 };
101 };
102 $scope.editingIndex="";
103 $scope.editProject = function(index){
104 $scope.editingIndex=index;
105 $scope.editingProject=angular.copy($scope.projects[index]);
106 };
107 $scope.cancelEditProject = function(){
108 $scope.editingProject=false;
109 };
110 $scope.updateProject = function(){
111 $scope.projects[$scope.editingIndex]=angular.copy($scope.editingProject);
112 $scope.currentproject=angular.copy($scope.editingProject);
113 $scope.editingProject=false;
114 };
115 $scope.removeProject = function(index){
116 $scope.projects.splice(index, 1);
117 localStorage.setItem("w_l_projects", angular.toJson($scope.projects));
118 $scope.projectSelect(0);
119 };
120 $scope.projectSelect = function(index){
121 $scope.btnStop();
122 $scope.currentproject=$scope.projects[index];
123 };
124 var interval;
125 $scope.currentStrike=0;
126 $scope.btnWork = function(){
127 $scope.editingProject=false;
128 $scope.working=true;
129 $scope.currentStrike=0;
130 interval = $interval(function(){
131 $scope.currentStrike++;
132 $scope.currentproject.totaltime++;
133 }, 1000);
134 };
135 $scope.btnStop = function(){
136 $interval.cancel(interval);
137 if($scope.working==true)
138 {
139 $scope.working=false;
140 $scope.currentproject.chart.labels.push("work strike " + $scope.currentproject.chart.labels.length);
141 $scope.currentproject.chart.data.push($scope.currentStrike);
142
143 localStorage.setItem("w_l_projects", angular.toJson($scope.projects));
144 }
145
146
147 }
148
149 $scope.openCode = function(){
150 toastr.info("Visiting code");
151 var urlCode="https://github.com/idoctnef/openworktime";
152 if(typeof process !== 'undefined'){
153 console.log(process.versions['electron']);
154 const {shell} = require('electron');
155
156 shell.openExternal(urlCode);
157 }else{
158 window.open(urlCode);
159 }
160 };
161
162 //chart
163 /*$scope.chart={
164 labels: ['A', 'B', 'C', 'D', 'E', 'F', 'G'],
165 series: ['Working time', 'Series B'],
166 data: [
167 [65, 59, 80, 81, 56, 55, 40],
168 [28, 48, 40, 19, 86, 27, 90]
169 ]
170 };*/
171
172 })
173
174
175 .filter('secondsToDateTime', [function() {
176 return function(seconds) {
177 return new Date(2016, 0, 1).setSeconds(seconds);
178 };
179}]);