Corrected double stacking of instruction items

This commit is contained in:
2022-07-31 18:50:11 +10:00
parent 76b7fdea6c
commit 334391eb38

View File

@@ -116,15 +116,15 @@ const navigatePage = (direction: number, button: JQuery) => {
const getOrderBox = () => $('.orderBoxTable tbody') const getOrderBox = () => $('.orderBoxTable tbody')
const goToNextPage = (e: JQuery.TriggeredEvent) => navigatePage(1, $(e.target)) const goToNextPage = (e: JQuery.TriggeredEvent) => navigatePage(1, $(e.target))
const goToPrevPage = (e: JQuery.TriggeredEvent) => navigatePage(-1, $(e.target)) const goToPrevPage = (e: JQuery.TriggeredEvent) => navigatePage(-1, $(e.target))
const setItemQty = (orderItem: orderItem, qty: number) => { const setItemQty = (orderItem: orderItem, qty: number) => {
if(!orderItem || !OrderScreen.order_items.find(existingItem => orderItem.id == existingItem.id)) return; if(!orderItem || !OrderScreen.order_items.find(existingItem => orderItem.id == existingItem.id)) return;
const instructionIds = getInstructionItems(orderItem.id).map(orderItem => orderItem.id) const instructionIds = getInstructionItems(orderItem.id).map(orderItem => orderItem.id)
if(qty < 1){ if(qty < 1){
const newItems = OrderScreen.order_items.filter(existingOrderItem => existingOrderItem.id != orderItem.id) const newItems = OrderScreen.order_items.filter(existingOrderItem => existingOrderItem.id != orderItem.id)
OrderScreen.selected_item_ids = array_remove(OrderScreen.selected_item_ids, orderItem.id) OrderScreen.selected_item_ids = array_remove(OrderScreen.selected_item_ids, orderItem.id)
if(orderItem.item.item_type == "item") { if(orderItem.item.item_type == "item") {
const lastItem = newItems.filter(orderItem => orderItem.item.item_type == "item")?.last() const lastItem = newItems.filter(orderItem => orderItem.item.item_type == "item")?.last()
@@ -133,7 +133,7 @@ const setItemQty = (orderItem: orderItem, qty: number) => {
setOrderItems(newItems) setOrderItems(newItems)
return; return;
} }
const newItems = OrderScreen.order_items.map(existingOrderItem => { const newItems = OrderScreen.order_items.map(existingOrderItem => {
if(existingOrderItem.id == orderItem.id){ if(existingOrderItem.id == orderItem.id){
existingOrderItem.qty = qty existingOrderItem.qty = qty
@@ -200,13 +200,13 @@ const getParentItem = (orderItemId: number, itemList:orderItem[]) => {
const getInstructionItems = (orderItemId: number) => { const getInstructionItems = (orderItemId: number) => {
const itemIndex = OrderScreen.order_items.findIndex(orderItem => orderItem.id === orderItemId); const itemIndex = OrderScreen.order_items.findIndex(orderItem => orderItem.id === orderItemId);
if(!OrderScreen.order_items[itemIndex+1] if(!OrderScreen.order_items[itemIndex+1]
|| OrderScreen.order_items[itemIndex+1].item.item_type == "item" || OrderScreen.order_items[itemIndex+1].item.item_type == "item"
|| OrderScreen.order_items[itemIndex].item.item_type == "instruction" || OrderScreen.order_items[itemIndex].item.item_type == "instruction"
) )
return [OrderScreen.order_items[itemIndex]] return [OrderScreen.order_items[itemIndex]]
const nextItem = const nextItem =
OrderScreen.order_items OrderScreen.order_items
.filter((orderItem, index) => index > itemIndex && orderItem.item.item_type === 'item') .filter((orderItem, index) => index > itemIndex && orderItem.item.item_type === 'item')
@@ -224,11 +224,18 @@ const getLastInstructionItem = (orderItemId: number) => getInstructionItems(orde
const addInstructionToOrderBox = (instruction: orderItem) => { const addInstructionToOrderBox = (instruction: orderItem) => {
//If no items are added, then you can't add an instruction row. //If no items are added, then you can't add an instruction row.
if(!OrderScreen.order_items.length) return if(!OrderScreen.order_items.length) return
const addAfter = OrderScreen.selected_item_ids.length const addAfter = OrderScreen.selected_item_ids.length
? OrderScreen.selected_item_ids.map(selectedItemId => getLastInstructionItem(selectedItemId).id).unique() ? OrderScreen.selected_item_ids
.filter(selectedItemId => {
const orderItem = OrderScreen.order_items.find(orderItem => orderItem.id == selectedItemId)
const parentItem = getParentItem(selectedItemId, OrderScreen.order_items)
return !(orderItem.item.item_type == "instruction" && OrderScreen.selected_item_ids.includes(parentItem.id))
})
.map(selectedItemId => getLastInstructionItem(selectedItemId).id)
.unique()
: OrderScreen.last_added_item_ids.map(itemId => getLastInstructionItem(itemId).id) : OrderScreen.last_added_item_ids.map(itemId => getLastInstructionItem(itemId).id)
const newItems = OrderScreen.order_items.collect(existingItem => { const newItems = OrderScreen.order_items.collect(existingItem => {
const newInstruction = createNewOrderItem(instruction.item, instruction.qty, instruction.print_group) const newInstruction = createNewOrderItem(instruction.item, instruction.qty, instruction.print_group)
addOrderItemsToPulse(newInstruction.id) addOrderItemsToPulse(newInstruction.id)
@@ -394,7 +401,7 @@ const itemRowClicked = (e: JQuery.TriggeredEvent) => {
OrderScreen.selected_item_ids = array_remove(OrderScreen.selected_item_ids, orderItem.id) OrderScreen.selected_item_ids = array_remove(OrderScreen.selected_item_ids, orderItem.id)
getInstructionItems(orderItem.id).forEach(instruction => OrderScreen.selected_item_ids = array_remove(OrderScreen.selected_item_ids, instruction.id)) getInstructionItems(orderItem.id).forEach(instruction => OrderScreen.selected_item_ids = array_remove(OrderScreen.selected_item_ids, instruction.id))
} }
renderOrderBox() renderOrderBox()
} }