mirror of
https://gitlab.com/bmcgonag/get_my.git
synced 2026-03-27 00:08:49 +00:00
Merge branch 'dev' into 'main'
Updated My Tasks to have multiple entry like Tasks view. Added Clean Up for Tasks. See merge request bmcgonag/get_my!3
This commit is contained in:
commit
d0398ddc32
10 changed files with 152 additions and 45 deletions
|
|
@ -3,7 +3,7 @@
|
|||
<h3>Clean Up System Data</h3>
|
||||
<div class="row">
|
||||
<div class="col s12 m6 l4">
|
||||
<div class="card">
|
||||
<div class="card grey darken-4 white-text">
|
||||
<div class="card-content">
|
||||
<span class="card-title">Clean Up List Items</span>
|
||||
<a class="btn waves-effect waves-light blue white-text modal-trigger" href="#cleanUpConfirm" id="cleanLists">Clean Lists</a>
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="col s12 m6 l4">
|
||||
<div class="card">
|
||||
<div class="card grey darken-4 white-text">
|
||||
<div class="card-content">
|
||||
<span class="card-title">Clean Up Menus</span>
|
||||
<a class="btn waves-effect waves-light blue white-text modal-trigger" href="#cleanUpConfirm" id="cleanMenus">Clean Menus</a>
|
||||
|
|
@ -23,7 +23,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="col s12 m6 l4">
|
||||
<div class="card">
|
||||
<div class="card grey darken-4 white-text">
|
||||
<div class="card-content">
|
||||
<span class="card-title">Clean Up Products</span>
|
||||
<a class="btn waves-effect waves-light blue white-text" id="cleanProducts">Clean Products</a>
|
||||
|
|
@ -33,17 +33,31 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="col s12 m6 l4">
|
||||
<div class="card">
|
||||
<div class="card grey darken-4 white-text">
|
||||
<div class="card-content">
|
||||
<span class="card-title">Clean Up Tasks</span>
|
||||
<a class="btn waves-effect waves-light blue white-text" id="cleanTasks">Clean Tasks</a>
|
||||
<i class="material-icons tooltipped right" data-html="true" data-position="top" data-tooltip-id="tooltip-tasks">info</i>
|
||||
<div id="tooltip-tasks" style="display: none;">This will clean up all tasks where the date has past, or the task is marked completed. For completed tasks to be cleared, today must also be past the due date on the task.</div>
|
||||
<form class="row" style="gap: 1em;">
|
||||
<div class="col s12 input-field">
|
||||
<select name="removeOverDueTasks" id="removeOverdueTasks" class="removeOverDueTasks">
|
||||
<option value="1-week">1 Week</option>
|
||||
<option value="2-weeks">2 Weeks</option>
|
||||
<option value="1-month">1 Month</option>
|
||||
<option value="3-months">3 Months</option>
|
||||
<option value="all">All Overdue Tasks</option>
|
||||
</select>
|
||||
<label for="removeOverdueTasks">Remove Overdue Tasks Older Than</label>
|
||||
</div>
|
||||
<div class="col s12">
|
||||
<a class="btn waves-effect waves-light blue white-text modal-trigger" href="#cleanUpConfirm" id="cleanTasks">Clean Tasks</a>
|
||||
<i class="material-icons tooltipped right" data-html="true" data-position="top" data-tooltip-id="tooltip-tasks">info</i>
|
||||
<div id="tooltip-tasks" style="display: none;">This will clean up all tasks where the date has past, or the task is marked completed. For completed tasks to be cleared, today must also be past the due date on the task.</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col s12 m6 l4">
|
||||
<div class="card">
|
||||
<div class="card grey darken-4 white-text">
|
||||
<div class="card-content">
|
||||
<span class="card-title">Clean Up Stores</span>
|
||||
<a class="btn waves-effect waves-light blue white-text" id="cleanStores">Clean Stores</a>
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
},
|
||||
});
|
||||
|
|
@ -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();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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("");
|
||||
|
|
|
|||
|
|
@ -1,16 +1,20 @@
|
|||
<template name="myTasksForm">
|
||||
<h4>MyTasks</h4>
|
||||
<div class="row">
|
||||
<div class="col s12 m6 l6 input-field">
|
||||
<input type="text" class="myTaskName" id="myTaskName" />
|
||||
<label for="myTaskName">Task Name</label>
|
||||
<form class="row" style="gap: 1em;">
|
||||
<div class="col s12 m6 l6 chips chips-placeholder" id="taskName">
|
||||
</div>
|
||||
|
||||
<div class="col s12 m6 l6 input-field">
|
||||
<input type="text" class="datepicker" id="myTaskDate" />
|
||||
<label for="myTaskDate">Due Date</label>
|
||||
<div class="row">
|
||||
{{#each taskDate in taskDates}}
|
||||
<div class="col s4 l2 m3">
|
||||
<span>{{taskDate}}</span>
|
||||
</div>
|
||||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col s6 m4 l4">
|
||||
<p>
|
||||
<label>
|
||||
|
|
@ -28,8 +32,8 @@
|
|||
</p>
|
||||
</div>
|
||||
<div class="col s12 m4 l4">
|
||||
<a class="waves-effect waves-light btn addNewTask green right">Add</a>
|
||||
<a class="waves-effect waves-light btn addNewTask green white-text right">Add</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
{{> snackbar}}
|
||||
</template>
|
||||
|
|
@ -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);
|
||||
},
|
||||
});
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
<ul class="collapsible">
|
||||
{{#each tasks}}
|
||||
<li>
|
||||
<div class="collapsible-header {{#if $eq passedDate false}}yellow{{/if}}{{#if $eq isComplete true}}green lighten-2{{/if}}"><h5>{{taskName}} </h5></div>
|
||||
<div class="collapsible-header {{#if $eq passedDate false}}yellow black-text{{/if}}{{#if $eq isComplete true}}green{{/if}}"><h5>{{taskName}} </h5></div>
|
||||
<div class="collapsible-body">
|
||||
<span>
|
||||
<ul class="collection">
|
||||
|
|
|
|||
|
|
@ -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] });
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 )}});
|
||||
}
|
||||
});
|
||||
|
|
@ -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);
|
||||
}
|
||||
},
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue