mirror of
https://gitlab.com/bmcgonag/get_my.git
synced 2026-03-26 15:58:50 +00:00
172 lines
6.2 KiB
JavaScript
172 lines
6.2 KiB
JavaScript
import { MenuItems } from '../../imports/api/menuItems.js';
|
|
import { Menus } from '../../imports/api/menu.js';
|
|
import moment from 'moment';
|
|
import { M } from '../lib/assets/materialize.js';
|
|
import { UserLast } from '../../imports/api/userLast.js';
|
|
|
|
Template.menuItemsForm.onCreated(function() {
|
|
this.subscribe("myMenus");
|
|
this.subscribe("allMenuItems", Session.get("menuId"));
|
|
this.subscribe("userLastView");
|
|
});
|
|
|
|
Template.menuItemsForm.onRendered(function() {
|
|
var elems = document.querySelectorAll('.datepicker');
|
|
var instances = M.Datepicker.init(elems, {});
|
|
|
|
Session.set("menuItemErr", false);
|
|
Session.set("menuListItems", {});
|
|
|
|
var elemt = document.querySelectorAll('.tooltipped');
|
|
var instancet = M.Tooltip.init(elemt, {});
|
|
|
|
this.autorun(() => {
|
|
var elema = document.querySelectorAll('.autocomplete');
|
|
var instancea = M.Autocomplete.init(elema, {
|
|
minlength: 0,
|
|
data: Session.get("menuListItems"),
|
|
});
|
|
});
|
|
});
|
|
|
|
Template.menuItemsForm.helpers({
|
|
menuItemErr: function() {
|
|
return Session.get("menuItemErr");
|
|
},
|
|
menuName: function() {
|
|
let menuId = "";
|
|
if (Session.get("menuId")) {
|
|
menuId = Session.get("menuId");
|
|
} else {
|
|
const menuInfor = async() => {
|
|
let result = await UserLast.findOneAsync({ view: "Menu" }).viewId;
|
|
if (!result) {
|
|
|
|
} else {
|
|
return result;
|
|
}
|
|
}
|
|
let menuId = menuInfor();
|
|
}
|
|
|
|
const menuData = async() => {
|
|
let menuInfo = await Menus.findOneAsync({ _id: menuId });
|
|
if (!menuInfo) {
|
|
return;
|
|
} else {
|
|
return menuInfo.menuName;
|
|
}
|
|
}
|
|
let menuInformation = menuData();
|
|
return menuInformation;
|
|
}
|
|
});
|
|
|
|
Template.menuItemsForm.events({
|
|
'click .saveMenuItem' (event) {
|
|
event.preventDefault();
|
|
let menuItem = $("#menuItemInp").val();
|
|
let dateSrv = $("#dateServed").val();
|
|
let menuId = Session.get("menuId");
|
|
|
|
const mie = async() => {
|
|
let menuItemExists = await MenuItems.findOneAsync({ itemName: menuItem });
|
|
if (!menuItemExists) {
|
|
// call to add it
|
|
notExists();
|
|
} else {
|
|
// call to add it to the menu only
|
|
itExists(menuItemExists);
|
|
}
|
|
}
|
|
mie();
|
|
|
|
const notExists = async() => {
|
|
// add the item as new and add to the menu
|
|
if (menuItem == null || menuItem == "") {
|
|
Session.set("menuItemErr", true);
|
|
} else {
|
|
const addMenuItem = async() => {
|
|
let result = await Meteor.callAsync('add.menuItem', menuItem);
|
|
if (!result) {
|
|
console.log(" ERROR adding menu item: " + err);
|
|
} else {
|
|
// console.log(" SUCCESS adding menu item.");
|
|
return result;
|
|
}
|
|
}
|
|
let addedItem = addMenuItem();
|
|
|
|
if (!addedItem) {
|
|
console.log("Item was not added.");
|
|
} else {
|
|
// now add this item to the menu
|
|
const addToMenu = async() => {
|
|
let result2 = await Meteor.callAsync('addto.Menu', menuId, menuItem, result, dateSrv);
|
|
if (!result2) {
|
|
console.log(" ERROR adding menuitem to menu: " + error);
|
|
} else {
|
|
$("#menuItemInp").val("");
|
|
$("#dateServed").val("");
|
|
// console.log("Added item to menu - no problem.");
|
|
}
|
|
}
|
|
addToMenu();
|
|
}
|
|
}
|
|
}
|
|
|
|
const itExists = async(menuItemExists) => {
|
|
// use the existing item on the menu
|
|
let menuItemId = menuItemExists._id;
|
|
let isLinked = menuItemExists.isLinked;
|
|
if (menuItem == null || menuItem == "") {
|
|
Session.set("menuItemErr", true);
|
|
} else {
|
|
Meteor.call('addto.Menu', menuId, menuItem, menuItemId, dateSrv, isLinked, function(error, nresult) {
|
|
if (error) {
|
|
console.log(" ERROR adding menuitem to menu: " + error);
|
|
} else {
|
|
// console.log("Added item to menu - no problem.");
|
|
$("#menuItemInp").val("");
|
|
$("#dateServed").val("");
|
|
}
|
|
});
|
|
}
|
|
}
|
|
},
|
|
'click .shiftOneDay' (event) {
|
|
event.preventDefault();
|
|
let menuInfo = MenuItems.find({}).fetch();
|
|
// now menuInfo is an array
|
|
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 DD, YYYY");
|
|
// console.log(momentAddDay);
|
|
const shiftDay = async() => {
|
|
let result = await Meteor.callAsync('shiftDate', menuItemId, momentAddDay);
|
|
if (!result) {
|
|
console.log(" ERROR shifting meal days: " + err);
|
|
} else {
|
|
showSnackbar("Items Shifted Out by 1 Calendar Day", "green");
|
|
}
|
|
}
|
|
}
|
|
},
|
|
'keyup #menuItemInp' (event) {
|
|
if (event.which != 13) {
|
|
let findMenuItem = $("#menuItemInp").val();
|
|
let menuItemInfo = MenuItems.find({ itemName: {$regex: findMenuItem + '.*', $options: 'i' }}).fetch();
|
|
if (typeof menuItemInfo != 'undefined' && menuItemInfo != '' && menuItemInfo != null) {
|
|
getMenuItemList(menuItemInfo);
|
|
}
|
|
}
|
|
},
|
|
});
|
|
|
|
getMenuItemList = function(menuItemInfo) {
|
|
let menuItemObjArray = [];
|
|
menuItemObjArray = menuItemInfo.map(info => ({ id: info._id, text: info.itemName }));
|
|
Session.set("menuListItems", menuItemObjArray);
|
|
}
|