Updated lists to group by store

Lists have been updated to group by store.

This feature adds a new tab to the List view. Users can now view their items on the general (un-ordered) list, or can see their items gouped by store(s) the product has been assigned.

If a product is on the list, and does not have an assigned store, it will not show on the new store grouped tab.

Updated the dashboard card for update available information to place the update release notes in a prettier format.
This commit is contained in:
Brian McGonagill 2024-08-24 10:50:20 -05:00
parent b992c9d67e
commit c733727829
8 changed files with 115 additions and 16 deletions

View file

@ -16,7 +16,7 @@
</div>
<div class="col s12">
Release Notes:
<p class="flow-text">{{descriptionSinHTML}}</p>
<p class="flow-text">{{{descriptionSinHTML}}}</p>
</div>
<div class="col s12">
Release Date:

View file

@ -60,7 +60,8 @@ Template.dashboard.helpers({
return todayDate;
},
updates: function() {
return UpdateInfo.find({});
let updateAvail = UpdateInfo.find({});
return updateAvail;
},
updatesExist: function() {
let updateExists = UpdateInfo.find({ viewed: false }).fetch();
@ -76,7 +77,7 @@ Template.dashboard.helpers({
descriptionSinHTML: function() {
let desc = this.description;
let sinH = $(desc).text();
return sinH;
return desc;
},
niceDate: function() {
let rDateNorm = this.date;

View file

@ -33,7 +33,9 @@
<li><a href="#!" class="navBtn" id="mySettings {{#if $eq myTheme 'dark'}}white-text{{/if}}">My Settings</a></li>
{{#if isInRole 'systemadmin'}}
<li><a href="#!" id="manage" class="navBtn {{#if $eq myTheme 'dark'}}white-text{{/if}}">Manage</a></li>
<li><a href="#!"><i class="material-icons">notifications</i></a></li>
{{#if $eq updateExists true}}
<li><a href="#!"><i class="material-icons navBtn" id="dashboard">notifications</i></a></li>
{{/if}}
{{/if}}
<li><a href="#!" class="signOut {{#if $eq myTheme 'dark'}}white-text{{/if}}">Sign Out</a></li>
{{else}}

View file

@ -1,9 +1,26 @@
<template name="listItemTblByStore">
<div class="row">
<div class="col s12">
<span>Products with no assigned store, will not be displayed on this version of the list.</span>
<ul class="collection with-header">
<li class="collection-header"><h4>First Names</h4></li>
<li class="collection-item">Alvin</li>
{{#each stores}}
{{#if $eq storeInList true}}
<li class="collection-header"><h4>{{storeName}}</h4></li>
{{#each thisListItems}}
<li class="collection-item" id="{{_id}}-{{itemOrdered}}">
<span>
{{#if $eq itemOrdered true}}
<strike>{{itemName}}</strike>
{{else}}
{{itemName}}
{{/if}}
</span>
<i class="material-icons clickable deleteListItem right modal-trigger" href="#modalDelete">delete</i>
<i class="material-icons clickable markListItemReceived right">check</i>
</li>
{{/each}}
{{/if}}
{{/each}}
</ul>
</div>
</div>

View file

@ -17,14 +17,73 @@ Template.listItemTblByStore.onRendered(function() {
});
Template.listItemTblByStore.helpers({
stores: function() {
let storeList = Stores.find({});
return storeList;
},
thisListItems: function() {
let showReceved = Session.get("showReceivedItems");
let showReceived = Session.get("showReceivedItems");
let searchVal = Session.get("searchVal");
let stores = Stores.find({}).fetch();
}
let store = this.storeName;
if (showReceived == false) {
if (typeof searchVal == 'undefined' || searchVal.length === 0) {
return ListItems.find({ itemStore: store, itemReceived: false });
} else {
return ListItems.find({ itemStore: store, itemReceived: false, itemName: { $regex: searchVal + '.*', $options: 'i' }})
}
} else {
if (typeof searchVal == 'undefined' || searchVal.length == 0) {
return ListItems.find({ itemStore: store });
} else {
return ListItems.find({ itemStore: store, itemName: { $regex: searchVal + '.*', $options: 'i' } });
}
}
},
storeInList: function() {
let noStoresInList = ListItems.find({ itemStore: this.storeName }).count();
if (noStoresInList > 0) {
return true;
} else {
return false;
}
},
});
Template.listItemTblByStore.events({
'click li' (event) {
let itemSel = (event.currentTarget.id).split('-');
let itemId = itemSel[0];
let itemOrder = itemSel[1];
if (typeof itemOrder == 'undefined' || itemOrder == "" || itemOrder == false) {
Meteor.call("setOrdered.listItem", itemId, function(err, result) {
if (err) {
console.log(" ERROR updating order status to ordered: " + err);
}
});
} else {
Meteor.call("setNotOrdered.listItem", itemId, function(err, result) {
if (err) {
console.log(" ERROR updating order status to unordered: " + err);
}
});
}
},
'click .markListItemReceived' (event) {
event.preventDefault();
Meteor.call('setReceived.listItem', this._id, function(err, result) {
if (err) {
console.log(" ERROR setting item as received: " + err);
} else {
// console.log(" SUCCESS setting item received.");
}
});
},
'click .deleteListItem' (event) {
event.preventDefault();
Session.set("deleteId", this._id);
Session.set("method", "delete.listItem");
Session.set("item", this.itemName);
Session.set("view", "List Items");
},
});

View file

@ -1,5 +1,22 @@
<template name="listItemsMain">
{{> listItemsForm}}
<hr>
{{> listItemsTbl}}
</template>
<div class="row">
<div class="col s12">
<ul class="tabs">
<li class="tab col s6">
<a href="#listOnly" class='active'>List</a>
</li>
<li class="tab col s6">
<a href="#listByStore">List by Store</a>
</li>
</ul>
</div>
<div id="listOnly" class="col s12">
{{> listItemsTbl}}
</div>
<div id="listByStore" class="col s12">
{{> listItemTblByStore}}
</div>
</div>
</template>

View file

@ -1,9 +1,12 @@
import { M } from '../lib/assets/materialize.js';
Template.listItemsMain.onCreated(function() {
});
Template.listItemsMain.onRendered(function() {
var elems = document.querySelectorAll('.tabs');
var instance = M.Tabs.init(elems, {});
});
Template.listItemsMain.helpers({
@ -12,4 +15,4 @@ Template.listItemsMain.helpers({
Template.listItemsMain.events({
});
});

View file

@ -20,7 +20,7 @@ Template.listItemsTbl.onRendered(function() {
Template.listItemsTbl.helpers({
'thisListItems': function() {
let showRecvd = Session.get("showReceivedItems");
let searchVal = Session.get("searchVal");;
let searchVal = Session.get("searchVal");
if (showRecvd == false) {
if (typeof searchVal == 'undefined' || searchVal.length === 0) {
return ListItems.find({ itemReceived: false });
@ -76,4 +76,4 @@ Template.listItemsTbl.events({
Session.set("item", this.itemName);
Session.set("view", "List Items");
},
});
});