Updates to Order Screen

This commit is contained in:
2022-05-12 20:03:39 +10:00
parent a587423d3e
commit 100a772297
7 changed files with 44 additions and 13 deletions

View File

@@ -8,4 +8,11 @@ let htmlViewWithContext func =
func (snd ctx) func (snd ctx)
|> htmlView |> htmlView
) )
|> warbler
let htmlViewWithContextAndId (id: int) func =
(fun ctx ->
func (snd ctx) id
|> htmlView
)
|> warbler |> warbler

View File

@@ -1,9 +1,11 @@
module DredgePos.Global.View module DredgePos.Global.View
open DredgeFramework open DredgeFramework
open DredgePos.Types
open Giraffe.ViewEngine open Giraffe.ViewEngine
let Value = attr "data-value" let Value = attr "data-value"
let _table (value: floorplan_table) = value |> jsonEncode |> (attr "data-table")
let VisibleInMode (value: string list) = value |> jsonEncode |> (attr "data-visible-in-mode") let VisibleInMode (value: string list) = value |> jsonEncode |> (attr "data-visible-in-mode")
let InvisibleInMode (value: string list) = value |> jsonEncode |> (attr "data-invisible-in-mode") let InvisibleInMode (value: string list) = value |> jsonEncode |> (attr "data-invisible-in-mode")

View File

@@ -3,6 +3,7 @@
open DredgePos open DredgePos
open DredgeFramework open DredgeFramework
open DredgePos.Types open DredgePos.Types
open DredgePos.Global.Controller
open Giraffe open Giraffe
open Microsoft.AspNetCore.Http open Microsoft.AspNetCore.Http
@@ -24,6 +25,20 @@ let loadGrid (gridId: int) =
else ajaxSuccess {|grid=grid;gridHtml=gridHtml|} else ajaxSuccess {|grid=grid;gridHtml=gridHtml|}
|> json |> json
let loadOrderScreenView (ctx: HttpContext) (tableNumber: int) =
Authenticate.Model.RequireClerkAuthentication ctx
let currentClerk = Authenticate.Model.getCurrentClerk ctx
let styles = [|"dredgepos.orderScreen.css"|] |> addDefaultStyles
let scripts = [|"dredgepos.tables.js";"./external/currency.min.js";"dredgepos.orderScreen.js"; |] |> addDefaultScripts
let metaTags = [|"viewport", "user-scalable = no, initial-scale=0.8,maximum-scale=0.8 ,shrink-to-fit=yes"|] |> addDefaultMetaTags
let orderScreenPageGroups =
Entity.GetAllInVenue<order_screen_page_group>
|> Array.filter (fun page_group -> page_group.id <> 0)
|> Array.sortBy (fun {order=order} -> order)
View.index tableNumber styles scripts metaTags currentClerk orderScreenPageGroups
let loadOrderScreen (ctx: HttpContext) (tableNumber: int) : HttpHandler = let loadOrderScreen (ctx: HttpContext) (tableNumber: int) : HttpHandler =
Authenticate.Model.RequireClerkAuthentication ctx Authenticate.Model.RequireClerkAuthentication ctx

View File

@@ -128,7 +128,6 @@ let renderGrid (grid: grid) =
let loadGrid gridId = renderGrid (Entity.GetById<grid> gridId) let loadGrid gridId = renderGrid (Entity.GetById<grid> gridId)
let getPagesHTML (gridInfo: grid * order_screen_page_group) = let getPagesHTML (gridInfo: grid * order_screen_page_group) =
let grid, pageGroup = gridInfo let grid, pageGroup = gridInfo

View File

@@ -11,5 +11,5 @@ let router = router {
getf "/getGridHtml/%i" Controller.loadGrid getf "/getGridHtml/%i" Controller.loadGrid
post "/updateCovers" (bindJson<floorplan_table> (fun table -> Entity.Update table |> Array.head |> DredgeFramework.ajaxSuccess |> json)) post "/updateCovers" (bindJson<floorplan_table> (fun table -> Entity.Update table |> Array.head |> DredgeFramework.ajaxSuccess |> json))
get "/" (warbler (fun ctx -> Controller.loadOrderScreen (snd ctx) 0)) get "/" (warbler (fun ctx -> Controller.loadOrderScreen (snd ctx) 0))
getf "/%i" (fun number -> (warbler (fun ctx -> Controller.loadOrderScreen (snd ctx) number))) getf "/%i" (fun number -> (warbler (fun ctx -> htmlView <| Controller.loadOrderScreenView (snd ctx) number)))
} }

View File

@@ -6,12 +6,14 @@ open DredgePos.Global.Controller
open Giraffe.ViewEngine open Giraffe.ViewEngine
open language open language
let pageContainer orderNumber (clerk: clerk) = let coverSelector = div [_class "coverSelector"] []
div [_id "pageContainer"] [
let pageContainer floorplanTable (clerk: clerk) orderScreenPageGroups =
div [_id "pageContainer" ; _table floorplanTable] [
div [_id "leftColumn"] [ div [_id "leftColumn"] [
h1 [_class "tableHeading"] [str (string orderNumber)] h1 [_class "tableHeading"] [str (getAndReplace "active_table" [floorplanTable.table_number])]
div [_class "tableInfo"] [ div [_class "tableInfo"] [
(* Cover Change Button *) coverSelector
posButton "" [] [str (getAndReplace "logged_in_as" [clerk.name])] posButton "" [] [str (getAndReplace "logged_in_as" [clerk.name])]
] ]
div [_class "orderBox"] [ div [_class "orderBox"] [
@@ -61,7 +63,7 @@ let pageContainer orderNumber (clerk: clerk) =
] ]
] ]
div [_id "pageList"] [ div [_id "pageList"] [
(* Category List *) yield! orderScreenPageGroups
] ]
div [_id "pageGroupContainer"] [ div [_id "pageGroupContainer"] [
(* Page Groups *) (* Page Groups *)
@@ -95,12 +97,16 @@ let gridContainer =
] ]
] ]
let coverSelector = let pageGroupButton (pageGroup: order_screen_page_group) = posButton "loadPageGroup" [] [str pageGroup.label]
div [_class "coverSelector"] []
let index orderNumber styles scripts tags clerk (orderScreenPageGroups: order_screen_page_group[]) =
let orderScreenPageGroupButtons =
orderScreenPageGroups
|> Array.map pageGroupButton
let index orderNumber clerk styles scripts tags =
[| [|
pageContainer orderNumber clerk pageContainer (DredgePos.Floorplan.Model.getTable orderNumber) clerk orderScreenPageGroupButtons
posButtonTemplate posButtonTemplate
gridContainer gridContainer
coverSelector coverSelector

View File

@@ -59,7 +59,6 @@ const loadPageGroup = (e: Event) => {
const setupOrderScreen = (data: OrderScreenData) => { const setupOrderScreen = (data: OrderScreenData) => {
$('.coverSelector, .gridContainer').hide()
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
@@ -426,6 +425,7 @@ const getTotalOfRows = (rows: JQuery) => {
const getQty = (row: JQuery) => Number(row.getColumnValue(lang('qty_header'))) const getQty = (row: JQuery) => Number(row.getColumnValue(lang('qty_header')))
const getUnitPrice = (row: JQuery) => moneyFromString(row.getColumnValue(lang('price_header'))) const getUnitPrice = (row: JQuery) => moneyFromString(row.getColumnValue(lang('price_header')))
const calculateRowTotal = (row: JQuery) => { const calculateRowTotal = (row: JQuery) => {
let price = getUnitPrice(row) let price = getUnitPrice(row)
let qty = getQty(row) let qty = getQty(row)
@@ -600,5 +600,7 @@ const generateCoverSelector = () => {
$(() => { $(() => {
OrderScreen.table = $('#pageContainer').data('table') || null OrderScreen.table = $('#pageContainer').data('table') || null
ajax('/order/getOrderScreenData/1', null, 'get', setupOrderScreen, null, null) $('.coverSelector, .gridContainer').hide()
if(OrderScreen.table)
ajax(`/order/getOrderScreenData/${OrderScreen.table.table_number}`, null, 'get', setupOrderScreen, null, null)
}) })