From db67f31dc772af3c02cdabe935927fb97588eca8 Mon Sep 17 00:00:00 2001 From: Joao Machiana Date: Tue, 20 Nov 2018 14:49:47 +0200 Subject: [PATCH 1/2] Reconstruction --- app.js | 2 +- controllers/routes.js | 16 ++++++ controllers/taskControllers.js | 102 +++++++++++++++++++++++++++++++++ directives/directives.js | 31 ++++++++++ index.html | 76 ++++++++++-------------- pages/createTask.html | 40 +++++++++++++ pages/editTask.html | 25 ++++++++ pages/editTaskView.html | 1 + pages/listTasks.html | 32 +++++++++++ pages/taskList.html | 21 ------- server.js | 23 +++++++- services/dbService.js | 35 +++++++++++ services/postData.js | 20 +++++++ 13 files changed, 353 insertions(+), 71 deletions(-) create mode 100644 controllers/routes.js create mode 100644 pages/createTask.html create mode 100644 pages/editTask.html create mode 100644 pages/editTaskView.html create mode 100644 pages/listTasks.html delete mode 100644 pages/taskList.html create mode 100644 services/dbService.js create mode 100644 services/postData.js diff --git a/app.js b/app.js index b01acc6..29c4139 100644 --- a/app.js +++ b/app.js @@ -1,4 +1,4 @@ -var todoApp = angular.module('todoApp', []); +var todoApp = angular.module('todoApp', ['ngRoute']); todoApp.directive('taskListView', function() { diff --git a/controllers/routes.js b/controllers/routes.js new file mode 100644 index 0000000..2220229 --- /dev/null +++ b/controllers/routes.js @@ -0,0 +1,16 @@ +var todoApp = angular.module('todoApp'); + +todoApp.config(function($routeProvider) { + + $routeProvider + + .when('/', { + templateUrl: '/pages/listTasks.html', + controller: 'taskController' + }) + + .when('/createTask', { + templateUrl: '/pages/createTask.html', + controller: 'taskController' + }) +}); \ No newline at end of file diff --git a/controllers/taskControllers.js b/controllers/taskControllers.js index e69de29..6e7e7fe 100644 --- a/controllers/taskControllers.js +++ b/controllers/taskControllers.js @@ -0,0 +1,102 @@ +// Module +var todoApp = angular.module('todoApp', ['ngRoute']); + + +// Controllers +todoApp.controller('taskController', ['$scope', '$http', 'dbService', '$window', function($scope, $http, dbService, $window) { + + $scope.default = [ + {'id' : '0', 'name' : 'Not Started'}, + {'id' : '1', 'name' : 'In Progress'}, + {'id' : '2', 'name' : 'Done'} + ]; + + // $scope.default = [0, 1, 2]; + + var getTasks = function() { + dbService.getTasks().then((response) => { + //console.log(response.data); + $scope.tasks = response.data; + }, (response) => { + $scope.getErrMsg = 'Error: ' + response; + }); + } + + + // Add Task + $scope.addTask = function() { + dbService.createTask($scope.task); + redirectHome(); + } + + + // Edit Task + $scope.getTask = function(task_id) { + + dbService.getTask(task_id).then((response) => { + console.log(response.data); + $scope.task = response.data; + console.log('Entrou'); + redirectPage('edit'); + }, (response) => { + $scope.getErrMsg = 'Error: ' + response; + }); + + + } + + + // Delete Task + $scope.deleteTask = function(task_id) { + dbService.deleteTask(task_id); + redirectHome(); + } + + function redirectHome(){ + $window.location.href = '/'; + } + + + function redirectPage(pageName, pageid) { + switch(pageName) { + case 'home': + $window.location.href = '/'; + break; + + case 'add': + $window.location.href = '/createTask'; + break; + + case 'edit': + $window.location.href = '#/editTask/' + pageid; + break; + + default: + $window.location.href = '/'; + } + } + + + getTasks(); +}]); + + +todoApp.config(function($routeProvider) { + + $routeProvider + + .when('/', { + templateUrl: '/pages/listTasks.html', + controller: 'taskController' + }) + + .when('/createTask', { + templateUrl: '/pages/createTask.html', + controller: 'taskController' + }) + + .when('/editTask/:id', { + templateUrl: '/pages/editTask.html', + controller: 'taskController' + }) +}); \ No newline at end of file diff --git a/directives/directives.js b/directives/directives.js index e69de29..d29a1f6 100644 --- a/directives/directives.js +++ b/directives/directives.js @@ -0,0 +1,31 @@ +var todoApp = angular.module('todoApp'); + + +// todoApp.directive('taskListView', function() { + +// return { +// restrict: 'AECM', +// templateUrl: '/pages/listTasks.html', +// replace: true, +// controller: 'taskController', +// scope: { +// tasks: "=", +// errorMessage: "@" +// }, +// } +// }); + + +// todoApp.directive('editTaskView', function() { + +// return { +// restrict: 'AECM', +// templateUrl: '/pages/editTask.html', +// replace: true, +// controller: 'taskController', +// scope: { +// task: "=", +// errorMessage: "@" +// }, +// } +// }) \ No newline at end of file diff --git a/index.html b/index.html index d687e06..19b5570 100644 --- a/index.html +++ b/index.html @@ -2,57 +2,41 @@ - - - + + + + + + + + + + + + -
-
-

Task List

-
- - - - - - - Name - Description - Assignee - Date - Status - Actions - - - - - - - - - - - - - - - -
{{task.name}}{{task.description}}{{task.assignee}}Not StartedIn ProgressDoneUpdateDelete
- -
- - - - - - -
- - {{getErrMsg}} + + + +
+ +
+
diff --git a/pages/createTask.html b/pages/createTask.html new file mode 100644 index 0000000..42b8af3 --- /dev/null +++ b/pages/createTask.html @@ -0,0 +1,40 @@ +
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + {{default}} + + +
+ + + +
\ No newline at end of file diff --git a/pages/editTask.html b/pages/editTask.html new file mode 100644 index 0000000..acbe122 --- /dev/null +++ b/pages/editTask.html @@ -0,0 +1,25 @@ +
+ {{task}} +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ + + +
\ No newline at end of file diff --git a/pages/editTaskView.html b/pages/editTaskView.html new file mode 100644 index 0000000..3f54726 --- /dev/null +++ b/pages/editTaskView.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/pages/listTasks.html b/pages/listTasks.html new file mode 100644 index 0000000..b66d004 --- /dev/null +++ b/pages/listTasks.html @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + +
#NameDescriptionAssigneeDateStatusActions
{{task.id}}{{task.name}}{{task.description}}{{task.assignee}}{{task.date}}

Not Started

In Progress

Done

+ Edit + Delete +
+ +Add Task +{{getErrMsg}} \ No newline at end of file diff --git a/pages/taskList.html b/pages/taskList.html deleted file mode 100644 index 52903ac..0000000 --- a/pages/taskList.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - Name - Description - Assignee - Date - Status - - - - - - - - - - - -
{{task.name}}{{task.description}}{{task.assignee}}{{task.date}}{{task.status}}
-{{getErrMsg}} \ No newline at end of file diff --git a/server.js b/server.js index 6e1452b..4dcb809 100644 --- a/server.js +++ b/server.js @@ -45,11 +45,24 @@ app.get('/tasks', function (req, res) { connection.query('SELECT * FROM tasks', function (error, data, fields) { if (error) throw error; + return res.send(JSON.stringify(data)); }); }); +// Get a task +app.get('/editTask/:id', function(req, res) { + connection.query('SELECT * FROM tasks WHERE id = ? ', [req.params.id], function(error, data, fields) { + if (error) throw error; + + console.log(data); + return res.send(JSON.stringify(data)); + }) + +}); + + // Add task app.post('/addtask', function (req, res) { var task = JSON.parse(JSON.stringify(req.body)); @@ -70,9 +83,13 @@ app.post('/addtask', function (req, res) { app.put('/updatetask', function (req, res) { let task_id = req.body.task_id; + let task_name = req.body.task_name; + let task_description = req.body.task_description; + let task_assignee = req.body.task_assignee; let task_status = req.body.task_status; - connection.query('UPDATE tasks SET status = ? WHERE id = ?', [task_status, task_id], function (error, results, fields) { + + connection.query('UPDATE tasks SET name = ?, description = ?, assignee = ?, status = ? WHERE id = ?', [task_name, task_description, task_assignee, task_status, task_id], function (error, results, fields) { if (error) throw error; return res.send({ error: false, data: results, message: 'Task has been updated successfully!' }); @@ -81,8 +98,8 @@ app.put('/updatetask', function (req, res) { // Delete task -app.delete('/deletetask', function (req, res) { - let task_id = req.body.task_id; +app.delete('/deleteTask/:id', function (req, res) { + let task_id = req.params.id; connection.query('DELETE FROM tasks WHERE id = ?', [task_id], function (error, results, fields) { if (error) throw error; diff --git a/services/dbService.js b/services/dbService.js new file mode 100644 index 0000000..ed4ed3f --- /dev/null +++ b/services/dbService.js @@ -0,0 +1,35 @@ +// Services for CRUD database operations + +angular.module('todoApp') + .service('dbService', function($http) { + + + // All tasks + this.getTasks = function() { + return $http.get('/tasks'); + } + + + // Get task + this.getTask = function(task_id) { + return $http.get('/editTask/' + task_id); + } + + + // Create task + this.createTask = function(task) { + $http.post('/addTask', { 'name' : task.task_name, 'description' : task.task_description, 'assignee' : task.task_assignee, 'status' : task.status.id }) + } + + + // Update task + this.updateTask = function(task, task_status_select) { + $http.put('/updateTask', { 'id' : task.id, 'name' : task.task_name, 'description' : task.task_description, 'assignee' : task.task_assignee, 'status' : task_status_select }) + } + + + // Delete task + this.deleteTask = function(task_id) { + $http.delete('/deleteTask/' + task_id) + } + }) \ No newline at end of file diff --git a/services/postData.js b/services/postData.js new file mode 100644 index 0000000..4882e06 --- /dev/null +++ b/services/postData.js @@ -0,0 +1,20 @@ +angular.module('todoApp') + .factory('postData', function() { + var savedData = {}; + + + function set(data) { + this.savedData = data; + } + + + function get(){ + return this.savedData; + } + + + return { + set: set, + get: get + } + }); \ No newline at end of file From 7eddc4d75508e7ac05e82189bce33729f2805479 Mon Sep 17 00:00:00 2001 From: Joao Machiana Date: Tue, 27 Nov 2018 11:58:32 +0200 Subject: [PATCH 2/2] Fixed update view and action issue. --- controllers/taskControllers.js | 15 +++- controllers/taskControllers2.js | 129 ++++++++++++++++++++++++++++++++ index.html | 2 +- pages/createTask.html | 2 +- pages/editTask.html | 3 +- routes/routes.js | 23 ++++++ 6 files changed, 169 insertions(+), 5 deletions(-) create mode 100644 controllers/taskControllers2.js create mode 100644 routes/routes.js diff --git a/controllers/taskControllers.js b/controllers/taskControllers.js index 6e7e7fe..914048f 100644 --- a/controllers/taskControllers.js +++ b/controllers/taskControllers.js @@ -17,6 +17,7 @@ todoApp.controller('taskController', ['$scope', '$http', 'dbService', '$window', dbService.getTasks().then((response) => { //console.log(response.data); $scope.tasks = response.data; + }, (response) => { $scope.getErrMsg = 'Error: ' + response; }); @@ -30,14 +31,24 @@ todoApp.controller('taskController', ['$scope', '$http', 'dbService', '$window', } + + // Edit Task $scope.getTask = function(task_id) { dbService.getTask(task_id).then((response) => { + console.log(response); console.log(response.data); - $scope.task = response.data; + $scope.task = response.data[0]; + // $scope.$watch('task', function() { + // $scope.task = response.data; + // }); + console.log("Scope: " + $scope); + console.log("Scoperr: " + $scope.task.name + " | " ); + redirectPage('edit', task_id); + console.log('Entrou'); - redirectPage('edit'); + }, (response) => { $scope.getErrMsg = 'Error: ' + response; }); diff --git a/controllers/taskControllers2.js b/controllers/taskControllers2.js new file mode 100644 index 0000000..3945128 --- /dev/null +++ b/controllers/taskControllers2.js @@ -0,0 +1,129 @@ +// Module +var todoApp = angular.module('todoApp', ['ngRoute']); + + +// Controllers +todoApp.controller('taskController', ['$scope', '$http', 'dbService', '$window', '$routeParams', function($scope, $http, dbService, $window, $routeParams) { + + $scope.default = [ + {'id' : '0', 'name' : 'Not Started'}, + {'id' : '1', 'name' : 'In Progress'}, + {'id' : '2', 'name' : 'Done'} + ]; + + // $scope.default = [0, 1, 2]; + + var getTasks = function() { + + console.log('Parametros ' + $routeParams.id); + + if ($routeParams.id) { + + dbService.getTask($routeParams.id).then((response) => { + $scope.task = response.data[0]; + }, (response) => { + $scope.getErrMsg = 'Error: ' + response; + }); + + } else { + dbService.getTasks().then((response) => { + //console.log(response.data); + $scope.tasks = response.data; + + }, (response) => { + $scope.getErrMsg = 'Error: ' + response; + }); + } + + } + + + // Add Task + $scope.addTask = function() { + dbService.createTask($scope.task); + redirectHome(); + } + + + + + // Edit Task + $scope.getTask = function(task_id) { + + redirectPage('edit', task_id); + /** dbService.getTask(task_id).then((response) => { + //console.log(response); + //console.log(response.data); + //$scope.task = response.data[0]; + // $scope.$watch('task', function() { + // $scope.task = response.data; + // }); + //console.log("Scope: " + $scope); + //console.log("Scoperr: " + $scope.task.name + " | " ); + + $scope.task = response.data[0]; + + console.log('Entrou'); + + }, (response) => { + $scope.getErrMsg = 'Error: ' + response; + });*/ + + + } + + + // Delete Task + $scope.deleteTask = function(task_id) { + dbService.deleteTask(task_id); + redirectHome(); + } + + function redirectHome(){ + $window.location.href = '/'; + } + + + function redirectPage(pageName, pageid) { + switch(pageName) { + case 'home': + $window.location.href = '/'; + break; + + case 'add': + $window.location.href = '/createTask'; + break; + + case 'edit': + $window.location.href = '#/editTask/' + pageid; + break; + + default: + $window.location.href = '/'; + } + } + + + getTasks(); +}]); + + +todoApp.config(function($routeProvider) { + + $routeProvider + + .when('/', { + templateUrl: '/pages/listTasks.html', + controller: 'taskController' + }) + + .when('/createTask', { + templateUrl: '/pages/createTask.html', + controller: 'taskController' + }) + + .when('/editTask/:id', { + templateUrl: '/pages/editTask.html', + controller: 'taskController' + }) +}); \ No newline at end of file diff --git a/index.html b/index.html index 19b5570..be74b7b 100644 --- a/index.html +++ b/index.html @@ -9,7 +9,7 @@ - + diff --git a/pages/createTask.html b/pages/createTask.html index 42b8af3..356d1e9 100644 --- a/pages/createTask.html +++ b/pages/createTask.html @@ -18,7 +18,7 @@
{{default}} - +