Added Task Mgmt, and framework for Recipes.

This commit is contained in:
Brian McGonagill 2022-09-05 09:39:54 -05:00
parent 3b9a54daf1
commit 947abfb76f
13 changed files with 430 additions and 1 deletions

View file

@ -0,0 +1,35 @@
<template name="taskForm">
<h4>Tasks</h4>
<div class="row">
<div class="col s12 m6 l4 input-field">
<input type="text" class="taskName" id="taskName" />
<label for="taskName">Task Name</label>
</div>
<div class="col s12 m6 l4 input-field">
<select name="taskUser" id="taskUser" class="taskUser">
<option value="" disabled selected>Assign to user...</option>
{{#each taskUsers}}
<option value="{{username}}">{{username}}</option>
{{/each}}
</select>
</div>
<div class="col s12 m6 l4 input-field">
<input type="text" class="datepicker" id="taskDate" />
<label for="taskDate">Task Date</label>
</div>
</div>
<div class="row">
<div class="col s12 m6 l6">
<p>
<label>
<input type="checkbox" id="hideCompletedTasks" />
<span>Hide Completed</span>
</label>
</p>
</div>
<div class="col s12 m6 l6">
<a class="waves-effect waves-light btn saveTaskMgmt green right">Add</a>
</div>
</div>
{{> snackbar}}
</template>

View file

@ -0,0 +1,79 @@
import { Tasks } from '../../../imports/api/tasks.js';
Template.taskForm.onCreated(function() {
this.subscribe("userList");
this.subscribe("allTasks");
});
Template.taskForm.onRendered(function() {
Meteor.setTimeout(function() {
$('select').formSelect();
}, 100);
$('select').formSelect();
$('.datepicker').datepicker();
Session.set("taskNameErr", false);
Session.set("taskUserErr", false);
Session.set("taskDateErr", false);
Session.set("hideCompletedTasks", true);
});
Template.taskForm.helpers({
taskUsers: function() {
return Meteor.users.find({});
},
username: function() {
return this.profile.fullname;
},
});
Template.taskForm.events({
'click .saveTaskMgmt' (event) {
event.preventDefault();
let taskName = $("#taskName").val();
let taskUser = $("#taskUser").val();
let taskDate = $("#taskDate").val();
let taskUserErr = false;
let taskNameErr = false;
let taskDateErr = false;
console.log("taskUser value: " + taskUser);
if (taskName == null || taskName == "") {
taskNameErr = true;
}
if (taskDate == null || taskDate == "") {
taskDateErr = true;
}
if (taskUser == null || taskUser == "") {
console.log("triggered taskUser error.");
taskUserErr = true;
}
if (taskUserErr == false && taskDateErr == false && taskNameErr == false) {
Meteor.call("add.task", taskName, taskUser, taskDate, function(err, result) {
if (err) {
console.log(" ERROR adding the new task: " + err);
} else {
console.log(" SUCCESS adding the new task.");
$("#taskName").val("");
$("#taskDate").val("");
$("#taskUser").val("");
$('select').formSelect();
}
});
} else {
showSnackbar("ERROR: Missing Required Fields!", "red");
}
},
'click #hideCompletedTasks' (event) {
let hideComp = $("#hideCompletedTasks").prop('checked');
if (hideComp == true) {
Session.set("hideCompletedTasks", true);
} else {
Session.set("hideCompletedTasks", false);
}
}
});

View file

@ -0,0 +1,5 @@
<template name="taskHome">
{{> taskForm}}
<hr>
{{> taskTbl}}
</template>

View file

@ -0,0 +1,38 @@
<template name="taskTbl">
<div class="row">
<div class="col s12">
<table class="highlight striped responsive-table">
<thead>
<tr>
<th>Task Name</th>
<th>Assigned To</th>
<th>Due</th>
<th>Done On</th>
<th>Complete</th>
</tr>
</thead>
<tbody>
{{#each tasks}}
<tr>
<td>{{taskName}}</td>
<td>{{assignedTo}}</td>
<td>{{taskDate}}</td>
<td>{{completeDate}}</td>
<td>
{{#if $eq isComplete true}}
<i class="material-icons green">check</i>
{{/if}}
</td>
<td>
<i class="material-icons clickable deleteTask">delete</i>
<i class="material-icons clickable markTaskComplete">check</i>
</td>
</tr>
{{/each}}
</tbody>
</table>
</div>
</div>
{{> deleteConfirmationModal}}
{{> snackbar}}
</template>

View file

@ -0,0 +1,51 @@
import { TaskItems } from '../../../imports/api/tasks.js';
import moment from 'moment';
Template.taskTbl.onCreated(function() {
this.subscribe("allTasks");
});
Template.taskTbl.onRendered(function() {
Session.set("hideCompletedTasks", false);
});
Template.taskTbl.helpers({
tasks: function() {
let hideComp = Session.get("hideCompletedTasks");
if (hideComp == false) {
return TaskItems.find({});
} else {
return TaskItems.find({ isComplete: false });
}
},
completeDate: function() {
let completedOn = this.completedOn;
if (completedOn != null) {
let compOn = moment(completedOn).format("MMM DD, YYYY");
return compOn;
}
}
});
Template.taskTbl.events({
'click .deleteTask' (event) {
event.preventDefault();
Session.set("deleteId", this._id);
Session.set("method", "delete.task");
Session.set("item", this.taskName);
Session.set("view", "Tasks");
$('#modalDelete').modal('open');
},
'click .markTaskComplete' (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");
}
});
},
});