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
10 $scope.currentInclude='login.html';
11 /* DASHBOARD initialization */
12 $scope.dashboardInit = function(){
13 if(localStorage.getItem('owt_token')){// adding token to the headers
14 $http.defaults.headers.post['X-Access-Token'] = localStorage.getItem('owt_token');
15 $http.defaults.headers.common['X-Access-Token'] = localStorage.getItem('owt_token');
16 }
17
18 //getting users
19 $http.get(urlapi + 'users')
20 .success(function(data, status, headers,config){
21 console.log(data);
22 $scope.users=data;
23 })
24 .error(function(data, status, headers,config){
25 console.log('data error');
26 $scope.$broadcast('scroll.refreshComplete');//refresher stop
27 })
28 .then(function(result){
29 users = result.data;
30 });
31
32 };
33 /* </DASHBOARD initialization */
34
35
36 $scope.user={};
37 if(localStorage.getItem("owt_user")){
38 $scope.user=JSON.parse(localStorage.getItem("owt_user"));
39 $scope.currentInclude="dashboard.html";
40 $scope.dashboardInit();
41 }else{
42 $scope.currentInclude="login.html";
43 }
44
45 /* LOGIN SIGNUP */
46 $scope.showSignup = function(){
47 $scope.currentInclude="signup.html";
48 };
49 $scope.hideSignup = function(){
50 $scope.currentInclude="login.html";
51 };
52 $scope.onBtnSignup = function(){
53 $scope.user.projects=[];
54 $http({
55 url: urlapi + 'users',
56 method: "POST",
57 data: $scope.user
58 }).then(function(response) {
59 $scope.currentInclude="login.html";
60 },
61 function(response) {// failed
62 });
63
64 };
65
66 $scope.onBtnLogin = function(){
67 $http({
68 url: urlapi + 'auth',
69 method: "POST",
70 data: $scope.user
71 }).then(function(response) {
72 if(response.data.success)
73 {
74 localStorage.setItem("owt_token", response.data.token);
75 localStorage.setItem("owt_user", angular.toJson(response.data.user));
76 $scope.user=JSON.parse(localStorage.getItem("owt_user"));
77
78 $scope.currentInclude="dashboard.html";
79 $scope.dashboardInit();
80 var intervalGetData;
81 intervalGetData = $interval(function(){
82 $scope.dashboardInit();
83 }, 10000);
84 }else{
85 toastr.error(response.data.message);
86 }
87 },
88 function(response) {// failed
89 });
90 };
91 $scope.onBtnLogout = function(){
92 $http({
93 url: urlapi + 'logout',
94 method: "POST",
95 data: $scope.user
96 }).then(function(response) {
97 localStorage.removeItem("owt_token");
98 localStorage.removeItem("owt_user");
99 $scope.currentInclude="login.html";
100 },
101 function(response) {// failed
102 });
103 };
104 /* </ LOGIN SIGNUP */
105
106
107
108
109 //localStorage.clear();
110 $scope.working=false;
111 $scope.projects=[];
112 $scope.currentproject={};
113 if(localStorage.getItem("w_l_projects"))
114 {
115 $scope.projects=JSON.parse(localStorage.getItem("w_l_projects")); //w_local_
116 }
117 if($scope.projects.length>0)
118 {
119 $scope.newproject={
120 id: $scope.projects[$scope.projects.length-1].id+1,
121 chart: {
122 labels: [],
123 series: ['Working time'],
124 data: []
125 }
126 };
127 }else{
128 $scope.newproject={
129 id: 0,
130 chart: {
131 labels: [],
132 series: ['Working time'],
133 data: []
134 }
135 };
136 }
137 //$scope.newproject.id=$scope.projects[$scope.projects.length-1].id+1;
138 $scope.addNewProject = function(){
139 $scope.newproject.totaltime="0";
140 $scope.projects.push($scope.newproject);
141 localStorage.setItem("w_l_projects", angular.toJson($scope.projects));
142 $scope.newproject={
143 id: $scope.projects[$scope.projects.length-1].id+1,
144 chart: {
145 labels: [],
146 series: ['Working time'],
147 data: []
148 }
149 };
150 };
151 $scope.editingIndex="";
152 $scope.editProject = function(index){
153 $scope.editingIndex=index;
154 $scope.editingProject=angular.copy($scope.projects[index]);
155 };
156 $scope.cancelEditProject = function(){
157 $scope.editingProject=false;
158 };
159 $scope.updateProject = function(){
160 $scope.projects[$scope.editingIndex]=angular.copy($scope.editingProject);
161 $scope.currentproject=angular.copy($scope.editingProject);
162 $scope.editingProject=false;
163 };
164 $scope.removeProject = function(index){
165 $scope.projects.splice(index, 1);
166 localStorage.setItem("w_l_projects", angular.toJson($scope.projects));
167 $scope.projectSelect(0);
168 };
169 $scope.projectSelect = function(index){
170 $scope.btnStop();
171 $scope.currentproject=$scope.projects[index];
172 };
173 var interval;
174 $scope.currentStrike=0;
175 $scope.btnWork = function(){
176 $scope.editingProject=false;
177 $scope.working=true;
178 $scope.currentStrike=0;
179 interval = $interval(function(){
180 $scope.currentStrike++;
181 $scope.currentproject.totaltime++;
182 }, 1000);
183 };
184 $scope.btnStop = function(){
185 $interval.cancel(interval);
186 if($scope.working==true)
187 {
188 $scope.working=false;
189 $scope.currentproject.chart.labels.push("work strike " + $scope.currentproject.chart.labels.length);
190 $scope.currentproject.chart.data.push($scope.currentStrike);
191
192 localStorage.setItem("w_l_projects", angular.toJson($scope.projects));
193 }
194
195
196 }
197
198 $scope.openCode = function(){
199 toastr.info("Visiting code");
200 var urlCode="https://github.com/idoctnef/openworktime";
201 if(typeof process !== 'undefined'){
202 console.log(process.versions['electron']);
203 const {shell} = require('electron');
204
205 shell.openExternal(urlCode);
206 }else{
207 window.open(urlCode);
208 }
209 };
210
211 //chart
212 /*$scope.chart={
213 labels: ['A', 'B', 'C', 'D', 'E', 'F', 'G'],
214 series: ['Working time', 'Series B'],
215 data: [
216 [65, 59, 80, 81, 56, 55, 40],
217 [28, 48, 40, 19, 86, 27, 90]
218 ]
219 };*/
220
221 })
222
223
224 .filter('secondsToDateTime', [function() {
225 return function(seconds) {
226 return new Date(2016, 0, 1).setSeconds(seconds);
227 };
228}]);