From cbec4a5c5ca55a2ece2eb6bba1431736e5cb51f1 Mon Sep 17 00:00:00 2001 From: Josh Date: Tue, 9 Nov 2021 22:11:39 +1000 Subject: [PATCH] Test Push --- .gitignore | 2 + AjaxController.fs | 11 ++-- Clerk.module.fs | 5 +- Decorations.module.fs | 16 +----- DredgePos.fsproj | 3 +- Floorplan.module.fs | 48 +++------------- GenericEntities.module.fs | 27 ++++++++- PageController.fs | 2 +- Program.fs | 24 ++++---- Reservations.module.fs | 11 +--- Session.module.fs | 5 +- Theme.module.fs | 2 +- Types.fs | 55 +++++++++++++++++++ wwwroot/scripts/js/{ => external}/jquery.js | 0 wwwroot/scripts/js/{ => external}/konva.js | 0 .../scripts/js/{ => external}/konva.min.js | 0 wwwroot/scripts/ts/dredgepos.floorplan.ts | 4 ++ wwwroot/scripts/ts/types.ts | 1 + 18 files changed, 124 insertions(+), 92 deletions(-) create mode 100644 Types.fs rename wwwroot/scripts/js/{ => external}/jquery.js (100%) rename wwwroot/scripts/js/{ => external}/konva.js (100%) rename wwwroot/scripts/js/{ => external}/konva.min.js (100%) diff --git a/.gitignore b/.gitignore index 14f6c2f..9aeb7a5 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,5 @@ /tables/* /Properties/ /.idea/ +/wwwroot/scripts/js/*.js +/wwwroot/scripts/js/*.map diff --git a/AjaxController.fs b/AjaxController.fs index e35477d..d74c1c6 100644 --- a/AjaxController.fs +++ b/AjaxController.fs @@ -1,12 +1,13 @@ module AjaxController open DredgeFramework +open DredgePos open Floorplan open Microsoft.AspNetCore.Http open Reservations open language open Giraffe -open Dapper.FSharp +open Types let loginWithLoginCode (context: HttpContext) (login_code: int) = if Session.clerkLogin login_code context then ajaxSuccess "success" @@ -74,11 +75,11 @@ let getRoomTablesAndDecorations roomId = let getTableData tableNumber = json <| Floorplan.getTable tableNumber -let updateTableShape (table: Floorplan.floorplan_table_shape) = +let updateTableShape (table: floorplan_table) = Floorplan.updateTableShape table |> ignore getTableData table.table_number -let transformTable (table: Floorplan.floorplan_table) = +let transformTable (table: floorplan_table) = Floorplan.updateTablePosition table |> ignore getTableData table.table_number @@ -99,12 +100,12 @@ let transferTable (origin, destination) = let data = map ["origin", getTable origin ; "destination", getTable destination] ajaxSuccess data |> json -let AddDecoration (data: Decorations.floorplan_decoration) = +let AddDecoration (data: floorplan_decoration) = let image = "wwwroot/images/decorations/" + data.decoration_image let width, height = image |> GetImageSize let aspectRatio = decimal width / decimal height - let decoration : Decorations.floorplan_decoration = { + let decoration : floorplan_decoration = { id = 0 decoration_height = (200m / aspectRatio) |> int decoration_width = 200 diff --git a/Clerk.module.fs b/Clerk.module.fs index 9d2ad91..ba5d9e4 100644 --- a/Clerk.module.fs +++ b/Clerk.module.fs @@ -1,14 +1,13 @@ module Clerk -open System open Dapper.FSharp open DredgeFramework -open Renci.SshNet +open DredgePos open Thoth.Json.Net +open Types let mutable loginCookie = "" -type clerk = {id: int; clerk_name: string; clerk_login_code: int; clerk_usergroup: int} let clerk_decoder : Decoder = Decode.object (fun get -> diff --git a/Decorations.module.fs b/Decorations.module.fs index 6fc2b54..ef643cb 100644 --- a/Decorations.module.fs +++ b/Decorations.module.fs @@ -4,21 +4,9 @@ open System open System.IO open System.Text.RegularExpressions open DredgeFramework -open Dapper open Dapper.FSharp -open Floorplan - -[] -type floorplan_decoration = { - id: int - decoration_room: int - decoration_pos_x: int - decoration_pos_y: int - decoration_rotation: int - decoration_width: int - decoration_height: int - decoration_image: string -} +open DredgePos +open Types let decorationList venue = select { diff --git a/DredgePos.fsproj b/DredgePos.fsproj index 550172a..2df76b4 100644 --- a/DredgePos.fsproj +++ b/DredgePos.fsproj @@ -5,11 +5,12 @@ + - + diff --git a/Floorplan.module.fs b/Floorplan.module.fs index dbd50b1..0c4c71a 100644 --- a/Floorplan.module.fs +++ b/Floorplan.module.fs @@ -1,54 +1,18 @@ module Floorplan +open DredgePos open Reservations let currentVenue = 1 open System -open System.Collections -open System.Collections.Generic open System.IO -open System.Xml open System.Xml.Linq -open System.Linq open DredgeFramework open Dapper open Dapper.FSharp -open Dapper.FSharp.MySQL -open MySql.Data.MySqlClient open Thoth.Json.Net - -[] -type floorplan_table_shape = { table_number: int; shape: string; width: int; height: int; rotation: int} -[] -type floorplan_table_transform = { table_number: int; pos_x: int; pos_y: int; width: int; height: int; rotation: int} - - -[] -type floorplan_table = { - table_number: int - room_id: int - venue_id: int - pos_x: int - pos_y: int - shape: string - width: int - height: int - default_covers: int - rotation: int - merged_children: string - previous_state: string - status: int - id: int -} - -[] -type floorplan_room = { - id: int - room_name: string - background_image: string - venue_id: int -} +open Types let floorplan_table_decoder : Decoder = Decode.object @@ -188,7 +152,7 @@ let updateFloorplanTable (tableNumber:int) (column: string) value = getTable tableNumber -let updateTableShape (floorplanTable: floorplan_table_shape) = +let updateTableShape (floorplanTable: floorplan_table) = update { table "floorplan_tables" set floorplanTable @@ -221,7 +185,11 @@ let getChildTables tableNumber = let table = getTable tableNumber let json = table.merged_children - json |> Decode.unsafeFromString(Decode.array floorplan_table_decoder) + let result = json |> Decode.Auto.fromString + match result with + | Ok tables -> tables + | Error _ -> [||] + let matchTable (tableNumberToMatch: int) (floorplanTableToCheck: floorplan_table) = tableNumberToMatch = floorplanTableToCheck.table_number diff --git a/GenericEntities.module.fs b/GenericEntities.module.fs index d2badc2..5e42c48 100644 --- a/GenericEntities.module.fs +++ b/GenericEntities.module.fs @@ -1 +1,26 @@ -module GenericEntities +module Entity +open DredgePos +open Types +open Dapper.FSharp +open DredgeFramework + +let getDatabaseTable (record: 'a) = record.GetType().ToString().ToLower() + "s" + +let addToDatabase (record: 'x)= + let tableName = getDatabaseTable record + insert { + table tableName + value record + } + |> db.InsertOutput + |> first + +let updateInDatabase (record: 'x) = + let tableName = getDatabaseTable record + (* Run an update query *) + update { + table tableName + set record + } + |> db.Update |> ignore + record \ No newline at end of file diff --git a/PageController.fs b/PageController.fs index adc8842..6c2c066 100644 --- a/PageController.fs +++ b/PageController.fs @@ -26,7 +26,7 @@ let loadFloorplan (ctx: HttpContext) : HttpHandler = "decorator", Decorations.generateDecorator() ] let styles = ["tableMap.css"] - let scripts = ["konva.js" ; "dredgepos.floorplan.js"] + let scripts = ["external/konva.min.js" ; "dredgepos.floorplan.js"] let currentClerk = recordToMap <| Session.getCurrentClerk ctx let arrays = map["clerk", currentClerk] diff --git a/Program.fs b/Program.fs index bba4273..db25599 100644 --- a/Program.fs +++ b/Program.fs @@ -1,14 +1,11 @@ namespace WebApplication -open Clerk -open Floorplan -open Microsoft.AspNetCore.Http -open Microsoft.AspNetCore.Mvc.RazorPages -open Microsoft.Extensions.Hosting; + +open DredgePos open Reservations open Saturn open Giraffe -open DredgeFramework +open Types module Program = @@ -23,14 +20,13 @@ module Program = pipe_through browser post "/authenticateClerk" (bindJson (handlePostRoute AjaxController.loginWithLoginCode) ) post "/getTableData" (bindJson AjaxController.getTableData) - post "/updateTableShape" (bindJson AjaxController.updateTableShape) - post "/transformTable" (bindJson AjaxController.transformTable) - post "/createTable" (bindJson AjaxController.createTable) - post "/addDecoration" (bindJson AjaxController.AddDecoration) - post "/updateDecoration" (bindJson AjaxController.UpdateDecoration) - post "/deleteDecoration" (bindJson AjaxController.DeleteDecoration) - post "/deleteTable" (bindJson AjaxController.deleteTable) - post "/mergeTables" (bindJson AjaxController.mergeTables) + post "/transformTable" (bindJson AjaxController.transformTable) + post "/createTable" (bindJson AjaxController.createTable) + post "/addDecoration" (bindJson AjaxController.AddDecoration) + post "/updateDecoration" (bindJson AjaxController.UpdateDecoration) + post "/deleteDecoration" (bindJson AjaxController.DeleteDecoration) + post "/deleteTable" (bindJson AjaxController.deleteTable) + post "/mergeTables" (bindJson AjaxController.mergeTables) post "/newEmptyReservation" (bindJson AjaxController.newEmptyReservation) post "/updateReservation" (bindJson AjaxController.updateReservation) post "/getReservation" (bindJson (fun reservation -> json <| GetReservationById reservation) ) diff --git a/Reservations.module.fs b/Reservations.module.fs index c161ae1..35b71e6 100644 --- a/Reservations.module.fs +++ b/Reservations.module.fs @@ -3,15 +3,8 @@ open System open DredgeFramework open Dapper.FSharp -[] -type reservation = { - id: int - reservation_name: string - reservation_time: int - reservation_covers: int - reservation_table_id: int - reservation_created_at: int -} +open DredgePos +open Types let GetReservationById (id: int) = select { diff --git a/Session.module.fs b/Session.module.fs index 674dbc0..4395769 100644 --- a/Session.module.fs +++ b/Session.module.fs @@ -4,10 +4,9 @@ open System open DredgeFramework open Dapper.FSharp open Clerk +open DredgePos open Thoth.Json.Net - -[] -type session = {id: int; session_id: string; clerk_json: string; clerk_id: int; expires: int} +open Types let deleteSession sessionId context = delete { diff --git a/Theme.module.fs b/Theme.module.fs index 3eaf50a..ebd13e5 100644 --- a/Theme.module.fs +++ b/Theme.module.fs @@ -26,7 +26,7 @@ let getHTMLForFile file = let ParseScriptsAndStylesheets files html = - let defaultScriptsAndStyles = ["jquery.js" ; "dredgepos.core.css"; "dredgepos.core.js"; "keyboards.js"; "theme.css"; "screen.css"; ] + let defaultScriptsAndStyles = ["external/jquery.js" ; "dredgepos.core.css"; "dredgepos.core.js"; "keyboards.js"; "theme.css"; "screen.css"; ] let scriptsAndStylesheets = defaultScriptsAndStyles @ files let scriptAndStylesheetHTML = diff --git a/Types.fs b/Types.fs new file mode 100644 index 0000000..f9d7166 --- /dev/null +++ b/Types.fs @@ -0,0 +1,55 @@ +module DredgePos.Types + +[] +type reservation = { + id: int + reservation_name: string + reservation_time: int + reservation_covers: int + reservation_table_id: int + reservation_created_at: int +} + +[] +type floorplan_table = { + table_number: int + room_id: int + venue_id: int + pos_x: int + pos_y: int + shape: string + width: int + height: int + default_covers: int + rotation: int + merged_children: string + previous_state: string + status: int + id: int +} + +[] +type floorplan_room = { + id: int + room_name: string + background_image: string + venue_id: int +} + +[] +type floorplan_decoration = { + id: int + decoration_room: int + decoration_pos_x: int + decoration_pos_y: int + decoration_rotation: int + decoration_width: int + decoration_height: int + decoration_image: string +} + +[] +type clerk = {id: int; clerk_name: string; clerk_login_code: int; clerk_usergroup: int} + +[] +type session = {id: int; session_id: string; clerk_json: string; clerk_id: int; expires: int} \ No newline at end of file diff --git a/wwwroot/scripts/js/jquery.js b/wwwroot/scripts/js/external/jquery.js similarity index 100% rename from wwwroot/scripts/js/jquery.js rename to wwwroot/scripts/js/external/jquery.js diff --git a/wwwroot/scripts/js/konva.js b/wwwroot/scripts/js/external/konva.js similarity index 100% rename from wwwroot/scripts/js/konva.js rename to wwwroot/scripts/js/external/konva.js diff --git a/wwwroot/scripts/js/konva.min.js b/wwwroot/scripts/js/external/konva.min.js similarity index 100% rename from wwwroot/scripts/js/konva.min.js rename to wwwroot/scripts/js/external/konva.min.js diff --git a/wwwroot/scripts/ts/dredgepos.floorplan.ts b/wwwroot/scripts/ts/dredgepos.floorplan.ts index 8ed9686..4169e3d 100644 --- a/wwwroot/scripts/ts/dredgepos.floorplan.ts +++ b/wwwroot/scripts/ts/dredgepos.floorplan.ts @@ -50,6 +50,10 @@ const Floorplan: floorplan = { selectedDecorationId: 0 }; +const getData = (dataType: entity) => { + +} + $(() => ajax('/ajax/getFloorplanData/1', null, 'get', setupFloorplan, null, null) ) diff --git a/wwwroot/scripts/ts/types.ts b/wwwroot/scripts/ts/types.ts index 88c5d4a..bea93af 100644 --- a/wwwroot/scripts/ts/types.ts +++ b/wwwroot/scripts/ts/types.ts @@ -1,6 +1,7 @@ type PosMode = "edit" | "void" | "transfer" | "default" | "tableSelected" | "decorationSelected" | "activeTableSelected" | "merge" | "reservedTableSelected" type PosModes = PosMode[] + interface ajaxResult { status: string data : any