arnaucube
arnaucube/openworktimePublic Self-hosted repository
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}]);