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