From 98bcbcd256f153f476d698d241d0ad21d06c1b61 Mon Sep 17 00:00:00 2001 From: Brian McGonagill Date: Thu, 1 Aug 2024 11:56:04 -0500 Subject: [PATCH 1/2] Aded Task cleanup by number of weeks or months --- client/AdminMgmt/CleanUp/cleanUp.html | 30 +++++++++++---- client/AdminMgmt/CleanUp/cleanUp.js | 10 +++++ .../modalConfirm/cleanUpModalConfirm.js | 29 +++++++++++---- imports/api/menu.js | 7 +--- imports/api/tasks.js | 37 +++++++++++++++++++ server/methods.js | 3 +- 6 files changed, 93 insertions(+), 23 deletions(-) diff --git a/client/AdminMgmt/CleanUp/cleanUp.html b/client/AdminMgmt/CleanUp/cleanUp.html index d92b810..f27dd77 100644 --- a/client/AdminMgmt/CleanUp/cleanUp.html +++ b/client/AdminMgmt/CleanUp/cleanUp.html @@ -3,7 +3,7 @@

Clean Up System Data

-
+
Clean Up List Items Clean Lists @@ -13,7 +13,7 @@
-
+
Clean Up Menus Clean Menus @@ -23,7 +23,7 @@
-
+
Clean Up Products Clean Products @@ -33,17 +33,31 @@
-
+
Clean Up Tasks - Clean Tasks - info - +
+
+ + +
+
+ Clean Tasks + info + +
+
-
+
Clean Up Stores Clean Stores diff --git a/client/AdminMgmt/CleanUp/cleanUp.js b/client/AdminMgmt/CleanUp/cleanUp.js index 0e106b1..bbadd13 100644 --- a/client/AdminMgmt/CleanUp/cleanUp.js +++ b/client/AdminMgmt/CleanUp/cleanUp.js @@ -19,6 +19,14 @@ Template.cleanUp.onRendered(function() { var elemsm = document.querySelectorAll('.modal'); var instancesm = M.Modal.init(elemsm, {}); + + var elemse = document.querySelectorAll('select'); + var instancese = M.FormSelect.init(elemse, {}); + + setTimeout(function() { + var instances = M.Tooltip.init(elems, {}); + var instancese = M.FormSelect.init(elemse, {}); + }, 300); }); Template.cleanUp.helpers({ @@ -45,5 +53,7 @@ Template.cleanUp.events({ 'click #cleanTasks' (event) { event.preventDefault(); Session.set("cleanWhat", "Tasks"); + let timeFrame = $("#removeOverdueTasks").val(); + Session.set("overdueVal", timeFrame); }, }); \ No newline at end of file diff --git a/client/AdminMgmt/CleanUp/modalConfirm/cleanUpModalConfirm.js b/client/AdminMgmt/CleanUp/modalConfirm/cleanUpModalConfirm.js index 02f7b39..3ea268e 100644 --- a/client/AdminMgmt/CleanUp/modalConfirm/cleanUpModalConfirm.js +++ b/client/AdminMgmt/CleanUp/modalConfirm/cleanUpModalConfirm.js @@ -25,27 +25,40 @@ Template.cleanUpModalConfirm.events({ switch(whatItems) { case "Lists": - cleanUp("clean.Lists"); + cleanUp("clean.Lists", whatItems); case "Menus": - cleanUp("clean.Menus"); + cleanUp("clean.Menus", whatItems); case "Products": - // cleanUp("clean.Products"); + // cleanUp("clean.Products", whatItems); case "Stores": - // cleanUp("clean.Stores"); + // cleanUp("clean.Stores", whatItems); case "Tasks": - // cleanUp("clean.Tasks"); + cleanTasks("clean.Tasks", whatItems); default: break; } } }); -cleanUp = function(methodName) { +cleanUp = function(methodName, whatItems) { Meteor.call(methodName, function(err, result) { if (err) { - console.log(" ERROR cleaning lists: " + err) + console.log(" ERROR cleaning " + whatItems + ": " + err); } else { - showSnackbar("Lists have been cleaned up!", "green"); + showSnackbar(whatItems + " have been cleaned up!", "green"); + let confirmModal = document.getElementById('cleanUpConfirm'); + M.Modal.getInstance(confirmModal).close(); + } + }); +} + +cleanTasks = function(methodName, whatItems) { + let timeFrame = Session.get("overdueVal"); + Meteor.call(methodName, timeFrame, function(err, result) { + if (err) { + console.log(" ERROR cleaning " + whatItems + ": " + err); + } else { + showSnackbar(whatItems + " have been cleaned up!", "green"); let confirmModal = document.getElementById('cleanUpConfirm'); M.Modal.getInstance(confirmModal).close(); } diff --git a/imports/api/menu.js b/imports/api/menu.js index 7271f23..51d4f2a 100644 --- a/imports/api/menu.js +++ b/imports/api/menu.js @@ -94,7 +94,6 @@ Meteor.methods({ let srvDate = moment(items[j].serveDateActual); let today = moment(); let expired = moment(today).isAfter(srvDate); - // console.log("Expired: " + expired); if (expired != true) { removeMenu = false; } @@ -108,16 +107,12 @@ Meteor.methods({ // next let's add the ids of any menus that are marked complete let markedComplete = Menus.find({ menuComplete: true }).fetch(); - // console.log("---- ---- ----"); - // console.dir(markedComplete); for (k = 0; k < markedComplete.length; k++) { let menuId = markedComplete[k]._id; removeMenuIds.push(menuId); } - // console.log(" ----- Need to remove Menus: "); - console.dir(removeMenuIds); - + // finally we'll cycle through the ids and remove the items we collected up. for (l = 0; l < removeMenuIds.length; l++) { Menus.remove({ _id: removeMenuIds[l] }); } diff --git a/imports/api/tasks.js b/imports/api/tasks.js index 1989d8c..7e581b1 100644 --- a/imports/api/tasks.js +++ b/imports/api/tasks.js @@ -1,6 +1,7 @@ import { Meteor } from 'meteor/meteor'; import { Mongo } from 'meteor/mongo'; import { check } from 'meteor/check'; +import moment from 'moment'; export const TaskItems = new Mongo.Collection('taskitems'); @@ -139,4 +140,40 @@ Meteor.methods({ } }); }, + 'clean.Tasks' (timeFrame) { + check(timeFrame, String); + + if (!this.userId) { + throw new Meteor.Error('You are not allowed to clean up old Tasks. Make sure you are logged in with valid user credentials.'); + } + + let d = new Date(); + let upToDate = ""; + switch(timeFrame) { + case "1-week": + console.log("1 Week"); + upToDate = 7 * 24 * 60 * 60 * 1000; + break; + case "2-weeks": + console.log("2 Week"); + upToDate = 14 * 24 * 60 * 60 * 1000; + break; + case '1-month': + console.log("1 month"); + upToDate = 30 * 24 * 60 * 60 * 1000; + break; + case '3-months': + console.log("3 months"); + upToDate = 90 * 24 * 60 * 60 * 1000; + break; + case 'all': + console.log("all"); + upToDate = 1 * 24 * 60 * 60 * 1000; + break; + default: + break; + } + + return TaskItems.remove({ actualDate: { $lt: new Date((new Date()) - upToDate )}}); + } }); \ No newline at end of file diff --git a/server/methods.js b/server/methods.js index e9f9271..d695cf1 100644 --- a/server/methods.js +++ b/server/methods.js @@ -1,6 +1,7 @@ import { Meteor } from 'meteor/meteor'; import { Mongo } from 'meteor/mongo'; import { check } from 'meteor/check'; +import { TaskItems } from '../imports/api/tasks'; Meteor.methods({ 'addToRole' (role) { @@ -57,5 +58,5 @@ Meteor.methods({ check(role, String); return Roles.setUserRoles(userId, role); - } + }, }); \ No newline at end of file From 605d138b0bf38e810e5c17141a57719f78f31ad5 Mon Sep 17 00:00:00 2001 From: Brian McGonagill Date: Thu, 1 Aug 2024 19:01:51 -0500 Subject: [PATCH 2/2] Updated MyTasks to work like Tasks (multi-select) --- client/AdminMgmt/Tasks/taskForm.js | 5 ++- client/MyTasks/myTasksForm.html | 20 ++++++----- client/MyTasks/myTasksForm.js | 54 ++++++++++++++++++++++++------ client/MyTasks/myTasksTbl.html | 2 +- 4 files changed, 59 insertions(+), 22 deletions(-) diff --git a/client/AdminMgmt/Tasks/taskForm.js b/client/AdminMgmt/Tasks/taskForm.js index c445eac..8dd95d3 100644 --- a/client/AdminMgmt/Tasks/taskForm.js +++ b/client/AdminMgmt/Tasks/taskForm.js @@ -69,13 +69,13 @@ Template.taskForm.events({ let taskDateErr = false; let userInfo; let actDate = []; - console.dir(taskNameArr); + // console.dir(taskNameArr); if (taskNameArr == null || taskNameArr == []) { taskNameErr = true; } - if (taskDate == null || taskDate == []) { + if (taskDateArr == null || taskDateArr == []) { taskDateErr = true; } else { for (i = 0; i < taskDateArr.length; i++) { @@ -97,7 +97,6 @@ Template.taskForm.events({ console.log(" ERROR adding the new task: " + err); } else { console.log(" SUCCESS adding the new task."); - M.Chips.getInstance($("#taskName")).deleteChip(); Session.set("taskDateArr", []); $("#taskDate").val(""); $("#taskUser").val(""); diff --git a/client/MyTasks/myTasksForm.html b/client/MyTasks/myTasksForm.html index fab1b11..751ec3d 100644 --- a/client/MyTasks/myTasksForm.html +++ b/client/MyTasks/myTasksForm.html @@ -1,16 +1,20 @@ \ No newline at end of file diff --git a/client/MyTasks/myTasksForm.js b/client/MyTasks/myTasksForm.js index b65363c..7d50d29 100644 --- a/client/MyTasks/myTasksForm.js +++ b/client/MyTasks/myTasksForm.js @@ -8,42 +8,70 @@ Template.myTasksForm.onCreated(function() { Template.myTasksForm.onRendered(function() { var elems = document.querySelectorAll('.datepicker'); var instances = M.Datepicker.init(elems, {}); + + var elemsd = document.querySelectorAll('.chips'); + var instancesd = M.Chips.init(elemsd, {}); + Session.set("hideComplete", true); Session.set("onlyToday", true); + Session.set("taskDateArr", []); }); Template.myTasksForm.helpers({ - + taskDates: function() { + return Session.get("taskDateArr"); + }, }); Template.myTasksForm.events({ 'click .addNewTask' (event) { event.preventDefault(); - let taskName = $("#myTaskName").val(); - let taskDate = $("#myTaskDate").val(); - let actDate = new Date(taskDate); + let taskNameErr = false; + let taskDateErr = false; + let elemsc = document.getElementById('taskName'); + let taskNameArray = M.Chips.getInstance(elemsc).chipsData; + let taskDateArray = Session.get("taskDateArr"); + let actDate = []; - if (taskName == null || taskName == "" || taskDate == "" || taskDate == null) { - taskEntryErr = true; - showSnackbar("Task Name and Date are Required!", "red"); - return; + if (taskNameArray == null || taskNameArray == [] || taskNameArray == "") { + taskNameErr = true; + } + + if (taskDateArray == null || taskDateArray == []|| taskDateArray == "") { + taskDateErr = true; } else { - Meteor.call("add.mytask", taskName, "self", "selfId", taskDate, actDate, function(err, result) { + for (i = 0; i < taskDateArray.length; i++) { + // console.log(taskDateArray[i]); + let actDateTask = new Date(taskDateArray[i]); + actDate.push(actDateTask); + } + } + + console.log("Date Error: " + taskDateErr + " - Name Error: " + taskNameErr); + if (taskDateErr == false && taskNameErr == false) { + Meteor.call("add.task", taskNameArray, "self", "selfId", taskDateArray, 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."); + Session.set("taskDateArr", []); $("#myTaskName").val(""); $("#myTaskDate").val(""); + showSnackbar("Added Tasks Successfully!", "green"); } }); + } else { + showSnackbar("Error! Both Task & Date are Required!", "red"); } + }, 'click #showMyCompletedTasks' (event) { let hide = $("#showMyCompletedTasks").prop('checked'); if (hide == true) { Session.set("hideComplete", false); + Session.set("onlyToday", false); + $("#showAllTasks").prop('checked', true); } else { Session.set("hideComplete", true); } @@ -56,5 +84,11 @@ Template.myTasksForm.events({ Session.set("onlyToday", true); } - } + }, + 'change #myTaskDate' (event) { + let taskDate = $("#myTaskDate").val(); + let taskDateArr = Session.get("taskDateArr"); + taskDateArr.push(taskDate); + Session.set("taskDateArr", taskDateArr); + }, }); \ No newline at end of file diff --git a/client/MyTasks/myTasksTbl.html b/client/MyTasks/myTasksTbl.html index b826d6a..9f86973 100644 --- a/client/MyTasks/myTasksTbl.html +++ b/client/MyTasks/myTasksTbl.html @@ -2,7 +2,7 @@
    {{#each tasks}}
  • -
    {{taskName}}
    +
    {{taskName}}