Updated MyTasks to work like Tasks (multi-select)

This commit is contained in:
Brian McGonagill 2024-08-01 19:01:51 -05:00
parent 98bcbcd256
commit 605d138b0b
4 changed files with 59 additions and 22 deletions

View file

@ -69,13 +69,13 @@ Template.taskForm.events({
let taskDateErr = false; let taskDateErr = false;
let userInfo; let userInfo;
let actDate = []; let actDate = [];
console.dir(taskNameArr); // console.dir(taskNameArr);
if (taskNameArr == null || taskNameArr == []) { if (taskNameArr == null || taskNameArr == []) {
taskNameErr = true; taskNameErr = true;
} }
if (taskDate == null || taskDate == []) { if (taskDateArr == null || taskDateArr == []) {
taskDateErr = true; taskDateErr = true;
} else { } else {
for (i = 0; i < taskDateArr.length; i++) { for (i = 0; i < taskDateArr.length; i++) {
@ -97,7 +97,6 @@ Template.taskForm.events({
console.log(" ERROR adding the new task: " + err); console.log(" ERROR adding the new task: " + err);
} else { } else {
console.log(" SUCCESS adding the new task."); console.log(" SUCCESS adding the new task.");
M.Chips.getInstance($("#taskName")).deleteChip();
Session.set("taskDateArr", []); Session.set("taskDateArr", []);
$("#taskDate").val(""); $("#taskDate").val("");
$("#taskUser").val(""); $("#taskUser").val("");

View file

@ -1,16 +1,20 @@
<template name="myTasksForm"> <template name="myTasksForm">
<h4>MyTasks</h4> <h4>MyTasks</h4>
<div class="row"> <form class="row" style="gap: 1em;">
<div class="col s12 m6 l6 input-field"> <div class="col s12 m6 l6 chips chips-placeholder" id="taskName">
<input type="text" class="myTaskName" id="myTaskName" />
<label for="myTaskName">Task Name</label>
</div> </div>
<div class="col s12 m6 l6 input-field"> <div class="col s12 m6 l6 input-field">
<input type="text" class="datepicker" id="myTaskDate" /> <input type="text" class="datepicker" id="myTaskDate" />
<label for="myTaskDate">Due Date</label> <label for="myTaskDate">Due Date</label>
</div>
</div>
<div class="row"> <div class="row">
{{#each taskDate in taskDates}}
<div class="col s4 l2 m3">
<span>{{taskDate}}</span>
</div>
{{/each}}
</div>
</div>
<div class="col s6 m4 l4"> <div class="col s6 m4 l4">
<p> <p>
<label> <label>
@ -28,8 +32,8 @@
</p> </p>
</div> </div>
<div class="col s12 m4 l4"> <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> </div>
</form>
{{> snackbar}} {{> snackbar}}
</template> </template>

View file

@ -8,42 +8,70 @@ Template.myTasksForm.onCreated(function() {
Template.myTasksForm.onRendered(function() { Template.myTasksForm.onRendered(function() {
var elems = document.querySelectorAll('.datepicker'); var elems = document.querySelectorAll('.datepicker');
var instances = M.Datepicker.init(elems, {}); var instances = M.Datepicker.init(elems, {});
var elemsd = document.querySelectorAll('.chips');
var instancesd = M.Chips.init(elemsd, {});
Session.set("hideComplete", true); Session.set("hideComplete", true);
Session.set("onlyToday", true); Session.set("onlyToday", true);
Session.set("taskDateArr", []);
}); });
Template.myTasksForm.helpers({ Template.myTasksForm.helpers({
taskDates: function() {
return Session.get("taskDateArr");
},
}); });
Template.myTasksForm.events({ Template.myTasksForm.events({
'click .addNewTask' (event) { 'click .addNewTask' (event) {
event.preventDefault(); event.preventDefault();
let taskName = $("#myTaskName").val(); let taskNameErr = false;
let taskDate = $("#myTaskDate").val(); let taskDateErr = false;
let actDate = new Date(taskDate); 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) { if (taskNameArray == null || taskNameArray == [] || taskNameArray == "") {
taskEntryErr = true; taskNameErr = true;
showSnackbar("Task Name and Date are Required!", "red"); }
return;
if (taskDateArray == null || taskDateArray == []|| taskDateArray == "") {
taskDateErr = true;
} else { } 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) { if (err) {
console.log(" ERROR adding task for self: " + err); console.log(" ERROR adding task for self: " + err);
showSnackbar("ERROR adding task for self!", "red"); showSnackbar("ERROR adding task for self!", "red");
} else { } else {
console.log(" SUCCESS adding task for self."); console.log(" SUCCESS adding task for self.");
Session.set("taskDateArr", []);
$("#myTaskName").val(""); $("#myTaskName").val("");
$("#myTaskDate").val(""); $("#myTaskDate").val("");
showSnackbar("Added Tasks Successfully!", "green");
} }
}); });
} else {
showSnackbar("Error! Both Task & Date are Required!", "red");
} }
}, },
'click #showMyCompletedTasks' (event) { 'click #showMyCompletedTasks' (event) {
let hide = $("#showMyCompletedTasks").prop('checked'); let hide = $("#showMyCompletedTasks").prop('checked');
if (hide == true) { if (hide == true) {
Session.set("hideComplete", false); Session.set("hideComplete", false);
Session.set("onlyToday", false);
$("#showAllTasks").prop('checked', true);
} else { } else {
Session.set("hideComplete", true); Session.set("hideComplete", true);
} }
@ -56,5 +84,11 @@ Template.myTasksForm.events({
Session.set("onlyToday", true); Session.set("onlyToday", true);
} }
} },
'change #myTaskDate' (event) {
let taskDate = $("#myTaskDate").val();
let taskDateArr = Session.get("taskDateArr");
taskDateArr.push(taskDate);
Session.set("taskDateArr", taskDateArr);
},
}); });

View file

@ -2,7 +2,7 @@
<ul class="collapsible"> <ul class="collapsible">
{{#each tasks}} {{#each tasks}}
<li> <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"> <div class="collapsible-body">
<span> <span>
<ul class="collection"> <ul class="collection">