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