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.users={};
10 $scope.projects={};
11 $scope.currentInclude='login.html';
12 var refreshTime=20000;
13 /* DASHBOARD initialization */
14 $scope.dashboardInit = function(){
15 if(localStorage.getItem('owt_token')){// adding token to the headers
16 $http.defaults.headers.post['X-Access-Token'] = localStorage.getItem('owt_token');
17 $http.defaults.headers.post['Content-Type'] = 'application/json';
18 $http.defaults.headers.common['X-Access-Token'] = localStorage.getItem('owt_token');
19 }
20 if(localStorage.getItem("owt_user")){
21 $scope.user=JSON.parse(localStorage.getItem("owt_user"));
22 }else{
23 $scope.currentInclude="login.html";
24 }
25
26 //getting users
27 $http.get(urlapi + 'users')
28 .success(function(data, status, headers,config){
29 if(data.success==false){
30 localStorage.removeItem("owt_token");
31 localStorage.removeItem("owt_user");
32 $scope.currentInclude="login.html";
33 console.log("token ended");
34 }else{
35 console.log(data);
36 $scope.users=data;
37 }
38 })
39 .error(function(data, status, headers,config){
40 console.log("server not responding, data error");
41 toastr.error("server not responding");
42 $scope.$broadcast('scroll.refreshComplete');//refresher stop
43 })
44 .then(function(result){
45 users = result.data;
46 });
47
48 //getting projects
49 $http.get(urlapi + 'projects')
50 .success(function(data, status, headers,config){
51 if(data.success==false){
52 localStorage.removeItem("owt_token");
53 localStorage.removeItem("owt_user");
54 $scope.currentInclude="login.html";
55 console.log("token ended");
56 }else{
57 console.log(data);
58 $scope.projects=data;
59 }
60 })
61 .error(function(data, status, headers,config){
62 console.log("server not responding, data error");
63 toastr.error("server not responding");
64 $scope.$broadcast('scroll.refreshComplete');//refresher stop
65 })
66 .then(function(result){
67 users = result.data;
68 });
69
70 };
71 /* </DASHBOARD initialization */
72
73
74 $scope.user={};
75 if(localStorage.getItem("owt_user")){
76 $scope.user=JSON.parse(localStorage.getItem("owt_user"));
77 $scope.currentInclude="dashboard.html";
78 $scope.dashboardInit();
79 intervalGetData = $interval(function(){
80 $scope.dashboardInit();
81 }, refreshTime);
82 }else{
83 $scope.currentInclude="login.html";
84 }
85
86 /* LOGIN SIGNUP */
87 $scope.showSignup = function(){
88 $scope.currentInclude="signup.html";
89 };
90 $scope.hideSignup = function(){
91 $scope.currentInclude="login.html";
92 };
93 $scope.onBtnSignup = function(){
94 $scope.user.projects=[];
95 $http({
96 url: urlapi + 'users',
97 method: "POST",
98 data: $scope.user
99 }).then(function(response) {
100 $scope.currentInclude="login.html";
101 },
102 function(response) {// failed
103 });
104
105 };
106 var intervalGetData;//out of internal scope
107 $scope.onBtnLogin = function(){
108 $http({
109 url: urlapi + 'auth',
110 method: "POST",
111 data: $scope.user
112 }).then(function(response) {
113 if(response.data.success)
114 {
115 localStorage.setItem("owt_token", response.data.token);
116 localStorage.setItem("owt_user", angular.toJson(response.data.user));
117 $scope.user=JSON.parse(localStorage.getItem("owt_user"));
118
119 $scope.currentInclude="dashboard.html";
120 $scope.dashboardInit();
121
122 intervalGetData = $interval(function(){
123 $scope.dashboardInit();
124 }, refreshTime);
125 }else{
126 toastr.error(response.data.message);
127 }
128 },
129 function(response) {// failed
130 });
131 };
132 $scope.onBtnLogout = function(){
133 $http({
134 url: urlapi + 'logout',
135 method: "POST",
136 data: $scope.user
137 }).then(function(response) {
138 localStorage.removeItem("owt_token");
139 localStorage.removeItem("owt_user");
140 $interval.cancel(intervalGetData);
141 $scope.currentInclude="login.html";
142 },
143 function(response) {// failed
144 });
145 };
146 /* </ LOGIN SIGNUP */
147
148
149
150
151 //localStorage.clear();
152 $scope.working=false;
153 $scope.currentproject={};
154
155 $scope.newproject={};
156 //$scope.newproject.id=$scope.projects[$scope.projects.length-1].id+1;
157 $scope.addNewProject = function(){
158 /*$scope.newproject.totaltime="0";
159 $scope.projects.push($scope.newproject);
160 localStorage.setItem("w_l_projects", angular.toJson($scope.projects));
161 $scope.newproject={
162 id: $scope.projects[$scope.projects.length-1].id+1,
163 chart: {
164 labels: [],
165 series: ['Working time'],
166 data: []
167 }
168 };*/
169 $http({
170 url: urlapi + 'projects',
171 method: "POST",
172 data: $scope.newproject
173 }).then(function(response) {
174 console.log("project posted");
175 console.log(response);
176 $scope.projects=response.data;
177 toastr.success("project created at server");
178 $scope.newproject={};
179 },
180 function(response) {// failed
181 });
182 };
183 $scope.editingIndex="";
184 $scope.editProject = function(index){
185 $scope.editingIndex=index;
186 $scope.editingProject=angular.copy($scope.projects[index]);
187 };
188 $scope.cancelEditProject = function(){
189 $scope.editingProject=false;
190 };
191 $scope.updateProject = function(){
192 $scope.projects[$scope.editingIndex]=angular.copy($scope.editingProject);
193 $scope.currentproject=angular.copy($scope.editingProject);
194 $scope.editingProject=false;
195 };
196 $scope.removeProject = function(index){
197 /*$scope.projects.splice(index, 1);
198 localStorage.setItem("w_l_projects", angular.toJson($scope.projects));*/
199 $http({
200 url: urlapi + 'projects/' + $scope.projects[index]._id,
201 method: "DELETE",
202 data: $scope.user._id
203 }).then(function(response) {
204 console.log(response);
205 $scope.projects=response.data;
206 $scope.projectSelect(null);
207 },
208 function(response) {// failed
209 });
210 };
211 $scope.currentprojectIndex;
212 $scope.projectSelect = function(index){
213 $scope.btnStop();
214 $scope.currentprojectIndex=index;
215 $scope.currentproject=$scope.projects[index];
216 };
217
218 $scope.joinProject = function(){
219 console.log($scope.user);
220 $http({
221 url: urlapi + 'projects/'+$scope.currentproject._id+'/adduser',
222 method: "PUT",
223 data: $scope.user
224 }).then(function(response) {
225 console.log("project joined");
226 $scope.projects=response.data;
227 //re select currentproject
228 $scope.currentproject=$scope.projects[$scope.currentprojectIndex];
229 toastr.success("project joined");
230 },
231 function(response) {// failed
232 });
233 };
234 var interval;
235 $scope.currentStrike=0;
236 $scope.btnWork = function(){
237 //$scope.editingProject=false;
238 $scope.working=true;
239 $http({
240 url: urlapi + 'projects/' + $scope.currentproject._id + '/startworking',
241 method: "PUT",
242 data: $scope.user
243 }).then(function(response) {
244 console.log(response);
245 $scope.projects=response.data;
246 },
247 function(response) {// failed
248 });
249 };
250 $scope.btnStop = function(){
251 if($scope.working==true)
252 {
253 $scope.working=false;
254 $http({
255 url: urlapi + 'projects/' + $scope.currentproject._id + '/stopworking',
256 method: "PUT",
257 data: $scope.user
258 }).then(function(response) {
259 console.log(response);
260 $scope.projects=response.data;
261 },
262 function(response) {// failed
263 });
264 }
265
266
267 }
268
269 $scope.openCode = function(){
270 toastr.info("Visiting code");
271 var urlCode="https://github.com/idoctnef/openworktime";
272 if(typeof process !== 'undefined'){
273 console.log(process.versions['electron']);
274 const {shell} = require('electron');
275
276 shell.openExternal(urlCode);
277 }else{
278 window.open(urlCode);
279 }
280 };
281
282 //chart
283 /*$scope.chart={
284 labels: ['A', 'B', 'C', 'D', 'E', 'F', 'G'],
285 series: ['Working time', 'Series B'],
286 data: [
287 [65, 59, 80, 81, 56, 55, 40],
288 [28, 48, 40, 19, 86, 27, 90]
289 ]
290 };*/
291
292 })
293
294
295 .filter('secondsToDateTime', [function() {
296 return function(seconds) {
297 return new Date(2016, 0, 1).setSeconds(seconds);
298 };
299}]);