diff --git a/.gitignore b/.gitignore
index 65bf17c..e3146f4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -109,3 +109,5 @@ node_modules/meteor-node-stubs/node_modules/which-boxed-primitive/.meteor-portab
node_modules/meteor-node-stubs/node_modules/which-typed-array/.meteor-portable-2.json
node_modules/meteor-node-stubs/node_modules/xtend/.meteor-portable-2.json
node_modules/regenerator-runtime/.meteor-portable-2.json
+node_modules/moment/
+node_modules/meteor-node-stubs/
\ No newline at end of file
diff --git a/client/AdminMgmt/Tasks/taskForm.html b/client/AdminMgmt/Tasks/taskForm.html
index c01f73f..d413fad 100644
--- a/client/AdminMgmt/Tasks/taskForm.html
+++ b/client/AdminMgmt/Tasks/taskForm.html
@@ -9,7 +9,7 @@
diff --git a/client/AdminMgmt/Tasks/taskForm.js b/client/AdminMgmt/Tasks/taskForm.js
index e4f4381..1e220de 100644
--- a/client/AdminMgmt/Tasks/taskForm.js
+++ b/client/AdminMgmt/Tasks/taskForm.js
@@ -24,6 +24,9 @@ Template.taskForm.helpers({
username: function() {
return this.profile.fullname;
},
+ usersId: function() {
+ return this._id;
+ },
});
Template.taskForm.events({
@@ -35,6 +38,8 @@ Template.taskForm.events({
let taskUserErr = false;
let taskNameErr = false;
let taskDateErr = false;
+ let userInfo;
+ let actDate;
console.log("taskUser value: " + taskUser);
@@ -44,15 +49,18 @@ Template.taskForm.events({
if (taskDate == null || taskDate == "") {
taskDateErr = true;
+ } else {
+ actDate = new Date(taskDate);
}
- if (taskUser == null || taskUser == "") {
- console.log("triggered taskUser error.");
+ if (taskUser == null || taskUser == "") {;
taskUserErr = true;
+ } else {
+ userInfo = taskUser.split('_');
}
if (taskUserErr == false && taskDateErr == false && taskNameErr == false) {
- Meteor.call("add.task", taskName, taskUser, taskDate, function(err, result) {
+ Meteor.call("add.task", taskName, userInfo[0], userInfo[1], taskDate, actDate, function(err, result) {
if (err) {
console.log(" ERROR adding the new task: " + err);
} else {
diff --git a/client/AdminMgmt/Tasks/taskTbl.js b/client/AdminMgmt/Tasks/taskTbl.js
index 75fb526..ecb79f2 100644
--- a/client/AdminMgmt/Tasks/taskTbl.js
+++ b/client/AdminMgmt/Tasks/taskTbl.js
@@ -13,9 +13,9 @@ Template.taskTbl.helpers({
tasks: function() {
let hideComp = Session.get("hideCompletedTasks");
if (hideComp == false) {
- return TaskItems.find({});
+ return TaskItems.find({}, { sort: { actualDate: 1 }});
} else {
- return TaskItems.find({ isComplete: false });
+ return TaskItems.find({ isComplete: false }, { sort: { actualDate: 1 }});
}
},
completeDate: function() {
diff --git a/client/MenuItems/menuItemsForm.js b/client/MenuItems/menuItemsForm.js
index e55222e..ac204d2 100644
--- a/client/MenuItems/menuItemsForm.js
+++ b/client/MenuItems/menuItemsForm.js
@@ -52,7 +52,7 @@ Template.menuItemsForm.events({
let menuInfoLen = menuInfo.length;
for (i = 0; i < menuInfoLen; i++) {
let menuItemId = menuInfo[i]._id;
- let momentAddDay = moment(menuInfo[i].serveDate).add(1, 'day').format("MMM D, YYYY");
+ let momentAddDay = moment(menuInfo[i].serveDate).add(1, 'day').format("MMM DD, YYYY");
// console.log(momentAddDay);
Meteor.call('shiftDate', menuItemId, momentAddDay, function(err,result) {
if (err) {
diff --git a/client/MyTasks/myTasks.html b/client/MyTasks/myTasks.html
new file mode 100644
index 0000000..dce7e6a
--- /dev/null
+++ b/client/MyTasks/myTasks.html
@@ -0,0 +1,5 @@
+
+ {{> myTasksForm}}
+
+ {{> myTasksTbl}}
+
\ No newline at end of file
diff --git a/client/MyTasks/myTasksForm.html b/client/MyTasks/myTasksForm.html
new file mode 100644
index 0000000..3ac47ab
--- /dev/null
+++ b/client/MyTasks/myTasksForm.html
@@ -0,0 +1,35 @@
+
+ MyTasks
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{> snackbar}}
+
\ No newline at end of file
diff --git a/client/MyTasks/myTasksFrom.js b/client/MyTasks/myTasksFrom.js
new file mode 100644
index 0000000..664d997
--- /dev/null
+++ b/client/MyTasks/myTasksFrom.js
@@ -0,0 +1,58 @@
+import { TaskItems } from '../../imports/api/tasks.js';
+
+Template.myTasksForm.onCreated(function() {
+
+});
+
+Template.myTasksForm.onRendered(function() {
+ $('.datepicker').datepicker();
+ Session.set("hideComplete", false);
+ Session.set("onlyToday", false);
+});
+
+Template.myTasksForm.helpers({
+
+});
+
+Template.myTasksForm.events({
+ 'click .addNewTask' (event) {
+ event.preventDefault();
+ let taskName = $("#myTaskName").val();
+ let taskDate = $("#myTaskDate").val();
+ let actDate = new Date(taskDate);
+
+ if (taskName == null || taskName == "" || taskDate == "" || taskDate == null) {
+ taskEntryErr = true;
+ showSnackbar("Task Name and Date are Required!", "red");
+ return;
+ } else {
+ Meteor.call("add.task", taskName, "self", "selfId", taskDate, actDate, function(err, result) {
+ if (err) {
+ console.log(" ERROR adding task for self: " + err);
+ showSnackbar("ERROR adding task for self!", "red");
+ } else {
+ console.log(" SUCCESS adding task for self.");
+ $("#myTaskName").val("");
+ $("#myTaskDate").val("");
+ }
+ });
+ }
+ },
+ 'click #hideMyCompletedTasks' (event) {
+ let hide = $("#hideMyCompletedTasks").prop('checked');
+ if (hide == true) {
+ Session.set("hideComplete", true);
+ } else {
+ Session.set("hideComplete", false);
+ }
+ },
+ 'click #onlyTodaysTasks' (event) {
+ let onlyToday = $("#onlyTodaysTasks").prop('checked');
+ if (onlyToday == true) {
+ Session.set("onlyToday", true);
+ } else {
+ Session.set("onlyToday", false);
+ }
+
+ }
+});
\ No newline at end of file
diff --git a/client/MyTasks/myTasksTbl.html b/client/MyTasks/myTasksTbl.html
new file mode 100644
index 0000000..7d29b0e
--- /dev/null
+++ b/client/MyTasks/myTasksTbl.html
@@ -0,0 +1,19 @@
+
+
+ {{#each tasks}}
+ -
+
+
+
+
+ - {{taskDate}}checkdelete
+ - Complete? {{#if $eq isComplete true}}check{{else}}close{{/if}}
+ - Completed On? {{#if $eq isComplete true}}{{compOn}}{{else}}Not Complete{{/if}}
+
+
+
+
+ {{/each}}
+
+ {{> deleteConfirmationModal}}
+
\ No newline at end of file
diff --git a/client/MyTasks/myTasksTbl.js b/client/MyTasks/myTasksTbl.js
new file mode 100644
index 0000000..82a0163
--- /dev/null
+++ b/client/MyTasks/myTasksTbl.js
@@ -0,0 +1,69 @@
+import { TaskItems } from '../../imports/api/tasks.js';
+import moment from 'moment';
+
+Template.myTasksTbl.onCreated(function() {
+ this.subscribe("myTasks");
+});
+
+Template.myTasksTbl.onRendered(function() {
+ $('.collapsible').collapsible();
+ Session.set("hideComplete", false);
+ Session.set("onlyToday", false);
+});
+
+Template.myTasksTbl.helpers({
+ tasks: function() {
+ let onlyToday = Session.get("onlyToday");
+ let hide = Session.get("hideComplete");
+ let todayIs = moment(new Date()).format("MMM DD, YYYY");
+ if (hide == true && onlyToday == false) {
+ return TaskItems.find({ isComplete: false }, { sort: { actualDate: 1 }});
+ } else if (hide == true && onlyToday == true) {
+ return TaskItems.find({ isComplete: false, taskDate: todayIs }, { sort: { actualDate: 1 }});
+ } else if (hide == false && onlyToday == true) {
+ return TaskItems.find({ taskDate: todayIs }, { sort: { actualDate: 1 }});
+ } else {
+ return TaskItems.find({}, { sort: { actualDate: 1 }});
+ }
+ },
+ passedDate: function() {
+ let taskDate = new Date(this.taskDate);
+ let now = new Date()
+ let diff = now < taskDate;
+ let comp = this.isComplete;
+ if (diff == false && comp == false) {
+ return false;
+ } else {
+ return true;
+ }
+ },
+ compOn: function() {
+ if (this.isComplete == true) {
+ return moment(this.completedOn).format("MMM DD, YYYY");
+ }
+ }
+});
+
+Template.myTasksTbl.events({
+ 'click .markMyTaskComplete' (event) {
+ event.preventDefault();
+ let taskId = this._id;
+ Meteor.call("markTask.complete", taskId, function(err, result) {
+ if (err) {
+ console.log(" ERROR marking task completeL " + err);
+ showSnackbar("ERROR Marking Task Complete!", "red");
+ } else {
+ showSnackbar("Successfully Marked Task Complete!", "green");
+
+ }
+ });
+ },
+ 'click .deleteMyTask' (event) {
+ event.preventDefault();
+ Session.set("deleteId", this._id);
+ Session.set("method", "delete.task");
+ Session.set("item", this.taskName);
+ Session.set("view", "My Tasks");
+ $('#modalDelete').modal('open');
+ }
+});
\ No newline at end of file
diff --git a/imports/api/tasks.js b/imports/api/tasks.js
index 0faabb0..d8eca2a 100644
--- a/imports/api/tasks.js
+++ b/imports/api/tasks.js
@@ -12,19 +12,33 @@ TaskItems.allow({
});
Meteor.methods({
- 'add.task' (taskName, assignedTo, taskDate) {
+ 'add.task' (taskName, assignedTo, assignedToId, taskDate, actDate) {
check(taskName, String);
check(assignedTo, String);
check(taskDate, String);
+ check(assignedToId, String);
+ check(actDate, Date);
if (!this.userId) {
throw new Meteor.Error('You are not allowed to add tasks. Make sure you are logged in with valid user credentials.');
}
+ let username;
+
+ if (assignedTo == "self") {
+ let userInfo = Meteor.users.findOne({ _id: this.userId });
+ username = userInfo.profile.fullname;
+ assignedToId = this.userId;
+ } else {
+ username = assignedTo;
+ }
+
return TaskItems.insert({
taskName: taskName,
taskDate: taskDate,
- assignedTo: assignedTo,
+ actualDate: actDate,
+ assignedTo: username,
+ assignedToId: assignedToId,
isComplete: false,
completedOn: null,
assignedOn: new Date(),
diff --git a/lib/routes.js b/lib/routes.js
index 6df339f..b633974 100644
--- a/lib/routes.js
+++ b/lib/routes.js
@@ -115,4 +115,11 @@ FlowRouter.route('/taskHome', {
action() {
BlazeLayout.render('MainLayout', { main: 'taskHome' });
}
+});
+
+FlowRouter.route('/myTasks', {
+ name: 'myTasks',
+ action() {
+ BlazeLayout.render('MainLayout', { main: 'myTasks' });
+ }
});
\ No newline at end of file
diff --git a/server/publish.js b/server/publish.js
index 6857432..79bc9d6 100644
--- a/server/publish.js
+++ b/server/publish.js
@@ -104,4 +104,12 @@ Meteor.publish("allTasks", function() {
} catch (error) {
console.log(" ERROR pulling the task items: " + error);
}
+});
+
+Meteor.publish("myTasks", function() {
+ try {
+ return TaskItems.find({ assignedToId: this.userId });
+ } catch (error) {
+ console.log(" ERROR pulling the task items: " + error);
+ }
});
\ No newline at end of file