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..914048f 100644 --- a/controllers/taskControllers.js +++ b/controllers/taskControllers.js @@ -0,0 +1,113 @@ +// 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); + 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 + " | " ); + redirectPage('edit', task_id); + + 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/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/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..be74b7b 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..356d1e9 --- /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..2f69a18 --- /dev/null +++ b/pages/editTask.html @@ -0,0 +1,26 @@ +
+ {{task}} + {{scope}} +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ + + +
\ 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/routes/routes.js b/routes/routes.js new file mode 100644 index 0000000..b928a6a --- /dev/null +++ b/routes/routes.js @@ -0,0 +1,23 @@ +// Module +var todoApp = angular.module('todoApp', ['ngRoute']); + +// Routes +todoApp.config(function($routeProvider) { + + $routeProvider + + .when('/', { + templateUrl: '/pages/listTasks.html', + controller: 'taskController' + }) + + .when('/createTask', { + templateUrl: '/pages/createTask.html', + controller: 'taskController' + }) + + .when('/editTask/:task_id', { + templateUrl: '/pages/editTask.html', + controller: 'taskController' + }) +}); \ 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