diff --git a/.meteor/packages b/.meteor/packages index 5346828..4af5ec1 100644 --- a/.meteor/packages +++ b/.meteor/packages @@ -6,18 +6,18 @@ meteor-base@1.5.2 # Packages every Meteor app needs to have mobile-experience@1.1.2 # Packages for a great mobile UX -mongo@2.1.4 # The database Meteor supports right now +mongo@2.1.2 # The database Meteor supports right now blaze-html-templates # Compile .html files into Meteor Blaze views jquery # Wrapper package for npm-installed jquery reactive-var@1.0.13 # Reactive variable for tracker tracker@1.3.4 # Meteor's client-side reactive programming library standard-minifier-css@1.9.3 # CSS minifier run for production mode -standard-minifier-js@3.1.1 # JS minifier run for production mode +standard-minifier-js@3.1.0 # JS minifier run for production mode es5-shim@4.8.1 # ECMAScript 5 compatibility for older browsers -ecmascript@0.16.13 # Enable ECMAScript2015+ syntax in app code -typescript@5.6.6 # Enable TypeScript syntax in .ts and .tsx modules -shell-server@0.6.2 # Server-side component of the `meteor shell` command +ecmascript@0.16.11 # Enable ECMAScript2015+ syntax in app code +typescript@5.6.4 # Enable TypeScript syntax in .ts and .tsx modules +shell-server@0.6.1 # Server-side component of the `meteor shell` command hot-module-replacement@0.5.4 # Update code in development without reloading the page blaze-hot # Update files using Blaze's API with HMR @@ -27,4 +27,4 @@ session@1.2.2 email@3.1.2 arianjahiri:meteor-handlebars-helpers ostrio:flow-router-extra -accounts-password@3.2.1 +accounts-password@3.2.0 diff --git a/.meteor/release b/.meteor/release index 4876d6f..d515fb7 100644 --- a/.meteor/release +++ b/.meteor/release @@ -1 +1 @@ -METEOR@3.3.2 +METEOR@3.3 diff --git a/.meteor/versions b/.meteor/versions index 9d06cad..17cd573 100644 --- a/.meteor/versions +++ b/.meteor/versions @@ -1,9 +1,9 @@ -accounts-base@3.1.2 -accounts-password@3.2.1 +accounts-base@3.1.1 +accounts-password@3.2.0 allow-deny@2.1.0 arianjahiri:meteor-handlebars-helpers@0.0.1 autoupdate@2.0.1 -babel-compiler@7.12.2 +babel-compiler@7.12.0 babel-runtime@1.5.2 base64@1.0.13 binary-heap@1.0.12 @@ -11,10 +11,10 @@ blaze@3.0.2 blaze-hot@2.0.0 blaze-html-templates@3.0.0 blaze-tools@2.0.0 -boilerplate-generator@2.0.2 +boilerplate-generator@2.0.1 caching-compiler@2.0.1 caching-html-compiler@2.0.0 -callback-hook@1.6.1 +callback-hook@1.6.0 check@1.4.4 core-runtime@1.0.0 ddp@1.4.2 @@ -25,7 +25,7 @@ ddp-server@3.1.2 deps@1.0.5-pre.1 diff-sequence@1.1.3 dynamic-import@0.7.4 -ecmascript@0.16.13 +ecmascript@0.16.11 ecmascript-runtime@0.8.3 ecmascript-runtime-client@0.12.3 ecmascript-runtime-server@0.11.1 @@ -48,19 +48,19 @@ logging@1.3.6 meteor@2.1.1 meteor-base@1.5.2 minifier-css@2.0.1 -minifier-js@3.0.4 -minimongo@2.0.4 +minifier-js@3.0.2 +minimongo@2.0.2 mobile-experience@1.1.2 mobile-status-bar@1.1.1 -modern-browsers@0.2.3 +modern-browsers@0.2.2 modules@0.20.3 modules-runtime@0.13.2 modules-runtime-hot@0.14.3 -mongo@2.1.4 +mongo@2.1.2 mongo-decimal@0.2.0 mongo-dev-server@1.1.1 mongo-id@1.0.9 -npm-mongo@6.16.1 +npm-mongo@6.10.2 observe-sequence@2.0.0 ordered-dict@1.2.0 ostrio:flow-router-extra@3.12.0 @@ -76,18 +76,18 @@ roles@1.0.1 routepolicy@1.1.2 session@1.2.2 sha@1.0.10 -shell-server@0.6.2 +shell-server@0.6.1 socket-stream-client@0.6.1 spacebars@2.0.0 spacebars-compiler@2.0.0 standard-minifier-css@1.9.3 -standard-minifier-js@3.1.1 +standard-minifier-js@3.1.0 templating@1.4.4 templating-compiler@2.0.0 templating-runtime@2.0.1 templating-tools@2.0.0 tracker@1.3.4 -typescript@5.6.6 +typescript@5.6.4 underscore@1.6.4 url@1.3.5 webapp@2.0.7 diff --git a/client/AdminMgmt/CleanUp/modalConfirm/cleanUpModalConfirm.js b/client/AdminMgmt/CleanUp/modalConfirm/cleanUpModalConfirm.js index 19245ea..247da06 100644 --- a/client/AdminMgmt/CleanUp/modalConfirm/cleanUpModalConfirm.js +++ b/client/AdminMgmt/CleanUp/modalConfirm/cleanUpModalConfirm.js @@ -29,7 +29,7 @@ Template.cleanUpModalConfirm.events({ case "Menus": cleanUp("clean.Menus", whatItems); case "Products": - cleanUp("clean.Products", whatItems); + // cleanUp("clean.Products", whatItems); case "Stores": // cleanUp("clean.Stores", whatItems); case "Tasks": @@ -43,7 +43,7 @@ Template.cleanUpModalConfirm.events({ cleanUp = async function(methodName, whatItems) { let result = Meteor.callAsync(methodName); if (!result) { - console.log(" ERROR cleaning " + whatItems); + console.log(" ERROR cleaning " + whatItems + ": " + err); } else { showSnackbar(whatItems + " have been cleaned up!", "green"); let confirmModal = document.getElementById('cleanUpConfirm'); @@ -51,15 +51,6 @@ cleanUp = async function(methodName, whatItems) { } } -cleanProducts = async function(methodName, whatItems) { - let result = await Meteor.call(methodName, whatItems); - if (!result) { - console.log(" ERROR cleaning " + whatItems); - } else { - showSnackbar(whatItems + " have been cleaned up.", "green"); - } -} - cleanTasks = async function(methodName, whatItems) { let timeFrame = Session.get("overdueVal"); let result = await Meteor.call(methodName, timeFrame); diff --git a/client/AdminMgmt/ListMgmt/listMgmtTbl.js b/client/AdminMgmt/ListMgmt/listMgmtTbl.js index 256f7d5..922028b 100644 --- a/client/AdminMgmt/ListMgmt/listMgmtTbl.js +++ b/client/AdminMgmt/ListMgmt/listMgmtTbl.js @@ -15,7 +15,6 @@ Template.listMgmtTbl.onRendered(function() { Template.listMgmtTbl.helpers({ lists: function() { let showComplete = Session.get("showCompletedLists"); - // console.log("Show Complete Lists: " + showComplete); if (showComplete) { return Lists.find({}); } else { diff --git a/client/AdminMgmt/ProductMgmt/prodMgmtForm.html b/client/AdminMgmt/ProductMgmt/prodMgmtForm.html index 7ebd800..357b19c 100644 --- a/client/AdminMgmt/ProductMgmt/prodMgmtForm.html +++ b/client/AdminMgmt/ProductMgmt/prodMgmtForm.html @@ -2,22 +2,14 @@

Product Management

{{#if Template.subscriptionsReady}}
-
-

- -

-
-
-

- -

-
+
+

+ +

+
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 Menus
  • My Tasks
  • -
  • My Settings
  • +
  • My Settings
  • {{#if isInRole "systemadmin"}}
  • Manage
  • {{/if}} @@ -30,7 +30,7 @@
  • My Lists
  • My Menus
  • 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({});