Added open food/freetext commands

This commit is contained in:
2022-01-08 19:25:01 +10:00
parent f656c5ab40
commit 56d42f1339
7 changed files with 61 additions and 5 deletions

View File

@@ -59,6 +59,7 @@ let getOrderScreenData (id: int) =
order_screen_pages = Entity.getAllInVenue<order_screen_page_group> order_screen_pages = Entity.getAllInVenue<order_screen_page_group>
sales_categories = Entity.getAllInVenue<sales_category> sales_categories = Entity.getAllInVenue<sales_category>
print_groups = Entity.getAllInVenue<print_group> print_groups = Entity.getAllInVenue<print_group>
custom_item = Entity.getAllByColumn<item> "item_code" "OPEN000" |> first
|} |}
|> ajaxSuccess |> ajaxSuccess
|> json |> json

View File

@@ -38,8 +38,10 @@ let GetFileName (file: string) = Path.GetFileName file
let length (variable: 'T[]) = variable.Length let length (variable: 'T[]) = variable.Length
let first (array: 'a[]) = array[0] let first (array: 'a[]) = array[0]
let last (array: 'a[]) = array[array.Length-1] let last (array: 'a[]) = array[array.Length-1]
let filterFirst (array:'a[]) = if array.Length > 0 then [|array[0]|] else [||]
let removeFalseValues (variable: bool[]) = variable |> Array.filter id let removeFalseValues (variable: bool[]) = variable |> Array.filter id

View File

@@ -2,6 +2,7 @@
open System open System
open DredgePos.Types open DredgePos.Types
open FSharp.Data
open Microsoft.AspNetCore.Http open Microsoft.AspNetCore.Http
open Floorplan open Floorplan
open Giraffe open Giraffe
@@ -64,6 +65,13 @@ let loadOrderScreen (ctx: HttpContext) (tableNumber: int) : HttpHandler =
|> Array.map OrderScreen.getPagesHTML |> Array.map OrderScreen.getPagesHTML
|> String.concat "\n" |> String.concat "\n"
let customItem =
Entity.getAllByColumn<item> "item_code" "OPEN000"
|> filterFirst
|> Array.map jsonEncode
|> String.concat ""
let variables = map [ let variables = map [
"title", "Order" "title", "Order"
"categoryList", categoryList "categoryList", categoryList
@@ -72,6 +80,7 @@ let loadOrderScreen (ctx: HttpContext) (tableNumber: int) : HttpHandler =
"coverSelectorButton", coverSelectorButton "coverSelectorButton", coverSelectorButton
"covers", coverString "covers", coverString
"salesCategoryOverrideButtons", OrderScreen.generateSalesCategoryOverrideButtons () "salesCategoryOverrideButtons", OrderScreen.generateSalesCategoryOverrideButtons ()
"custom", OrderScreen.generateSalesCategoryOverrideButtons ()
] ]
let styles = ["dredgepos.orderScreen.css"] let styles = ["dredgepos.orderScreen.css"]

View File

@@ -90,5 +90,7 @@
"msgbox_amount_select":"Enter Amount", "msgbox_amount_select":"Enter Amount",
"msgbox_qty_select":"How many would you like to select?", "msgbox_qty_select":"How many would you like to select?",
"void_mode": "Void Mode is ON." "void_mode": "Void Mode is ON.",
"enter_item_name": "Enter Item Name",
"enter_item_price": "Enter Item Price"
} }

View File

@@ -2,6 +2,7 @@ type OrderScreenData = {
order_screen_pages: order_screen_page[] order_screen_pages: order_screen_page[]
sales_categories: sales_category[] sales_categories: sales_category[]
print_groups: print_group[] print_groups: print_group[]
custom_item: item
} }
type OrderScreen = { type OrderScreen = {
@@ -14,6 +15,7 @@ type OrderScreen = {
selected_item_ids: number[] selected_item_ids: number[]
qty_override: number qty_override: number
print_group_override: print_group print_group_override: print_group
custom_item: item,
} }
let OrderScreen : OrderScreen = { let OrderScreen : OrderScreen = {
@@ -25,7 +27,8 @@ let OrderScreen : OrderScreen = {
order_item_id_generator: newestId(), order_item_id_generator: newestId(),
selected_item_ids: [], selected_item_ids: [],
qty_override: 1, qty_override: 1,
print_group_override: null print_group_override: null,
custom_item: null
} }
const loadPageGroup = (e: Event) => { const loadPageGroup = (e: Event) => {
@@ -49,12 +52,16 @@ const setupOrderScreen = (data: OrderScreenData) => {
OrderScreen.order_screen_pages = data.order_screen_pages OrderScreen.order_screen_pages = data.order_screen_pages
OrderScreen.sales_categories = data.sales_categories OrderScreen.sales_categories = data.sales_categories
OrderScreen.print_groups = data.print_groups OrderScreen.print_groups = data.print_groups
OrderScreen.custom_item = data.custom_item
updateOrderBoxTotals() updateOrderBoxTotals()
let doc = $(document) let doc = $(document)
doc.on('click', '.nextButton', goToNextPage) doc.on('click', '.nextButton', goToNextPage)
doc.on('click', '.prevButton', goToPrevPage) doc.on('click', '.prevButton', goToPrevPage)
doc.on('click', '.loadPageGroup', loadPageGroup) doc.on('click', '.loadPageGroup', loadPageGroup)
doc.on('click', '[data-primary-action=item]', itemButtonClicked) doc.on('click', '[data-primary-action=item]', itemButtonClicked)
doc.on('click', '.freetextButton', freetext)
doc.on('click', '.openItemButton', openItem)
doc.on('click', '.orderBoxTable tbody tr', itemRowClicked) doc.on('click', '.orderBoxTable tbody tr', itemRowClicked)
doc.on('click', '.voidButton', voidButtonClicked) doc.on('click', '.voidButton', voidButtonClicked)
doc.on('dblclick', '.voidButton', voidLastItem) doc.on('dblclick', '.voidButton', voidLastItem)
@@ -131,12 +138,15 @@ const addInstructionToOrderBox = (instruction: orderItem) => {
if(parentRow.is(selectedRow) || !parentRow.hasClass('selected')) { if(parentRow.is(selectedRow) || !parentRow.hasClass('selected')) {
const newRow = createOrderRow(instruction) const newRow = createOrderRow(instruction)
getLastInstructionRow(selectedRow).after(newRow.pulse()) getLastInstructionRow(selectedRow).after(newRow.pulse())
newRow.setColumnValue(lang('printgroup_header'), selectedRow.getColumnValue(lang('printgroup_header')))
} }
}) })
return return
} }
const lastRow = orderBox.find('tr').last()
orderBox.append(newRow.pulse()) orderBox.append(newRow.pulse())
newRow.setColumnValue(lang('printgroup_header'), lastRow.getColumnValue(lang('printgroup_header')))
} }
@@ -363,7 +373,6 @@ const scrollToElement = (element: JQuery) => element.get()[0].scrollIntoView()
const overrideQty = () => showVirtualNumpad(lang('multiplier'), 4, false, true, true, qtyOverridden) const overrideQty = () => showVirtualNumpad(lang('multiplier'), 4, false, true, true, qtyOverridden)
const qtyOverridden = (qtyString: string) => OrderScreen.qty_override = Number(qtyString) const qtyOverridden = (qtyString: string) => OrderScreen.qty_override = Number(qtyString)
const printGroupOverride = (e: JQuery.TriggeredEvent) => { const printGroupOverride = (e: JQuery.TriggeredEvent) => {
@@ -387,4 +396,36 @@ const printGroupOverride = (e: JQuery.TriggeredEvent) => {
} }
} }
const freetext = () => showVirtualKeyboard('', 32,false, freetextSubmitted)
const freetextSubmitted = (text: string) => {
if(text.trim().length < 1) return
if($('.orderBoxTable tbody tr').length < 1){
posAlert(lang('freetext_no_order'))
}
const item = OrderScreen.custom_item
item.item_type = 'instruction'
item.item_name = text
addNewItem(item)
}
const openItem = () => showVirtualKeyboard(lang('enter_item_name'), 32,false, openItemTextSubmitted)
const openItemTextSubmitted = (text: string) => {
const submitFunction = (priceString: string) => {
const price = currency(priceString)
const item = OrderScreen.custom_item
item.item_type = 'item'
item.item_name = text
item.price1 = price.value
addNewItem(item)
}
showVirtualNumpad(lang('enter_item_price'), 4, false, true, true, submitFunction)
}
$(() => ajax('/orderScreen/getOrderScreenData/1', null, 'get', setupOrderScreen, null, null) ) $(() => ajax('/orderScreen/getOrderScreenData/1', null, 'get', setupOrderScreen, null, null) )

View File

@@ -99,6 +99,7 @@ body
.posButton.active, .posButton:active .posButton.active, .posButton:active
border: inset 2px border: inset 2px
background: var(--posbutton-background-active)
.posButton.voidButton .posButton.voidButton
background: var(--void-button-background) background: var(--void-button-background)

View File

@@ -48,12 +48,12 @@
<div class="functionColumn"> <div class="functionColumn">
<a class="posButton accumulateButton" data-active-in-mode="accumulate"><!--[lang:accumulate_function]--></a> <a class="posButton accumulateButton" data-active-in-mode="accumulate"><!--[lang:accumulate_function]--></a>
<a class="selectCoversButton posButton"><!--[lang:select_covers]--></a> <a class="selectCoversButton posButton"><!--[lang:select_covers]--></a>
<a class="keyboardButton posButton"><!--[lang:freetext_button]--></a> <a class="freetextButton posButton"><!--[lang:freetext_button]--></a>
<a class="numpadButton posButton"><!--[lang:numpad_button]--></a> <a class="numpadButton posButton"><!--[lang:numpad_button]--></a>
</div> </div>
<div class="functionColumn"> <div class="functionColumn">
<a class="posButton voidButton" data-active-in-mode="void"><!--[lang:void]--></a> <a class="posButton voidButton" data-active-in-mode="void"><!--[lang:void]--></a>
<a class="posButton"></a> <a class="posButton openItemButton"></a>
</div> </div>
<div class="functionColumn"> <div class="functionColumn">
<a class="posButton"><!--[lang:pay_function]--></a> <a class="posButton"><!--[lang:pay_function]--></a>