diff --git a/client/AdminMgmt/ProductMgmt/prodMgmtForm.js b/client/AdminMgmt/ProductMgmt/prodMgmtForm.js
index f0c2a2d..cb5fc18 100644
--- a/client/AdminMgmt/ProductMgmt/prodMgmtForm.js
+++ b/client/AdminMgmt/ProductMgmt/prodMgmtForm.js
@@ -60,14 +60,6 @@ Template.prodMgmtForm.events({
Session.set("noStoreSet", false);
}
},
- 'click #showNoList' (event) {
- let notUsedInList = $("#showNoList").prop('checked');
- if (notUsedInList == true) {
- Session.set("noListUsed", true);
- } else {
- Session.set("noListUsed", false);
- }
- },
'submit .prodInputForm' (event) {
},
diff --git a/client/AdminMgmt/ProductMgmt/prodMgmtTbl.js b/client/AdminMgmt/ProductMgmt/prodMgmtTbl.js
index 67b3e12..cf49c52 100644
--- a/client/AdminMgmt/ProductMgmt/prodMgmtTbl.js
+++ b/client/AdminMgmt/ProductMgmt/prodMgmtTbl.js
@@ -1,17 +1,14 @@
import { Products } from '../../../imports/api/products.js';
-import { ListItems } from '../../../imports/api/listItems.js';
import { M } from '../../lib/assets/materialize.js';
Template.prodMgmtTbl.onCreated(function() {
this.subscribe("myProducts");
- this.subscribe("allListItems");
});
Template.prodMgmtTbl.onRendered(function() {
Session.set("searchProds", false);
Session.set("searchStore", false);
Session.set("noStoreSet", false);
- Session.set("noListUsed", false);
});
Template.prodMgmtTbl.helpers({
@@ -19,7 +16,6 @@ Template.prodMgmtTbl.helpers({
let searchProd = Session.get("searchProds");
let searchStore = Session.get("searchStore");
let noStoreSet = Session.get("noStoreSet");
- let noListUsed = Session.get("noListUsed");
if (searchProd == true) {
let searchVal = Session.get("searchVal");
@@ -37,17 +33,6 @@ Template.prodMgmtTbl.helpers({
}
} else if (noStoreSet == true) {
return Products.find({ prodStore: '' }, { sort: { prodName: 1 }});
- } else if (noListUsed == true) {
- let i;
- let idList = [];
- let idsInLists = ListItems.find({}).fetch();
- for (i=0; i < idsInLists.length; i++) {
- idList.push(idsInLists[i].prodId);
- }
- if (i > idsInLists.length - 1) {
- let noProdsNot = Products.find({ _id: { $nin: idList }}).count();
- return Products.find({ _id: { $nin: idList }}, { sort: { prodName: 1 }});
- }
} else {
return Products.find({}, { sort: { prodName: 1 }});
}
diff --git a/client/General/DeleteConfModal/deleteConfirmationModal.js b/client/General/DeleteConfModal/deleteConfirmationModal.js
index f153ae7..2d9d52a 100644
--- a/client/General/DeleteConfModal/deleteConfirmationModal.js
+++ b/client/General/DeleteConfModal/deleteConfirmationModal.js
@@ -25,9 +25,9 @@ Template.deleteConfirmationModal.events({
const delItem = async() => {
let result = await Meteor.callAsync(method, deleteId);
if (!result) {
- console.log(" ERROR deleting item from modal: " + err);
+ // console.log(" ERROR deleting item from modal: " + err);
} else {
- console.log(" SUCCESSFULLY deleted.");
+ // console.log(" SUCCESSFULLY deleted.");
// put the new modal open / close here
// $('#modalDelete').modal('close');
}
diff --git a/client/General/headerBar.html b/client/General/headerBar.html
index 97737ca..f3cd1fa 100644
--- a/client/General/headerBar.html
+++ b/client/General/headerBar.html
@@ -11,7 +11,7 @@
My Lists
My Tasks
-
My Settings
+
My Settings
{{#if isInRole "systemadmin"}}
Manage
{{/if}}
@@ -30,7 +30,7 @@
My Lists
My Tasks
-
My Settings
+
My Settings
{{#if isInRole 'systemadmin'}}
Manage
{{#if $eq updateExists true}}
diff --git a/client/ListItems/listItemsTbl.js b/client/ListItems/listItemsTbl.js
index 4d04e18..1ff8aae 100644
--- a/client/ListItems/listItemsTbl.js
+++ b/client/ListItems/listItemsTbl.js
@@ -62,15 +62,13 @@ Template.listItemsTbl.events({
},
'click .markListItemReceived' (event) {
event.preventDefault();
- const setRcvd = async() => {
- let result = await Meteor.callAsync('setReceived.listItem', this._id);
- if (!result) {
- // console.log("Item not marked properly - why?");
+ Meteor.call('setReceived.listItem', this._id, function(err, result) {
+ if (err) {
+ // console.log(" ERROR setting item as received: " + err);
} else {
- // console.log("Item Marked Received.");
+ // console.log(" SUCCESS setting item received.");
}
- }
- setRcvd();
+ });
},
'click .deleteListItem' (event) {
event.preventDefault();
diff --git a/client/MenuItems/modalLinkProducts.js b/client/MenuItems/modalLinkProducts.js
index 8d777d3..00326ff 100644
--- a/client/MenuItems/modalLinkProducts.js
+++ b/client/MenuItems/modalLinkProducts.js
@@ -18,29 +18,17 @@ Template.modalLinkProducts.onRendered(function() {
dropdownOptions: 4,
});
- this.autorun(() => {
- if (this.subscriptionsReady()) {
- // setTimeout(function() {
- // var instances = M.Modal.init(elems, {});
- var elemse = document.querySelectorAll('select');
- var instancese = M.FormSelect.init(elemse, {
- dropdownOptions: 4,
- });
- // }, 250);
- }
- });
+ setTimeout(function() {
+ var instances = M.Modal.init(elems, {});
+ var instancese = M.FormSelect.init(elemse, {
+ dropdownOptions: 4,
+ });
+ }, 250);
});
Template.modalLinkProducts.helpers({
products: function() {
- let prodInfo = Products.find({}, { sort: { prodName:1 }});
- // return Products.find({}, {sort: { prodName:1 }});
- if (!prodInfo) {
- console.log("no product info yet.");
- } else {
- console.log("prod info found.");
- return prodInfo;
- }
+ return Products.find({}, {sort: { prodName:1 }});
}
});
@@ -91,4 +79,4 @@ Template.modalLinkProducts.events({
}
}
}
-});
\ No newline at end of file
+});
diff --git a/imports/api/menu.js b/imports/api/menu.js
index e9bd450..3cd7939 100644
--- a/imports/api/menu.js
+++ b/imports/api/menu.js
@@ -82,7 +82,40 @@ Meteor.methods({
throw new Meteor.Error('You are not allowed to clean up old Menus. Make sure you are logged in with valid user credentials.');
}
- return await Menus.removeAsync({ menuComplete: true });
+ let removeMenuIds = [];
+
+
+ // let's find all the menus with menu items that are past their date.
+ let menuList = Menus.find({ menuComplete: false }).fetch();
+ for (i=0; i < menuList.length; i++) {
+ let removeMenu = true;
+ let items = MenuItems.find({ menuId: menuList[i]._id }).fetch();
+ for (let j=0; j < items.length; j++) {
+ let srvDate = moment(items[j].serveDateActual);
+ let today = moment();
+ let expired = moment(today).isAfter(srvDate);
+ if (expired != true) {
+ removeMenu = false;
+ }
+ if (j == items.length - 1) {
+ if (removeMenu == true) {
+ removeMenuIds.push(menuList[i]._id);
+ }
+ }
+ }
+ }
+
+ // next let's add the ids of any menus that are marked complete
+ let markedComplete = Menus.find({ menuComplete: true }).fetch();
+ for (let k = 0; k < markedComplete.length; k++) {
+ let menuId = markedComplete[k]._id;
+ removeMenuIds.push(menuId);
+ }
+
+ // finally we'll cycle through the ids and remove the items we collected up.
+ for (let l = 0; l < removeMenuIds.length; l++) {
+ await Menus.removeAsync({ _id: removeMenuIds[l] });
+ }
},
async 'addto.Menu' (menuId, menuItem, menuItemId, dateSrv, isLinked) {
check(menuId, String);
diff --git a/imports/api/menuProdLinks.js b/imports/api/menuProdLinks.js
index 3dba4fc..70bded5 100644
--- a/imports/api/menuProdLinks.js
+++ b/imports/api/menuProdLinks.js
@@ -52,7 +52,6 @@ Meteor.methods({
throw new Meteor.Error('You are not allowed to add menu and product links. Make sure you are logged in with valid user credentials.');
};
- console.log(" ---- Doing an Update instead! ---- ");
return await MenuProdLinks.updateAsync({ menuItemId: menuItemId }, {
$set: {
products: prodNameArray,
diff --git a/imports/api/products.js b/imports/api/products.js
index 35e8206..b8d5056 100644
--- a/imports/api/products.js
+++ b/imports/api/products.js
@@ -63,15 +63,5 @@ Meteor.methods({
}
return await Products.removeAsync({ _id: prodId });
- },
- async 'clean.Products' () {
- if (!this.userId) {
- throw new Meteor.Error('You are not allowed to delete products. Make sure you are logged in with valid user credentials.');
- }
-
- // first we need to find potential duplicate products
- // next we need to see which of those are on incomplete lists
- // Then we'll update those to use the main products ID instead
- // finally we'll delete the duplicates
}
});
diff --git a/package-lock.json b/package-lock.json
index a78ea76..0d65189 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -16,9 +16,9 @@
}
},
"node_modules/@babel/runtime": {
- "version": "7.28.4",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz",
- "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==",
+ "version": "7.27.6",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.6.tgz",
+ "integrity": "sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
@@ -109,9 +109,9 @@
"license": "MIT"
},
"node_modules/meteor-node-stubs": {
- "version": "1.2.24",
- "resolved": "https://registry.npmjs.org/meteor-node-stubs/-/meteor-node-stubs-1.2.24.tgz",
- "integrity": "sha512-tw9QzDFVOI5A5CcEw4tTD6CjF+Lk14uzhy2gWH5ImoH4mx4pyPVcha9MmyVur+rEVgpzk+aMG6rs3RxAF9SwiA==",
+ "version": "1.2.19",
+ "resolved": "https://registry.npmjs.org/meteor-node-stubs/-/meteor-node-stubs-1.2.19.tgz",
+ "integrity": "sha512-lryhEAPp7aysrC0j3XU1yTs92ktPQQhzQzLVz3OGQEZjL//iLhvJyeYNSvV01XJn6fXUXe48agossxniJkzYOQ==",
"bundleDependencies": [
"@meteorjs/crypto-browserify",
"assert",
@@ -154,7 +154,6 @@
"punycode": "^1.4.1",
"querystring-es3": "^0.2.1",
"readable-stream": "^3.6.2",
- "sha.js": "^2.4.12",
"stream-browserify": "^3.0.0",
"stream-http": "^3.2.0",
"string_decoder": "^1.3.0",
@@ -189,11 +188,6 @@
"node": ">= 0.12"
}
},
- "node_modules/meteor-node-stubs/node_modules/@meteorjs/browserify-sign/node_modules/isarray": {
- "version": "1.0.0",
- "inBundle": true,
- "license": "MIT"
- },
"node_modules/meteor-node-stubs/node_modules/@meteorjs/browserify-sign/node_modules/readable-stream": {
"version": "2.3.8",
"inBundle": true,
@@ -912,7 +906,7 @@
}
},
"node_modules/meteor-node-stubs/node_modules/isarray": {
- "version": "2.0.5",
+ "version": "1.0.0",
"inBundle": true,
"license": "MIT"
},
@@ -1046,49 +1040,20 @@
"license": "MIT"
},
"node_modules/meteor-node-stubs/node_modules/pbkdf2": {
- "version": "3.1.3",
+ "version": "3.1.2",
"inBundle": true,
"license": "MIT",
"dependencies": {
- "create-hash": "~1.1.3",
- "create-hmac": "^1.1.7",
- "ripemd160": "=2.0.1",
- "safe-buffer": "^5.2.1",
- "sha.js": "^2.4.11",
- "to-buffer": "^1.2.0"
+ "create-hash": "^1.1.2",
+ "create-hmac": "^1.1.4",
+ "ripemd160": "^2.0.1",
+ "safe-buffer": "^5.0.1",
+ "sha.js": "^2.4.8"
},
"engines": {
"node": ">=0.12"
}
},
- "node_modules/meteor-node-stubs/node_modules/pbkdf2/node_modules/create-hash": {
- "version": "1.1.3",
- "inBundle": true,
- "license": "MIT",
- "dependencies": {
- "cipher-base": "^1.0.1",
- "inherits": "^2.0.1",
- "ripemd160": "^2.0.0",
- "sha.js": "^2.4.0"
- }
- },
- "node_modules/meteor-node-stubs/node_modules/pbkdf2/node_modules/hash-base": {
- "version": "2.0.2",
- "inBundle": true,
- "license": "MIT",
- "dependencies": {
- "inherits": "^2.0.1"
- }
- },
- "node_modules/meteor-node-stubs/node_modules/pbkdf2/node_modules/ripemd160": {
- "version": "2.0.1",
- "inBundle": true,
- "license": "MIT",
- "dependencies": {
- "hash-base": "^2.0.0",
- "inherits": "^2.0.1"
- }
- },
"node_modules/meteor-node-stubs/node_modules/possible-typed-array-names": {
"version": "1.1.0",
"inBundle": true,
@@ -1250,22 +1215,15 @@
"license": "MIT"
},
"node_modules/meteor-node-stubs/node_modules/sha.js": {
- "version": "2.4.12",
+ "version": "2.4.11",
"inBundle": true,
"license": "(MIT AND BSD-3-Clause)",
"dependencies": {
- "inherits": "^2.0.4",
- "safe-buffer": "^5.2.1",
- "to-buffer": "^1.2.0"
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
},
"bin": {
"sha.js": "bin.js"
- },
- "engines": {
- "node": ">= 0.10"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/meteor-node-stubs/node_modules/side-channel": {
@@ -1375,37 +1333,11 @@
"node": ">=0.6.0"
}
},
- "node_modules/meteor-node-stubs/node_modules/to-buffer": {
- "version": "1.2.1",
- "inBundle": true,
- "license": "MIT",
- "dependencies": {
- "isarray": "^2.0.5",
- "safe-buffer": "^5.2.1",
- "typed-array-buffer": "^1.0.3"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
"node_modules/meteor-node-stubs/node_modules/tty-browserify": {
"version": "0.0.1",
"inBundle": true,
"license": "MIT"
},
- "node_modules/meteor-node-stubs/node_modules/typed-array-buffer": {
- "version": "1.0.3",
- "inBundle": true,
- "license": "MIT",
- "dependencies": {
- "call-bound": "^1.0.3",
- "es-errors": "^1.3.0",
- "is-typed-array": "^1.1.14"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
"node_modules/meteor-node-stubs/node_modules/url": {
"version": "0.11.4",
"inBundle": true,
diff --git a/server/publish.js b/server/publish.js
index 57e5e13..c0f8072 100644
--- a/server/publish.js
+++ b/server/publish.js
@@ -30,7 +30,7 @@ Meteor.publish("SystemConfig", function() {
Meteor.publish("UserConfigPrefs", function() {
try {
- return UserConfig.find({ user: this.userId });
+ return UserConfig.find({});
} catch (error) {
console.log(" ERROR: Error accessing user config: " + error);
}
@@ -96,14 +96,6 @@ Meteor.publish("myListItems", function(listId) {
}
});
-Meteor.publish("allListItems", function() {
- try {
- return ListItems.find({});
- } catch (error) {
- console.log(" ERROR pulling all list items.");
- }
-});
-
Meteor.publish("myStoreListItems", function(listId) {
try {
let stores = Store.find({});