var urlapi = "http://localhost:3000/api/";
|
|
|
|
angular.module('workApp', ['chart.js'])
|
|
.controller('workController', function(
|
|
$scope,
|
|
$interval,
|
|
$http
|
|
) {
|
|
$scope.users={};
|
|
$scope.projects={};
|
|
$scope.currentInclude='login.html';
|
|
var refreshTime=20000;
|
|
/* DASHBOARD initialization */
|
|
$scope.dashboardInit = function(){
|
|
if(localStorage.getItem('owt_token')){// adding token to the headers
|
|
$http.defaults.headers.post['X-Access-Token'] = localStorage.getItem('owt_token');
|
|
$http.defaults.headers.post['Content-Type'] = 'application/json';
|
|
$http.defaults.headers.common['X-Access-Token'] = localStorage.getItem('owt_token');
|
|
}
|
|
if(localStorage.getItem("owt_user")){
|
|
$scope.user=JSON.parse(localStorage.getItem("owt_user"));
|
|
}else{
|
|
$scope.currentInclude="login.html";
|
|
}
|
|
|
|
//getting users
|
|
$http.get(urlapi + 'users')
|
|
.success(function(data, status, headers,config){
|
|
if(data.success==false){
|
|
/*localStorage.removeItem("owt_token");
|
|
localStorage.removeItem("owt_user");
|
|
$scope.currentInclude="login.html";
|
|
console.log("token ended");*/
|
|
}else{
|
|
console.log(data);
|
|
$scope.users=data;
|
|
}
|
|
})
|
|
.error(function(data, status, headers,config){
|
|
console.log("server not responding, data error");
|
|
toastr.error("server not responding");
|
|
$scope.$broadcast('scroll.refreshComplete');//refresher stop
|
|
})
|
|
.then(function(result){
|
|
users = result.data;
|
|
});
|
|
|
|
//getting projects
|
|
$http.get(urlapi + 'projects')
|
|
.success(function(data, status, headers,config){
|
|
console.log(data);
|
|
$scope.projects=data;
|
|
})
|
|
.error(function(data, status, headers,config){
|
|
console.log("server not responding, data error");
|
|
toastr.error("server not responding");
|
|
$scope.$broadcast('scroll.refreshComplete');//refresher stop
|
|
})
|
|
.then(function(result){
|
|
users = result.data;
|
|
});
|
|
|
|
};
|
|
/* </DASHBOARD initialization */
|
|
|
|
|
|
$scope.user={};
|
|
if(localStorage.getItem("owt_user")){
|
|
$scope.user=JSON.parse(localStorage.getItem("owt_user"));
|
|
$scope.currentInclude="dashboard.html";
|
|
$scope.dashboardInit();
|
|
intervalGetData = $interval(function(){
|
|
$scope.dashboardInit();
|
|
}, refreshTime);
|
|
}else{
|
|
$scope.currentInclude="login.html";
|
|
}
|
|
|
|
/* LOGIN SIGNUP */
|
|
$scope.showSignup = function(){
|
|
$scope.currentInclude="signup.html";
|
|
};
|
|
$scope.hideSignup = function(){
|
|
$scope.currentInclude="login.html";
|
|
};
|
|
$scope.onBtnSignup = function(){
|
|
$scope.user.projects=[];
|
|
$http({
|
|
url: urlapi + 'users',
|
|
method: "POST",
|
|
data: $scope.user
|
|
}).then(function(response) {
|
|
$scope.currentInclude="login.html";
|
|
},
|
|
function(response) {// failed
|
|
});
|
|
|
|
};
|
|
var intervalGetData;//out of internal scope
|
|
$scope.onBtnLogin = function(){
|
|
$http({
|
|
url: urlapi + 'auth',
|
|
method: "POST",
|
|
data: $scope.user
|
|
}).then(function(response) {
|
|
if(response.data.success)
|
|
{
|
|
localStorage.setItem("owt_token", response.data.token);
|
|
localStorage.setItem("owt_user", angular.toJson(response.data.user));
|
|
$scope.user=JSON.parse(localStorage.getItem("owt_user"));
|
|
|
|
$scope.currentInclude="dashboard.html";
|
|
$scope.dashboardInit();
|
|
|
|
intervalGetData = $interval(function(){
|
|
$scope.dashboardInit();
|
|
}, refreshTime);
|
|
}else{
|
|
toastr.error(response.data.message);
|
|
}
|
|
},
|
|
function(response) {// failed
|
|
});
|
|
};
|
|
$scope.onBtnLogout = function(){
|
|
$http({
|
|
url: urlapi + 'logout',
|
|
method: "POST",
|
|
data: $scope.user
|
|
}).then(function(response) {
|
|
localStorage.removeItem("owt_token");
|
|
localStorage.removeItem("owt_user");
|
|
$interval.cancel(intervalGetData);
|
|
$scope.currentInclude="login.html";
|
|
},
|
|
function(response) {// failed
|
|
});
|
|
};
|
|
/* </ LOGIN SIGNUP */
|
|
|
|
|
|
|
|
|
|
//localStorage.clear();
|
|
$scope.working=false;
|
|
$scope.currentproject={};
|
|
|
|
$scope.newproject={};
|
|
//$scope.newproject.id=$scope.projects[$scope.projects.length-1].id+1;
|
|
$scope.addNewProject = function(){
|
|
/*$scope.newproject.totaltime="0";
|
|
$scope.projects.push($scope.newproject);
|
|
localStorage.setItem("w_l_projects", angular.toJson($scope.projects));
|
|
$scope.newproject={
|
|
id: $scope.projects[$scope.projects.length-1].id+1,
|
|
chart: {
|
|
labels: [],
|
|
series: ['Working time'],
|
|
data: []
|
|
}
|
|
};*/
|
|
$http({
|
|
url: urlapi + 'projects',
|
|
method: "POST",
|
|
data: $scope.newproject
|
|
}).then(function(response) {
|
|
console.log("project posted");
|
|
console.log(response);
|
|
$scope.projects=response.data;
|
|
toastr.success("project created at server");
|
|
$scope.newproject={};
|
|
},
|
|
function(response) {// failed
|
|
});
|
|
};
|
|
$scope.editingIndex="";
|
|
$scope.editProject = function(index){
|
|
$scope.editingIndex=index;
|
|
$scope.editingProject=angular.copy($scope.projects[index]);
|
|
};
|
|
$scope.cancelEditProject = function(){
|
|
$scope.editingProject=false;
|
|
};
|
|
$scope.updateProject = function(){
|
|
$scope.projects[$scope.editingIndex]=angular.copy($scope.editingProject);
|
|
$scope.currentproject=angular.copy($scope.editingProject);
|
|
$scope.editingProject=false;
|
|
};
|
|
$scope.removeProject = function(index){
|
|
/*$scope.projects.splice(index, 1);
|
|
localStorage.setItem("w_l_projects", angular.toJson($scope.projects));*/
|
|
$http({
|
|
url: urlapi + 'projects/' + $scope.projects[index]._id,
|
|
method: "DELETE",
|
|
data: $scope.user._id
|
|
}).then(function(response) {
|
|
console.log(response);
|
|
$scope.projects=response.data;
|
|
$scope.projectSelect(null);
|
|
},
|
|
function(response) {// failed
|
|
});
|
|
};
|
|
$scope.currentprojectIndex;
|
|
$scope.projectSelect = function(index){
|
|
$scope.btnStop();
|
|
$scope.currentprojectIndex=index;
|
|
$scope.currentproject=$scope.projects[index];
|
|
};
|
|
|
|
$scope.joinProject = function(){
|
|
console.log($scope.user);
|
|
$http({
|
|
url: urlapi + 'projects/'+$scope.currentproject._id+'/adduser',
|
|
method: "PUT",
|
|
data: $scope.user
|
|
}).then(function(response) {
|
|
console.log("project joined");
|
|
$scope.projects=response.data;
|
|
//re select currentproject
|
|
$scope.currentproject=$scope.projects[$scope.currentprojectIndex];
|
|
toastr.success("project joined");
|
|
},
|
|
function(response) {// failed
|
|
});
|
|
};
|
|
var interval;
|
|
$scope.currentStrike=0;
|
|
$scope.btnWork = function(){
|
|
$scope.editingProject=false;
|
|
$scope.working=true;
|
|
$scope.currentStrike=0;
|
|
interval = $interval(function(){
|
|
$scope.currentStrike++;
|
|
$scope.currentproject.totaltime++;
|
|
}, 1000);
|
|
$http({
|
|
url: urlapi + 'users',
|
|
method: "POST",
|
|
data: $scope.user
|
|
}).then(function(response) {
|
|
$scope.currentInclude="login.html";
|
|
},
|
|
function(response) {// failed
|
|
});
|
|
};
|
|
$scope.btnStop = function(){
|
|
$interval.cancel(interval);
|
|
if($scope.working==true)
|
|
{
|
|
$scope.working=false;
|
|
$scope.currentproject.chart.labels.push("work strike " + $scope.currentproject.chart.labels.length);
|
|
$scope.currentproject.chart.data.push($scope.currentStrike);
|
|
|
|
localStorage.setItem("w_l_projects", angular.toJson($scope.projects));
|
|
}
|
|
|
|
|
|
}
|
|
|
|
$scope.openCode = function(){
|
|
toastr.info("Visiting code");
|
|
var urlCode="https://github.com/idoctnef/openworktime";
|
|
if(typeof process !== 'undefined'){
|
|
console.log(process.versions['electron']);
|
|
const {shell} = require('electron');
|
|
|
|
shell.openExternal(urlCode);
|
|
}else{
|
|
window.open(urlCode);
|
|
}
|
|
};
|
|
|
|
//chart
|
|
/*$scope.chart={
|
|
labels: ['A', 'B', 'C', 'D', 'E', 'F', 'G'],
|
|
series: ['Working time', 'Series B'],
|
|
data: [
|
|
[65, 59, 80, 81, 56, 55, 40],
|
|
[28, 48, 40, 19, 86, 27, 90]
|
|
]
|
|
};*/
|
|
|
|
})
|
|
|
|
|
|
.filter('secondsToDateTime', [function() {
|
|
return function(seconds) {
|
|
return new Date(2016, 0, 1).setSeconds(seconds);
|
|
};
|
|
}]);
|