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
 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}]);