get_my/client/MenuItems/menuItemsForm.js
2025-06-21 07:28:59 -05:00

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);
}