Adding instructions and items now complete

This commit is contained in:
dredgy
2022-07-25 11:58:57 +10:00
parent caae3a4380
commit 0507fcff65
4 changed files with 356 additions and 342 deletions

656
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -8,7 +8,7 @@
"removeComments":false, "removeComments":false,
"preserveConstEnums":true, "preserveConstEnums":true,
"outDir":"wwwroot/scripts", "outDir":"wwwroot/scripts",
"target":"ES2016", "target":"ESNext",
"sourceMap":true, "sourceMap":true,
"moduleResolution": "node" "moduleResolution": "node"
}, },

View File

@@ -7,34 +7,34 @@ type OrderScreenData = {
type OrderScreen = { type OrderScreen = {
order_screen_pages: order_screen_page[] order_screen_pages: order_screen_page[]
last_added_item: orderItem
order_items: orderItem[] order_items: orderItem[]
sales_categories: sales_category[] sales_categories: sales_category[]
print_groups: print_group[] print_groups: print_group[]
order_item_id_generator: Generator order_item_id_generator: Generator
selected_item_ids: number[] selected_item_ids: number[]
pulse_order_item_ids: number[] order_item_ids_to_pulse: number[]
qty_override: number qty_override: number
print_group_override: print_group print_group_override: print_group
custom_item: item, custom_item: item,
selected_cover: number selected_cover: number
table: floorplan_table, table: floorplan_table,
last_added_item_ids: number[]
} }
let OrderScreen : OrderScreen = { let OrderScreen : OrderScreen = {
order_screen_pages: null, order_screen_pages: null,
last_added_item: null,
order_items: [], order_items: [],
print_groups: [], print_groups: [],
sales_categories: [], sales_categories: [],
order_item_id_generator: newestId(), order_item_id_generator: newestId(),
selected_item_ids: [], selected_item_ids: [],
pulse_order_item_ids: [], order_item_ids_to_pulse: [],
qty_override: 1, qty_override: 1,
print_group_override: null, print_group_override: null,
custom_item: null, custom_item: null,
selected_cover: 0, selected_cover: 0,
table: null, table: null,
last_added_item_ids: [],
} }
const loadPageGroup = (e: Event) => { const loadPageGroup = (e: Event) => {
@@ -142,8 +142,8 @@ const deselectAllRows = () => {
$('tr.selected').removeClass('selected') $('tr.selected').removeClass('selected')
} }
const addOrderItemsToPulse = (id: number) => OrderScreen.pulse_order_item_ids = array_push(OrderScreen.pulse_order_item_ids, id) const addOrderItemsToPulse = (id: number) => OrderScreen.order_item_ids_to_pulse = array_push(OrderScreen.order_item_ids_to_pulse, id)
const removeOrderItemsToPulse = (id: number) => OrderScreen.pulse_order_item_ids = array_remove(OrderScreen.pulse_order_item_ids, id) const removeOrderItemsToPulse = (id: number) => OrderScreen.order_item_ids_to_pulse = array_remove(OrderScreen.order_item_ids_to_pulse, id)
const addItemToOrderBox = (newOrderItem:orderItem) => { const addItemToOrderBox = (newOrderItem:orderItem) => {
const existingItems = OrderScreen.order_items const existingItems = OrderScreen.order_items
@@ -154,8 +154,9 @@ const addItemToOrderBox = (newOrderItem:orderItem) => {
) )
if(existingItems.length > 0 && isInMode('accumulate')) { if(existingItems.length > 0 && isInMode('accumulate')) {
incrementItemQty(existingItems[0])
addOrderItemsToPulse(existingItems[0].id) addOrderItemsToPulse(existingItems[0].id)
incrementItemQty(existingItems[0])
OrderScreen.last_added_item_ids = [existingItems[0].id]
} else { } else {
addOrderItemsToPulse(newOrderItem.id) addOrderItemsToPulse(newOrderItem.id)
if(!OrderScreen.selected_item_ids.length) { if(!OrderScreen.selected_item_ids.length) {
@@ -165,15 +166,15 @@ const addItemToOrderBox = (newOrderItem:orderItem) => {
const newItems = const newItems =
OrderScreen.order_items OrderScreen.order_items
.collect(existingOrderItem => { .collect(existingOrderItem => {
const firstSelectedItemId = getLastInstructionItem(OrderScreen.selected_item_ids.first())?.id const firstSelectedItemId = getLastInstructionItem(OrderScreen.selected_item_ids.first()).id
return firstSelectedItemId == existingOrderItem.id return firstSelectedItemId == existingOrderItem.id
? [existingOrderItem, newOrderItem] ? [existingOrderItem, newOrderItem]
: [existingOrderItem] : [existingOrderItem]
}) })
setOrderItems(newItems) setOrderItems(newItems)
} }
OrderScreen.last_added_item_ids = [newOrderItem.id]
} }
deselectAllRows() deselectAllRows()
} }
@@ -189,16 +190,19 @@ const getParentItem = (orderItemId: number) => {
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] || OrderScreen.order_items[itemIndex+1].item.item_type == "item") if(!OrderScreen.order_items[itemIndex+1] || OrderScreen.order_items[itemIndex+1].item.item_type == "item")
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')
.first() ?.first()
if(!nextItem) {
return OrderScreen.order_items.filter((orderItem, index) => index > itemIndex)
}
const nextItemIndex = OrderScreen.order_items.findIndex(orderItem => orderItem.id === nextItem.id); const nextItemIndex = OrderScreen.order_items.findIndex(orderItem => orderItem.id === nextItem.id);
return OrderScreen.order_items.slice(itemIndex, nextItemIndex) return OrderScreen.order_items.slice(itemIndex, nextItemIndex)
} }
const getLastInstructionItem = (orderItemId: number) => getInstructionItems(orderItemId).last() const getLastInstructionItem = (orderItemId: number) => getInstructionItems(orderItemId).last()
@@ -206,10 +210,13 @@ 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.map(selectedItemId => getLastInstructionItem(selectedItemId).id).unique()
: [getLastInstructionItem(OrderScreen.order_items.last().id).id] : OrderScreen.last_added_item_ids.map(itemId => getLastInstructionItem(itemId).id)
console.log(addAfter)
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)
@@ -258,7 +265,7 @@ const renderOrderBox = () => {
newRow.addClass('selected') newRow.addClass('selected')
} }
if(OrderScreen.pulse_order_item_ids.includes(orderItem.id)){ if(OrderScreen.order_item_ids_to_pulse.includes(orderItem.id)){
newRow.pulse() newRow.pulse()
} }
}) })
@@ -268,7 +275,6 @@ const renderOrderBox = () => {
if(element) { if(element) {
element.scrollIntoView() element.scrollIntoView()
} }
OrderScreen.last_added_item = null
updateOrderBoxTotals() updateOrderBoxTotals()
} }

View File

@@ -111,5 +111,5 @@ interface Array<T> {
first(): T first(): T
last(): T last(): T
unique(): this unique(): this
collect(func: (item: T) => T[]): T[] collect(func: (item: T) => any[]): any[]
} }