arnaucube
arnaucube/openworktimePublic Self-hosted repository
delete project and join project added (frontend and backend)
nau idoctnef@openmailbox.org
Thu, 08 Sep 2016 23:56:46 +0200
commit

48eb01dd5e3abca70b3810c6477e43064f8c404c

parent

3df8ff8c7023bd80031311cac31087369538c819

M controllers/projectController.js → controllers/projectController.js

@@ -61,7 +61,31 @@ });

project.save(function(err, project) { if(err) return res.send(500, err.message); - res.status(200).jsonp(project); + /*res.status(200).jsonp(project);*/ + projectModel.find(function(err, projects) { + if(err) res.send(500, err.message); + + res.status(200).jsonp(projects); + }); + }); +}; + +exports.addUserToProject = function(req, res) { + console.log("addUserToProject"); + console.log(req.body); + projectModel.findById(req.params.id, function(err, project) { + console.log(project); + project.users.push(req.body.username); + console.log(project.users); + project.save(function(err) { + if(err) return res.send(500, err.message); + + projectModel.find(function(err, projects) { + if(err) res.send(500, err.message); + + res.status(200).jsonp(projects); + }); + }); }); };

@@ -85,11 +109,17 @@ };

//DELETE exports.deleteProject = function(req, res) { - ActivityModel.findById(req.params.id, function(err, activity) { - activity.remove(function(err) { + projectModel.findById(req.params.id, function(err, project) { + project.remove(function(err) { if(err) return res.send(500, err.message); - res.status(200).jsonp(req.params.id); - console.log('DELETE /activities/' + req.params.id); + + /*res.status(200).jsonp(req.params.id);*/ + console.log('DELETE /projects/' + req.params.id); + projectModel.find(function(err, projects) { + if(err) res.send(500, err.message); + + res.status(200).jsonp(projects); + }); }) }); };
M models/projectModel.js → models/projectModel.js

@@ -2,17 +2,17 @@ var mongoose = require('mongoose'),

Schema = mongoose.Schema; -var travelSchema = new Schema({ +var projectSchema = new Schema({ title: { type: String }, description: { type: String }, icon: { type: String }, - users: { type: String }, + users: [{ type: String }], chart: { type: String }, dateCreation: { type: Date }, github: { type: String }, refnum: { type: String } }) -module.exports = mongoose.model('projectModel', travelSchema); +module.exports = mongoose.model('projectModel', projectSchema); //modality can be: offering, asking, package
M server.js → server.js

@@ -124,6 +124,9 @@ apiRoutes.route('/projects/:id')

.put(projectCtrl.updateProject) .delete(projectCtrl.deleteProject); +apiRoutes.route('/projects/:id/adduser') + .put(projectCtrl.addUserToProject); + app.use('/api', apiRoutes); // end of API routes -------------------------------------
M webapp/controllers.js → webapp/controllers.js

@@ -9,21 +9,28 @@ ) {

$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_token"); localStorage.removeItem("owt_user"); $scope.currentInclude="login.html"; - console.log("token ended"); + console.log("token ended");*/ }else{ console.log(data); $scope.users=data;

@@ -64,7 +71,7 @@ $scope.currentInclude="dashboard.html";

$scope.dashboardInit(); intervalGetData = $interval(function(){ $scope.dashboardInit(); - }, 2000); + }, refreshTime); }else{ $scope.currentInclude="login.html"; }

@@ -107,7 +114,7 @@ $scope.dashboardInit();

intervalGetData = $interval(function(){ $scope.dashboardInit(); - }, 2000); + }, refreshTime); }else{ toastr.error(response.data.message); }

@@ -159,6 +166,7 @@ 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={}; },

@@ -179,14 +187,43 @@ $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)); - $scope.projectSelect(0); + /*$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(){

@@ -197,6 +234,15 @@ 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);
M webapp/dashboard.html → webapp/dashboard.html

@@ -78,6 +78,9 @@ <img ng-src="img/{{project.icon}}.png" class="circle"/>

<span class="title">{{project.title}}</span> <p class="grey-text">{{project.description}}</p> <p class="grey-text">{{project.totaltime | secondsToDateTime | date:'HH:mm:ss'}}</p> + <p class="grey-text"> + <div ng-repeat="user in project.users">{{user}}</div> + </p> </a> </div> </div>

@@ -125,8 +128,13 @@ </p>

</div> <div class="card-action"> - <a ng-click="btnWork()" ng-show="!working" class="waves-effect waves-light btn green lighten-2">Work!</a> - <a ng-click="btnStop()" ng-show="working" class="waves-effect waves-light btn red lighten-2">Stop!</a> + <div ng-show="currentproject.users.indexOf(user.username)!=-1"> + <a ng-click="btnWork()" ng-show="!working" class="waves-effect waves-light btn green lighten-2">Work!</a> + <a ng-click="btnStop()" ng-show="working" class="waves-effect waves-light btn red lighten-2">Stop!</a> + </div> + <div ng-show="currentproject.users.indexOf(user.username)==-1"> + <a ng-click="joinProject()" class="waves-effect waves-light btn blue lighten-2">Join!</a> + </div> <!--<a class="waves-effect waves-light btn deep-orange lighten-2">Stop working!</a>--> </div>