Moved to Giraffe View Engine
This commit is contained in:
7
Global/Controller.fs
Normal file
7
Global/Controller.fs
Normal file
@@ -0,0 +1,7 @@
|
||||
module DredgePos.Global.Controller
|
||||
|
||||
open DredgeFramework
|
||||
|
||||
let addDefaultScripts scripts = scripts |> Array.append [|"./external/jquery.js" ; "dredgepos.core.js"; "keyboards.js";|]
|
||||
let addDefaultStyles styles = styles |> Array.append [|"dark.theme.css";|]
|
||||
let addDefaultMetaTags (tags: (string*string)[]) = tags |> Array.append [|"apple-mobile-web-app-capable", "yes"|]
|
||||
11
Global/Router.fs
Normal file
11
Global/Router.fs
Normal file
@@ -0,0 +1,11 @@
|
||||
module DredgePos.Global.Router
|
||||
|
||||
open Saturn
|
||||
open Giraffe
|
||||
|
||||
let htmlViewWithContext func =
|
||||
(fun ctx ->
|
||||
func (snd ctx)
|
||||
|> htmlView
|
||||
)
|
||||
|> warbler
|
||||
109
Global/View.fs
Normal file
109
Global/View.fs
Normal file
@@ -0,0 +1,109 @@
|
||||
module DredgePos.Global.View
|
||||
|
||||
open Giraffe.ViewEngine
|
||||
open DredgeFramework
|
||||
|
||||
let Value = attr "data-value"
|
||||
let innerText = str
|
||||
let lang key = language.get key |> str
|
||||
|
||||
let scriptToHTML (scriptFile: string) =
|
||||
let scriptPath = $"/scripts/{scriptFile}"
|
||||
match FileExists ("wwwroot" + scriptPath) with
|
||||
| true -> script [_src scriptPath] []
|
||||
| false -> comment $"[Missing script: {scriptFile}]"
|
||||
let GetScripts (scripts: string[]) = scripts |> Array.map scriptToHTML
|
||||
|
||||
let styleToHTML (stylesheet:string) =
|
||||
let stylePath = $"/styles/{stylesheet}"
|
||||
match FileExists ("wwwroot" + stylePath) with
|
||||
| true -> link [_rel "stylesheet" ; _href stylePath]
|
||||
| false -> comment $"[Missing style: {stylesheet}]"
|
||||
|
||||
let GetStyles (scripts: string[]) = scripts |> Array.map styleToHTML
|
||||
|
||||
let tagToHtml (tag, content) = meta [_name tag; _content content]
|
||||
|
||||
let GetMetaTags (tags: (string * string)[]) = tags |> Array.map tagToHtml
|
||||
|
||||
let VirtualKeyboardRow numberOfButtons =
|
||||
let buttons = Array.init numberOfButtons (fun _ -> a [] [])
|
||||
div [_class "virtualKeyboardRow"] [
|
||||
yield! buttons
|
||||
]
|
||||
|
||||
let VirtualKeyboard =
|
||||
div [_id "virtualKeyboard"] [
|
||||
div [_class "headingRow"] [
|
||||
h3 [_id "virtualKeyboardHeading"] []
|
||||
a [_class "posButton closeKeyboards"] [str "X"]
|
||||
]
|
||||
input [_type "text"; _name "virtualKeyboardInput"; _id "virtualKeyboardInput"]
|
||||
div [_id "virtualKeyboardButtons"] [
|
||||
VirtualKeyboardRow 13
|
||||
VirtualKeyboardRow 14
|
||||
VirtualKeyboardRow 13
|
||||
VirtualKeyboardRow 11
|
||||
VirtualKeyboardRow 1
|
||||
]
|
||||
span [_class "forceFocus"] []
|
||||
]
|
||||
|
||||
let VirtualNumpadButton (text: string) =
|
||||
a [_href "#"; Value (text.ToLower()); _class "posButton virtualNumpadButton"] [str text]
|
||||
|
||||
let VirtualNumpadRow (buttons:string[]) =
|
||||
div [_class "virtualNumpadRow"] [
|
||||
yield! Array.map VirtualNumpadButton buttons
|
||||
]
|
||||
|
||||
let VirtualNumpad =
|
||||
div [_id "virtualNumpad"] [
|
||||
div [_class "headingRow"] [
|
||||
h3 [_id "virtualNumpadHeading"] []
|
||||
a [_class "posButton closeKeyboards"] [str "X"]
|
||||
]
|
||||
div [_id "virtualNumpadInput"] []
|
||||
div [_id "virtualNumpadButtons"] [
|
||||
VirtualNumpadRow [|"1"; "2"; "3"|]
|
||||
VirtualNumpadRow [|"4"; "5"; "6"|]
|
||||
VirtualNumpadRow [|"7"; "8"; "9"|]
|
||||
VirtualNumpadRow [|"0"; "."; "Clear"|]
|
||||
VirtualNumpadRow [|"Submit"|]
|
||||
]
|
||||
]
|
||||
|
||||
let alert =
|
||||
div [_id "alert"] [
|
||||
div [_id "alertHeading"] []
|
||||
div [_id "alertMessage"] []
|
||||
div [_id "alertButtons"] [
|
||||
a [_class "posButton"; _id "alertOk"] [lang "alert_ok"]
|
||||
a [_class "posButton"; _id "alertYes"] [lang "alert_yes"]
|
||||
a [_class "posButton"; _id "alertNo"] [lang "alert_no"]
|
||||
]
|
||||
]
|
||||
let keyboards = [|
|
||||
VirtualKeyboard
|
||||
VirtualNumpad
|
||||
alert
|
||||
|]
|
||||
|
||||
let HtmlPage pageTitle scripts styles tags content =
|
||||
html [] [
|
||||
head [] [
|
||||
title [] [innerText pageTitle]
|
||||
link [_rel "manifest" ; _href "/manifest.webmanifest"]
|
||||
yield! styles
|
||||
yield! scripts
|
||||
yield! tags
|
||||
]
|
||||
body [] [
|
||||
yield! content
|
||||
yield! keyboards
|
||||
]
|
||||
]
|
||||
|
||||
let HTMLPageWithScripts pageTitle scripts content = HtmlPage pageTitle scripts [||] content
|
||||
let HTMLPageWithStyles pageTitle styles content = HtmlPage pageTitle [||] styles content
|
||||
let HTMLPageWithNoScriptsOrStyles pageTitle content = HtmlPage pageTitle [||] [||] content
|
||||
Reference in New Issue
Block a user