diff --git a/.gitattributes b/.gitattributes
index 6051c85..f64a42b 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,5 +1,5 @@
# Auto detect text files and perform LF normalization
* text=auto
-/wwwroot/scripts/js/external/* linguist-vendored
+/wwwroot/scripts/external/* linguist-vendored
/wwwroot/stylesheets/css/* linguist-vendored
diff --git a/DredgePos.fsproj b/DredgePos.fsproj
index 2f44ac8..6ae78fb 100644
--- a/DredgePos.fsproj
+++ b/DredgePos.fsproj
@@ -63,6 +63,7 @@
+
diff --git a/wwwroot/scripts/js/external/jquery.js b/wwwroot/scripts/external/jquery.js
similarity index 100%
rename from wwwroot/scripts/js/external/jquery.js
rename to wwwroot/scripts/external/jquery.js
diff --git a/wwwroot/scripts/js/external/konva.js b/wwwroot/scripts/external/konva.js
similarity index 100%
rename from wwwroot/scripts/js/external/konva.js
rename to wwwroot/scripts/external/konva.js
diff --git a/wwwroot/scripts/js/external/konva.min.js b/wwwroot/scripts/external/konva.min.js
similarity index 100%
rename from wwwroot/scripts/js/external/konva.min.js
rename to wwwroot/scripts/external/konva.min.js
diff --git a/wwwroot/scripts/js/dredgepos.authenticate.js b/wwwroot/scripts/js/dredgepos.authenticate.js
deleted file mode 100644
index 47b99f8..0000000
--- a/wwwroot/scripts/js/dredgepos.authenticate.js
+++ /dev/null
@@ -1,13 +0,0 @@
-let showLoginBox = () => showVirtualNumpad('Enter Login Code', 6, true, false, false, authenticate);
-let authenticate = (input) => {
- let login = ajaxSync('/ajax/authenticateClerk', input);
- if (login === 'success') {
- location.assign('/floorplan');
- }
- else
- showLoginBox();
-};
-$(() => {
- showLoginBox();
-});
-//# sourceMappingURL=dredgepos.authenticate.js.map
\ No newline at end of file
diff --git a/wwwroot/scripts/js/dredgepos.authenticate.js.map b/wwwroot/scripts/js/dredgepos.authenticate.js.map
deleted file mode 100644
index e0d1db3..0000000
--- a/wwwroot/scripts/js/dredgepos.authenticate.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"dredgepos.authenticate.js","sourceRoot":"","sources":["../ts/dredgepos.authenticate.ts"],"names":[],"mappings":"AAAA,IAAI,YAAY,GAAG,GAAG,EAAE,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,CAAA;AAEnG,IAAK,YAAY,GAAG,CAAC,KAAc,EAAE,EAAE;IACnC,IAAI,KAAK,GAAG,QAAQ,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAA;IACtD,IAAG,KAAK,KAAK,SAAS,EAAC;QACnB,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;KAChC;;QAEG,YAAY,EAAE,CAAA;AACtB,CAAC,CAAA;AAED,CAAC,CAAC,GAAG,EAAE;IACH,YAAY,EAAE,CAAA;AAClB,CAAC,CAAC,CAAA"}
\ No newline at end of file
diff --git a/wwwroot/scripts/js/dredgepos.core.js b/wwwroot/scripts/js/dredgepos.core.js
deleted file mode 100644
index 40ffba6..0000000
--- a/wwwroot/scripts/js/dredgepos.core.js
+++ /dev/null
@@ -1,150 +0,0 @@
-let Application = {
- keyboard: null,
- mode: [],
- languageVars: {}
-};
-/** Parses a language variable. */
-let lang = (key, replacements) => {
- let finalValue = Application.languageVars[key] || '';
- if (!replacements)
- return finalValue;
- if (typeof replacements === 'string')
- replacements = [replacements];
- replacements.forEach((replacement, index) => {
- let correctIndex = index + 1;
- finalValue = finalValue.replace(`[${correctIndex}]`, replacement);
- });
- return finalValue;
-};
-/** Check if a variable is defined */
-let defined = (variable) => {
- return typeof variable !== 'undefined';
-};
-/** Call an Ajax function asynchronously */
-let ajax = (endpoint, data, method = 'POST', successFunction, errorFunction, beforeFunction) => {
- data = (data == null) ? data : JSON.stringify(data);
- return $.ajax({
- url: endpoint,
- method: method,
- data: data,
- success: (response) => {
- if (successFunction && response.status == 'success')
- successFunction(JSON.parse(response.data));
- else if (errorFunction && response.status != 'success') {
- errorFunction(JSON.parse(response.data));
- }
- },
- error: (error) => console.log(error.statusCode),
- beforeSend: beforeFunction
- });
-};
-/*
- For the flow of the app, synchronous is commonly preferred
- though trying to keep its usage as low as possible.
- */
-let ajaxSync = (endpoint, data, method = 'POST') => {
- let response = JSON.parse($.ajax({
- url: endpoint,
- method: method,
- data: JSON.stringify(data),
- async: false,
- }).responseText);
- if (response.data) {
- response.data = JSON.parse(response.data);
- return response.data;
- }
- return response;
-};
-/* Redirect to a specific URL */
-let redirect = (url) => location.assign(url);
-const resize = () => {
- $('#pageContainer').height(window.innerHeight + "px");
-};
-let setupCore = (languageVars) => {
- Application.languageVars = languageVars;
- const doc = $(document);
- doc.on('click', '#alertNo, #alertOk', hideAlerts);
- window.addEventListener('resize', resize);
- resize();
- setElementVisibilityByMode();
-};
-// @ts-ignore
-let posAlert = (message, title = 'Message') => {
- let alertBox = $('#alert');
- alertBox.css('display', 'flex');
- alertBox.data('value', '');
- $('#alertHeading').text(title);
- $('#alertMessage').text(message);
- $('#alertOk').css('display', 'flex');
- $('#alertYes').css('display', 'none');
- $('#alertNo').css('display', 'none');
-};
-let confirmation = (message, data, title = 'Confirm', submitFunction = (data) => { hideAlerts(); }) => {
- let alert = $('#alert');
- $(document).on('click', '#alert #alertYes', () => {
- hideAlerts();
- submitFunction(data);
- $(document).off('click', '#alert #alertYes');
- });
- alert.css('display', 'flex');
- $('#alertHeading').html(title);
- $('#alertMessage').html(message);
- $('#alertOk').css('display', 'none');
- $('#alertYes').css('display', 'flex');
- $('#alertNo').css('display', 'flex');
-};
-let hideAlerts = () => $('#alert').hide();
-let turnOnMode = (mode) => {
- Application.mode.push(mode);
- setElementVisibilityByMode();
-};
-let turnOffMode = (mode) => {
- Application.mode = Application.mode.filter((value) => value != mode);
- setElementVisibilityByMode();
-};
-let toggleMode = (mode) => {
- if (!isInMode(mode))
- turnOnMode(mode);
- else
- turnOffMode(mode);
-};
-let clearModes = () => { Application.mode = []; };
-let isInMode = (mode) => Application.mode.includes(mode);
-let setElementVisibilityByMode = () => {
- const mode = Application.mode;
- const elements = $('[data-visible-in-mode]');
- elements.each((index, elem) => {
- let element = $(elem);
- let visibleInModes = element.data('visible-in-mode');
- let showElement = visibleInModes.every(visibleMode => {
- return mode.includes(visibleMode);
- });
- if (element.hasClass('useVisibility')) {
- if (showElement) {
- element.css('visibility', 'visible');
- }
- else
- element.css('visibility', 'hidden');
- }
- else
- element.toggle(showElement);
- });
- const invisibleElements = $('[data-invisible-in-mode]');
- invisibleElements.each((index, elem) => {
- let element = $(elem);
- let inVisibleInModes = element.data('invisible-in-mode');
- let hideElement = inVisibleInModes.some(invisibleMode => {
- return mode.includes(invisibleMode);
- });
- element.toggle(!hideElement);
- });
- $('[data-active-in-mode]').each((index, elem) => {
- const button = $(elem);
- const activeInMode = button.data('active-in-mode');
- mode.includes(activeInMode)
- ? button.addClass('active')
- : button.removeClass('active');
- });
-};
-$(() => ajax('/ajax/languageVars', null, 'GET', setupCore, null, null));
-//# sourceMappingURL=dredgepos.core.js.map
\ No newline at end of file
diff --git a/wwwroot/scripts/js/dredgepos.core.js.map b/wwwroot/scripts/js/dredgepos.core.js.map
deleted file mode 100644
index e89c57b..0000000
--- a/wwwroot/scripts/js/dredgepos.core.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"dredgepos.core.js","sourceRoot":"","sources":["../ts/dredgepos.core.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/wwwroot/scripts/js/dredgepos.floorplan.js b/wwwroot/scripts/js/dredgepos.floorplan.js
deleted file mode 100644
index f3fd47b..0000000
--- a/wwwroot/scripts/js/dredgepos.floorplan.js
+++ /dev/null
@@ -1,645 +0,0 @@
-///
-const Floorplan = {
- rooms: [],
- tables: [],
- decorations: [],
- reservations: [],
- activeTableNumbers: [],
- stage: null,
- transformer: null,
- tableLayer: null,
- selectedTableNumber: 0,
- currentRoom: null,
- roomToLoad: null,
- visualScale: 1,
- visualScaleBasis: 1280,
- floorplanDiv: null,
- selectedDecorationId: 0
-};
-$(() => ajax('/ajax/getFloorplanData/1', null, 'get', setupFloorplan, null, null));
-const setupFloorplanEvents = () => {
- const doc = $(document);
- doc.on('click', '.roomButton', roomButtonClicked);
- doc.on('click', '.editModeButton', editModeButtonClicked);
- doc.on('click', '.changeShapeButton', changeTableShape);
- doc.on('click', '.addTableButton', showAddTablePopup);
- doc.on('click', '.deleteTableButton', confirmDeleteTable);
- doc.on('click', '.addDecoration', showDecorator);
- doc.on('click', '.deleteDecoration', deleteDecoration);
- doc.on('click', '.decoratorItem', addDecoration);
- doc.on('click', '.mergeButton', toggleMergeMode);
- doc.on('click', '.unmergeButton', unmergeTable);
- doc.on('click', '.transferTableButton', toggleTransferMode);
- doc.on('click', '.reserveTableButton', reserveTable);
- doc.on('click', '.unreserveTableButton', unreserveTable);
-};
-const roomButtonClicked = (e) => {
- const button = $(e.target);
- const roomId = button.data('value');
- loadRoom(getRoomById(roomId));
-};
-const editModeButtonClicked = (e) => {
- const button = $(e.target);
- button.toggleClass('active');
- toggleMode('edit');
- if (isInMode('edit')) {
- Floorplan.stage.find('Group, Image').forEach(table => table.draggable(true));
- if (isInMode('tableSelected')) {
- const selectedTableShape = getTableShapeFromTableNumber(Floorplan.selectedTableNumber);
- selectTable(selectedTableShape);
- }
- }
- else {
- setTransformerNodes([]);
- Floorplan.stage.find('Group, Image').forEach(table => table.draggable(false));
- }
-};
-const setupFloorplan = (floorplanData) => {
- Floorplan.tables = floorplanData.tables;
- Floorplan.activeTableNumbers = floorplanData.activeTableNumbers;
- Floorplan.rooms = floorplanData.rooms;
- Floorplan.decorations = floorplanData.decorations;
- Floorplan.reservations = floorplanData.reservations;
- getDimensions();
- setupFloorplanEvents();
- loadRoom(Floorplan.rooms[0]);
-};
-const loadRoom = (roomToLoad) => {
- setRoomBackground(roomToLoad);
- setupKonva();
- $('.roomButton').removeClass('active');
- let button = $(`.roomButton[data-value=${roomToLoad.id}]`);
- button.addClass('active');
- const tablesInRoom = Floorplan.tables.filter(table => table.room_id == roomToLoad.id);
- const decorationsInRoom = Floorplan.decorations.filter(decoration => decoration.decoration_room == roomToLoad.id);
- decorationsInRoom.forEach(decoration => createDecorationShape(decoration, false));
- tablesInRoom.forEach(createTableShape);
- if (!isInMode('transfer')) {
- deselectTables();
- }
- Floorplan.currentRoom = roomToLoad;
-};
-const getRoomById = (roomId) => {
- return Floorplan.rooms.find((room) => room.id == roomId);
-};
-const tableIsOpen = (table) => Floorplan.activeTableNumbers.includes(table.table_number);
-const createTableShape = (table) => {
- const draggable = isInMode('edit');
- const tableGroup = new Konva.Group({
- x: table.pos_x * Floorplan.visualScale,
- y: table.pos_y * Floorplan.visualScale,
- draggable: draggable,
- listening: true,
- id: table.table_number.toString()
- });
- const fillColor = tableIsOpen(table)
- ? 'lightblue'
- : table.status == 2
- ? 'lightgreen'
- : 'gray';
- let tableShape;
- switch (table.shape) {
- case "circle": // fall-through
- case "ellipse": // fall-through
- case "longellipse":
- tableShape = new Konva.Ellipse({
- x: 0,
- y: 0,
- radiusX: table.width * 0.5 * Floorplan.visualScale,
- radiusY: table.height * 0.5 * Floorplan.visualScale,
- rotation: table.rotation,
- fill: fillColor,
- stroke: "black",
- strokeWidth: 4,
- draggable: false,
- listening: true
- });
- break;
- default:
- tableShape = new Konva.Rect({
- x: 0,
- y: 0,
- offsetX: table.width * 0.5 * Floorplan.visualScale,
- offsetY: table.height * 0.5 * Floorplan.visualScale,
- width: table.width * Floorplan.visualScale,
- height: table.height * Floorplan.visualScale,
- rotation: table.rotation,
- fill: fillColor,
- stroke: "black",
- strokeWidth: 4,
- draggable: false,
- listening: true
- });
- break;
- }
- const label = new Konva.Text({
- x: table.width * -0.5 * Floorplan.visualScale,
- y: table.height * -0.5 * Floorplan.visualScale,
- width: table.width * Floorplan.visualScale,
- height: table.height * Floorplan.visualScale,
- text: table.table_number.toString(),
- fontSize: 40 * Floorplan.visualScale,
- fill: "black",
- align: "center",
- verticalAlign: "middle",
- draggable: false,
- listening: false
- });
- tableGroup.add(tableShape, label);
- setupTableEvents(tableGroup);
- Floorplan.tableLayer.add(tableGroup);
- return tableGroup;
-};
-const setupTableEvents = (tableGroup) => {
- const tableShape = getTableShapeFromGroup(tableGroup);
- tableGroup.on('click', tableClicked);
- tableGroup.on('tap', tableClicked);
- tableGroup.on('dragend', tableGroupTransformed);
- tableShape.on('transformend', tableShapeTransformed);
-};
-const getTableShapeFromGroup = (group) => group.getChildren()[0];
-const getTableGroupFromShape = (shape) => shape.parent;
-const tableGroupTransformed = (e) => {
- saveTableTransformation(e.target);
-};
-const tableShapeTransformed = (e) => {
- let shape = e.target;
- let group = getTableGroupFromShape(shape);
- saveTableTransformation(group);
-};
-const saveTableTransformation = (tableGroup) => {
- const originalTable = getTableDataFromGroup(tableGroup);
- const tableShape = getTableShapeFromGroup(tableGroup);
- const newTableInfo = {
- table_number: originalTable.table_number,
- previous_state: originalTable.previous_state,
- merged_children: originalTable.merged_children,
- id: originalTable.id,
- width: Math.round(tableShape.scaleX() * tableShape.width() / Floorplan.visualScale),
- height: Math.round(tableShape.scaleY() * tableShape.height() / Floorplan.visualScale),
- pos_x: Math.round(tableGroup.x() / Floorplan.visualScale),
- pos_y: Math.round(tableGroup.y() / Floorplan.visualScale),
- rotation: Math.round(tableShape.rotation()),
- room_id: originalTable.room_id,
- status: originalTable.status,
- venue_id: originalTable.venue_id,
- shape: originalTable.shape,
- default_covers: originalTable.default_covers,
- };
- saveTable(newTableInfo);
- redrawTable(tableGroup);
-};
-const saveTable = (tableToUpdate) => {
- const tables = Floorplan
- .tables
- .filter(table => {
- return table.id != tableToUpdate.id;
- });
- tables.push(tableToUpdate);
- Floorplan.tables = tables;
- ajax("/ajax/transformTable", tableToUpdate, 'post', null, null, null);
-};
-const setTransformerNodes = (nodes) => {
- Floorplan.transformer.moveToTop();
- if (nodes.length < 1)
- Floorplan.transformer.moveToBottom();
- Floorplan.transformer.nodes(nodes);
-};
-const getTableDataFromTableNumber = (tableNumber) => {
- return Floorplan.tables.filter(table => table.table_number == tableNumber)[0];
-};
-const getTableDataFromGroup = (tableGroup) => {
- const tableNumber = tableGroup.attrs.id;
- return Floorplan.tables.find(table => tableNumber == table.table_number);
-};
-const getTableDataFromShape = (tableShape) => getTableDataFromGroup(tableShape.parent);
-const getTableShapeFromTableNumber = (tableNumber) => {
- const tableGroup = Floorplan.stage.find('Group').find((group) => {
- return group.attrs.id == tableNumber;
- });
- return tableGroup.getChildren()[0];
-};
-const getTableGroupFromTableNumber = (tableNumber) => {
- const tableShape = getTableShapeFromTableNumber(tableNumber);
- return getTableGroupFromShape(tableShape);
-};
-const setReservationStatus = (table) => {
- const reservationText = $('.reservationStatus');
- const tableShape = getTableShapeFromTableNumber(table.table_number);
- reservationText.text('');
- if (table.status == 2) {
- tableShape.fill('lightgreen');
- const reservations = Floorplan.reservations.filter(reservation => reservation.reservation_table_id == table.id);
- if (reservations.length) {
- turnOnMode('reservedTableSelected');
- reservationText.text(lang('reserved'));
- let reservation = reservations[0];
- if (reservation.reservation_name != '') {
- reservationText.text(lang('reserved_for', reservation.reservation_name));
- }
- }
- }
- else {
- let fillColor = tableIsOpen(table) ? 'lightblue' : 'gray';
- tableShape.fill(fillColor);
- turnOffMode('reservedTableSelected');
- }
-};
-const reserveTable = () => {
- showVirtualNumpad(lang('how_many_covers'), 2, false, false, true, createEmptyReservation);
-};
-const createEmptyReservation = (covers) => {
- const newReservation = {
- id: 0,
- reservation_covers: covers,
- reservation_created_at: 0,
- reservation_table_id: getSelectedTableData().id,
- reservation_name: '',
- reservation_time: 0,
- };
- ajax('/ajax/newEmptyReservation', newReservation, 'post', emptyReservationCreated, null, null);
-};
-const emptyReservationCreated = (reservation) => {
- Floorplan.reservations.push(reservation);
- const selectedTable = getSelectedTableData();
- selectedTable.status = 2;
- selectedTable.default_covers = reservation.reservation_covers;
- updateTableData(selectedTable);
- updateCoverText(selectedTable);
- setReservationStatus(getSelectedTableData());
- showVirtualKeyboard(lang('confirm_reservation_name'), 32, false, addReservationName);
-};
-const addReservationName = (name) => {
- hideVirtualKeyboard();
- const reservation = Floorplan.reservations.filter(reservation => reservation.reservation_table_id == getSelectedTableData().id)[0];
- reservation.reservation_name = name;
- ajax('/ajax/updateReservation', reservation, 'post', reservationNameAdded, null, null);
-};
-const reservationNameAdded = (updatedReservation) => {
- console.log(updatedReservation);
- Floorplan.reservations = Floorplan.reservations.filter(reservation => reservation.id != updatedReservation.id);
- Floorplan.reservations.push(updatedReservation);
- setReservationStatus(getSelectedTableData());
-};
-const getReservationsOnTable = (table) => Floorplan.reservations.filter(reservation => reservation.reservation_table_id == table.id);
-const updateTableData = (tableToRemove) => {
- Floorplan.tables = Floorplan.tables.filter(table => table.id != tableToRemove.id);
- Floorplan.tables.push(tableToRemove);
-};
-const unreserveTable = () => {
- const selectedTable = getSelectedTableData();
- selectedTable.status = 0;
- ajax('/ajax/unreserveTable', selectedTable, 'post', tableUnreserved, null, null);
-};
-const tableUnreserved = (table) => {
- Floorplan.reservations = Floorplan.reservations.filter(reservation => reservation.reservation_table_id != table.id);
- updateTableData(table);
- setReservationStatus(table);
-};
-const getSelectedTableData = () => getTableDataFromTableNumber(Floorplan.selectedTableNumber);
-const deselectTables = () => {
- Floorplan.stage.find('Rect, Ellipse').forEach((shape, index) => {
- shape.stroke('black');
- });
- Floorplan.selectedDecorationId = 0;
- Floorplan.selectedTableNumber = 0;
- turnOffMode('tableSelected');
- turnOffMode('activeTableSelected');
- turnOffMode('decorationSelected');
- turnOffMode('merge');
- turnOffMode('transfer');
- setTransformerNodes([]);
-};
-const selectTable = (tableShape) => {
- tableShape.stroke('yellow');
- const table = getTableDataFromShape(tableShape);
- Floorplan.selectedTableNumber = table.table_number;
- if (isInMode('edit')) {
- setTransformerNodes([tableShape]);
- }
- if (tableIsOpen(table)) {
- turnOnMode('activeTableSelected');
- }
- $('.reservationStatus').html('' + lang('active_table', table.table_number.toString() + ''));
- updateCoverText(table);
- $('.selectedTableNumber').text(lang('active_table', table.table_number.toString()));
- setReservationStatus(table);
- const unmergeVisibility = table.merged_children ? 'visible' : 'hidden';
- $('.unmergeButton').css('visibility', unmergeVisibility);
- turnOnMode('tableSelected');
-};
-const updateCoverText = (table) => $('.selectedTableCovers').text(lang('covers', table.default_covers.toString()));
-const tableClicked = (event) => {
- let tableShape = getTableShapeFromGroup(event.currentTarget);
- const table = getTableDataFromShape(tableShape);
- if (isInMode('merge')) {
- mergeTables(getTableDataFromTableNumber(Floorplan.selectedTableNumber), table);
- return;
- }
- if (isInMode('transfer')) {
- transferTables(getTableDataFromTableNumber(Floorplan.selectedTableNumber), table);
- }
- const selectedTableNumber = Floorplan.selectedTableNumber;
- deselectTables();
- if (selectedTableNumber != table.table_number) {
- selectTable(tableShape);
- }
-};
-const createDecorationShape = (decoration, select) => {
- const draggable = isInMode('edit');
- const decorationShape = new Image();
- decorationShape.onload = () => {
- const decorationImage = new Konva.Image({
- id: decoration.id.toString(),
- x: decoration.decoration_pos_x * Floorplan.visualScale,
- y: decoration.decoration_pos_y * Floorplan.visualScale,
- image: decorationShape,
- offsetX: decoration.decoration_width * 0.5 * Floorplan.visualScale,
- offsetY: decoration.decoration_height * 0.5 * Floorplan.visualScale,
- rotation: decoration.decoration_rotation,
- width: decoration.decoration_width * Floorplan.visualScale,
- height: decoration.decoration_height * Floorplan.visualScale,
- draggable: draggable,
- });
- // add the shape to the layer
- Floorplan.tableLayer.add(decorationImage);
- Floorplan.tableLayer.draw();
- decorationImage.moveToBottom();
- setupDecorationEvents(decorationImage);
- if (select) {
- decorationImage.moveToTop();
- selectDecorationShape(decorationImage);
- }
- };
- decorationShape.src = 'images/decorations/' + decoration.decoration_image;
-};
-const setupDecorationEvents = (decorationShape) => {
- decorationShape.on('click', decorationClicked);
- decorationShape.on('tap', decorationClicked);
- decorationShape.on('transformend', decorationTransformed);
- decorationShape.on('dragend', decorationTransformed);
-};
-const decorationClicked = (event) => {
- let decorationShape = event.target;
- if (isInMode('edit')) {
- turnOffMode('tableSelected');
- if ((Floorplan.transformer.nodes().length > 0 && Floorplan.transformer.nodes()[0] != decorationShape) || Floorplan.transformer.nodes().length == 0) {
- selectDecorationShape(decorationShape);
- }
- else {
- deselectTables();
- decorationShape.moveToBottom();
- }
- }
-};
-const selectDecorationShape = (decorationShape) => {
- deselectTables();
- Floorplan.transformer.nodes([decorationShape]);
- Floorplan.selectedDecorationId = Number(decorationShape.id());
- decorationShape.moveToTop();
- Floorplan.transformer.moveToTop();
- turnOnMode('decorationSelected');
-};
-const getDecorationDataById = (id) => {
- return Floorplan.decorations.find(decoration => id == decoration.id);
-};
-const decorationTransformed = (event) => {
- let decorationShape = event.currentTarget;
- const oldDecorationData = getDecorationDataById(Number(decorationShape.id()));
- const newDecoration = {
- id: oldDecorationData.id,
- decoration_room: oldDecorationData.decoration_room,
- decoration_pos_x: Math.round(decorationShape.x() / Floorplan.visualScale),
- decoration_pos_y: Math.round(decorationShape.y() / Floorplan.visualScale),
- decoration_rotation: Math.round(decorationShape.rotation()),
- decoration_width: Math.round((decorationShape.scaleX() * decorationShape.width()) / Floorplan.visualScale),
- decoration_height: Math.round((decorationShape.scaleY() * decorationShape.height()) / Floorplan.visualScale),
- decoration_image: oldDecorationData.decoration_image,
- };
- saveDecoration(newDecoration);
-};
-const saveDecoration = (decorationToUpdate) => {
- const decorations = Floorplan
- .decorations
- .filter(decoration => {
- return decoration.id != decorationToUpdate.id;
- });
- decorations.push(decorationToUpdate);
- Floorplan.decorations = decorations;
- ajax("/ajax/updateDecoration", decorationToUpdate, 'post', null, null, null);
-};
-const showDecorator = () => $('#decorator').css('display', 'flex');
-const hideDecorator = () => $('#decorator').css('display', 'flex').hide();
-const addDecoration = (e) => {
- const button = $(e.currentTarget);
- const newDecoration = {
- id: 0,
- decoration_room: Floorplan.currentRoom.id,
- decoration_pos_x: Floorplan.visualScaleBasis / 2,
- decoration_pos_y: Floorplan.visualScaleBasis / 2,
- decoration_rotation: 0,
- decoration_width: 200,
- decoration_height: 200,
- decoration_image: button.data('image')
- };
- ajax('/ajax/addDecoration', newDecoration, 'post', decorationAdded, null, null);
-};
-const decorationAdded = (decoration) => {
- Floorplan.decorations.push(decoration);
- createDecorationShape(decoration, true);
- hideDecorator();
-};
-const deleteDecoration = () => ajax('/ajax/deleteDecoration', getDecorationDataById(Floorplan.selectedDecorationId), 'post', decorationDeleted, null, null);
-const decorationDeleted = (deletedDecoration) => {
- Floorplan.decorations = Floorplan.decorations.filter(decoration => decoration.id != deletedDecoration.id);
- const decorationShape = Floorplan.stage.findOne(`#${deletedDecoration.id}`);
- decorationShape.destroy();
- deselectTables();
-};
-const setRoomBackground = (roomToLoad) => {
- const width = Floorplan.floorplanDiv.width();
- const height = Floorplan.floorplanDiv.height();
- Floorplan.floorplanDiv.css("background-image", `url(images/rooms/${roomToLoad.background_image})`);
- Floorplan.floorplanDiv.css("background-size", `${width}px ${height}px`);
-};
-const setupKonva = () => {
- const dimensions = getDimensions();
- if (Floorplan.stage !== null)
- Floorplan.stage.destroy();
- Floorplan.stage = new Konva.Stage({
- container: 'floorplanCanvas',
- width: dimensions.width,
- height: dimensions.height,
- });
- Floorplan.stage.on('click', e => {
- if (e.target == Floorplan.stage) {
- deselectTables();
- }
- });
- Floorplan.transformer = new Konva.Transformer({
- rotationSnaps: [0, 15, 30, 45, 60, 75, 90, 105, 120, 135, 150, 165, 180, 225, 270, -15, -30, -45, -60, -75, -90, -105, -120, -135, -150, -165, -180, -225, -270, 360, -360],
- anchorSize: 30 * Floorplan.visualScale,
- ignoreStroke: true,
- centeredScaling: true,
- anchorCornerRadius: 10,
- });
- Floorplan.tableLayer = new Konva.Layer();
- Floorplan.tableLayer.add(Floorplan.transformer);
- Floorplan.stage.add(Floorplan.tableLayer);
-};
-const resetKonva = setupKonva;
-const changeTableShape = () => {
- if (!Floorplan.selectedTableNumber)
- return;
- const table = getTableDataFromTableNumber(Floorplan.selectedTableNumber);
- const tableGroup = getTableGroupFromTableNumber(table.table_number);
- const order = ['square', 'rect', 'longrect', 'diamond', 'circle', 'ellipse', 'longellipse'];
- if (order.indexOf(table.shape) === -1)
- table.shape = 'square';
- const currentIndex = order.indexOf(table.shape);
- let nextIndex = currentIndex + 1;
- if (nextIndex > (order.length) - 1)
- nextIndex = 0;
- table.shape = order[nextIndex];
- switch (table.shape) {
- case 'square':
- case 'circle':
- // noinspection JSSuspiciousNameCombination
- table.height = table.width;
- table.rotation = 0;
- break;
- case 'diamond':
- // noinspection JSSuspiciousNameCombination
- table.height = table.width;
- table.rotation = 45;
- break;
- case 'rect':
- case 'ellipse':
- table.height = table.width * 2;
- table.rotation = 0;
- break;
- case 'longrect':
- case 'longellipse':
- table.rotation = 90;
- break;
- }
- saveTable(table);
- deselectTables();
- redrawTable(tableGroup);
-};
-const redrawTable = (tableGroup) => {
- deselectTables();
- const draggable = tableGroup.draggable();
- const table = getTableDataFromGroup(tableGroup);
- tableGroup.destroy();
- const newTableGroup = createTableShape(table);
- const newTableShape = getTableShapeFromTableNumber(table.table_number);
- selectTable(newTableShape);
- newTableGroup.draggable(draggable);
-};
-const showAddTablePopup = () => showVirtualNumpad(lang('new_table_number'), 4, false, false, true, addTable);
-const addTable = (tableNumber) => {
- const newTable = {
- id: 0,
- table_number: tableNumber,
- room_id: Floorplan.currentRoom.id,
- default_covers: 2,
- width: 200,
- height: 200,
- rotation: 0,
- pos_x: Floorplan.visualScaleBasis / 2,
- pos_y: Floorplan.visualScaleBasis / 2,
- shape: 'square',
- merged_children: '',
- previous_state: '',
- status: 0,
- venue_id: 1
- };
- ajax('/ajax/createTable', newTable, 'post', tableAdded, tableNotAdded, null);
-};
-const tableAdded = (table) => {
- deselectTables();
- const newTableGroup = createTableShape(table);
- Floorplan.tables.push(table);
- selectTable(getTableShapeFromGroup(newTableGroup));
-};
-const tableNotAdded = (response) => {
- posAlert(response);
-};
-const confirmDeleteTable = () => confirmation(lang('confirm_delete_table', Floorplan.selectedTableNumber.toString()), Floorplan.selectedTableNumber, 'Confirm', deleteTable);
-const deleteTable = (tableNumber) => {
- if (!tableNumber)
- return false;
- const tableToDelete = getTableDataFromTableNumber(tableNumber);
- if (tableIsOpen(tableToDelete)) {
- posAlert(lang('error_delete_existing_table'));
- return false;
- }
- ajax(`/ajax/deleteTable`, tableToDelete, 'post', tableDeleted, null, null);
-};
-const tableDeleted = (deletedTable) => {
- Floorplan.tables = Floorplan.tables.filter(table => table.table_number != deletedTable.table_number);
- const tableGroup = getTableGroupFromTableNumber(deletedTable.table_number);
- deselectTables();
- tableGroup.destroy();
-};
-const toggleMergeMode = () => toggleMode('merge');
-const mergeTables = (table1, table2) => {
- toggleMergeMode();
- if (table1.table_number == table2.table_number) {
- posAlert(lang('error_self_merge'));
- return false;
- }
- ajax('/ajax/mergeTables', [table1, table2], 'post', tablesMerged, null, null);
-};
-const tablesMerged = (tables) => {
- tableDeleted(tables['child']);
- tableDeleted(tables['parent']);
- tableAdded(tables['merged']);
- deselectTables();
- const tableGroup = getTableGroupFromTableNumber(tables['merged'].table_number);
- selectTable(getTableShapeFromGroup(tableGroup));
- tableGroup.draggable(true);
-};
-const unmergeTable = () => ajax(`/ajax/unmergeTable/${Floorplan.selectedTableNumber}`, null, 'get', tablesUnmerged, null, null);
-const tablesUnmerged = (tables) => {
- const parentTable = tables['parent'];
- const childTable = tables['child'];
- tableDeleted(parentTable);
- tableAdded(parentTable);
- tableAdded(childTable);
- deselectTables();
-};
-const toggleTransferMode = () => toggleMode('transfer');
-const transferTables = (origin, destination) => {
- if (origin.table_number == destination.table_number) {
- posAlert(lang('transfer_self_error'));
- return;
- }
- ajax(`/ajax/transferTable/${origin.table_number}/${destination.table_number}`, null, 'get', tableTransferred, null, null);
-};
-const tableTransferred = (tables) => {
- const origin = tables['origin'];
- const destination = tables['destination'];
- Floorplan.activeTableNumbers = Floorplan.activeTableNumbers.filter(tableNumber => tableNumber != origin.table_number);
- Floorplan.activeTableNumbers.push(destination.table_number);
- if (Floorplan.currentRoom.id == origin.room_id) {
- redrawTable(getTableGroupFromTableNumber(origin.table_number));
- }
- redrawTable(getTableGroupFromTableNumber(destination.table_number));
-};
-const getDimensions = () => {
- Floorplan.floorplanDiv = $('#floorplanCanvas');
- const parentDiv = $('#floorplanCenterColumn .middleCell');
- const outerWidth = parentDiv.outerWidth();
- const outerHeight = parentDiv.outerHeight();
- if (outerWidth >= outerHeight) {
- Floorplan.floorplanDiv.css('height', '100%');
- }
- else {
- Floorplan.floorplanDiv.css('width', '100%');
- }
- Floorplan.visualScale = Floorplan.floorplanDiv.width() / Floorplan.visualScaleBasis;
- return { width: Floorplan.floorplanDiv.width(), height: Floorplan.floorplanDiv.height() };
-};
-//# sourceMappingURL=dredgepos.floorplan.js.map
\ No newline at end of file
diff --git a/wwwroot/scripts/js/dredgepos.floorplan.js.map b/wwwroot/scripts/js/dredgepos.floorplan.js.map
deleted file mode 100644
index 0f0e61d..0000000
--- a/wwwroot/scripts/js/dredgepos.floorplan.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"dredgepos.floorplan.js","sourceRoot":"","sources":["../ts/dredgepos.floorplan.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/wwwroot/scripts/js/keyboards.js b/wwwroot/scripts/js/keyboards.js
deleted file mode 100644
index c9b620b..0000000
--- a/wwwroot/scripts/js/keyboards.js
+++ /dev/null
@@ -1,224 +0,0 @@
-let showVirtualNumpad = (heading, maxlength = 4, isPassword, allowDecimals = true, allowClose = true, submitFunction) => {
- let numpad = $('#virtualNumpad');
- let inputBox = $('#virtualNumpadInput');
- let closeKeyboardButton = $('.closeKeyboards');
- numpad.css('display', 'flex');
- let showCloseButton = allowClose ? 'flex' : 'none';
- closeKeyboardButton.css('display', showCloseButton);
- $('#virtualNumpadHeading').html(heading);
- /*
- The numpad always submits to a function.
- If a function isn't specified, it will submit
- to the same function that called it
- */
- numpad.data('value', '');
- inputBox.text('');
- numpad.data('maxlength', maxlength);
- numpad.data('submitfunction', submitFunction);
- numpad.data('password', isPassword);
- numpad.data('allowdecimals', allowDecimals);
- $(document).off('keyup');
- $(document).on('keyup', e => {
- let key = e.key;
- switch (key) {
- case 'Backspace':
- case 'Delete':
- key = 'clear';
- break;
- case 'Enter':
- key = 'submit';
- break;
- }
- virtualNumpadInput(key);
- });
-};
-let hideVirtualKeyboard = () => {
- let keyboard = $('#virtualKeyboard');
- keyboard.hide();
- $('#virtualKeyboardHeading').html('');
- $(document).unbind('keyup');
-};
-let hideVirtualNumpad = () => {
- let numpad = $('#virtualNumpad');
- numpad.css('display', 'none');
- $('#virtualNumpadHeading').html('');
- $(document).unbind('keyup');
-};
-let virtualNumpadInput = (input) => {
- let inputBox = $('#virtualNumpadInput');
- let numpad = $('#virtualNumpad');
- let maxlength = numpad.data('maxlength');
- let allowDecimals = numpad.data('allowdecimals');
- let submitFunction = numpad.data('submitfunction');
- let allowedValues = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'submit', 'clear'];
- let currentValue = numpad.data('value').toString();
- if (allowDecimals)
- allowedValues.push('.', ',');
- let validInput = allowedValues.includes(input);
- //If the input is a valid number, decimal point or command.
- if (validInput) {
- switch (input) {
- case 'submit':
- hideVirtualNumpad();
- let numpadValue = numpad.data('value').length > 0 ? numpad.data('value') : "0";
- submitFunction(numpadValue);
- break;
- case 'clear':
- clearNumpadInput();
- break;
- default:
- let newText = currentValue + input;
- let isPassword = numpad.data('password');
- let length = input.length + inputBox.text().length;
- if (length <= maxlength) {
- inputBox.append(isPassword ? '*' : input);
- numpad.data('value', newText);
- }
- }
- }
-};
-let clearNumpadInput = () => {
- $('#virtualNumpadInput').text("");
- $('#virtualNumpad').data('value', '');
-};
-let setupVirtualNumpad = () => {
- $(document).on('click', '.virtualNumpadButton', e => {
- virtualNumpadInput($(e.target).data('value').toString());
- });
- $('.closeKeyboards').on('click', () => {
- hideVirtualKeyboard();
- hideVirtualNumpad();
- });
-};
-let setupVirtualKeyboard = (keyboardLayouts) => {
- Application.keyboard = {
- capsLock: false,
- shift: false,
- layouts: keyboardLayouts,
- currentLayout: 'default',
- };
- $(document).on('click', '.virtualKeyboardButton', e => {
- virtualKeyboardInput($(e.target).data('value'));
- });
- $(document).on('click', '.forceFocus', (e) => {
- $('#virtualKeyboardInput').trigger('focus');
- });
- setKeyboardLayout('default');
-};
-let showVirtualKeyboard = (heading, maxlength = 32, isPassword = false, submitFunction = () => { hideVirtualKeyboard(); }) => {
- let keyboard = $('#virtualKeyboard');
- let inputBox = $('#virtualKeyboardInput');
- keyboard.css('display', 'flex');
- $('#virtualKeyboardHeading').html(heading);
- $('.forceFocus').trigger('click');
- keyboard.data('value', '');
- inputBox.val('');
- keyboard.data('maxlength', maxlength);
- keyboard.data('password', isPassword);
- keyboard.data('submitfunction', submitFunction);
- inputBox.attr('autofocus', 'autofocus');
- inputBox.trigger('focus');
- inputBox.trigger('click');
- inputBox.trigger('select');
- $(document).on('keyup', e => {
- let key = e.key;
- if (key == 'Enter' && inputBox.val().toString().length > 0) {
- key = 'submit';
- virtualKeyboardInput(key);
- }
- });
-};
-let virtualKeyboardInput = (input) => {
- let inputBox = $('#virtualKeyboardInput');
- let keyboard = $('#virtualKeyboard');
- let maxlength = keyboard.data('maxlength');
- let isPassword = keyboard.data('password');
- let length = input.length + inputBox.text().length;
- switch (input.toLowerCase()) {
- case 'backspace':
- case 'delete':
- let newText = inputBox.text().slice(0, -1);
- inputBox.val(newText);
- keyboard.data('value', newText);
- break;
- case 'submit':
- hideVirtualKeyboard();
- let submitFunction = keyboard.data('submitfunction');
- submitFunction(inputBox.val());
- break;
- case 'shift':
- if (Application.keyboard.capsLock)
- break;
- Application.keyboard.shift = !Application.keyboard.shift;
- Application.keyboard.capsLock = false;
- setKeyboardLayout('default', Application.keyboard.shift ? 'shift' : '');
- break;
- case 'capslock':
- Application.keyboard.shift = false;
- Application.keyboard.capsLock = !Application.keyboard.capsLock;
- let capsLockButton = $('[data-value="capslock"]');
- capsLockButton.toggleClass('active');
- setKeyboardLayout('default', Application.keyboard.capsLock ? 'shift' : '');
- break;
- case 'space':
- input = ' ';
- break;
- }
- //Stops keys such as F5 being pressed.
- if (input.length == 1) {
- if (Application.keyboard.shift || Application.keyboard.capsLock) {
- input = input.toUpperCase();
- //If shift, reload lowercase
- if (Application.keyboard.shift) {
- Application.keyboard.shift = false;
- setKeyboardLayout('default');
- }
- }
- let newText = inputBox.val() + input;
- keyboard.data('value', newText);
- inputBox.val(newText);
- }
-};
-let setKeyboardLayout = (layout, modifier = '') => {
- if (modifier != '')
- modifier = `_${modifier}`;
- Application.keyboard.currentLayout = layout;
- let layoutToLoad = Application.keyboard.layouts[layout];
- $('.virtualKeyboardRow').each((index, row) => {
- /*
- We start at 1 instead of 0. Makes it easier for non-programmers
- and translators making their own language packs
- */
- index = index + 1;
- // @ts-ignore
- let currentRow = layoutToLoad[`row${index}${modifier}`];
- $(row).children('a').each((keyIndex, button) => {
- let key = $(button);
- let keyValue = currentRow[keyIndex];
- /*
- KeyText is the text that appears
- in the button. KeyData is the value
- submitted when the button is pressed.
- */
- let keyText = keyValue;
- let keyData = keyValue;
- key.addClass('posButton');
- key.addClass('virtualKeyboardButton');
- let pattern = new RegExp(/\[([^)]+)\]/);
- let matches = keyValue.match(pattern);
- if (matches) {
- keyText = keyValue.replace(pattern, '');
- keyData = matches[1];
- }
- key.html(keyText);
- //Use attr() as some keys have CSS dependent on data-value
- key.attr('data-value', keyData);
- key.data('value', keyData);
- });
- });
-};
-$(() => {
- setupVirtualNumpad();
- ajax('/ajax/getKeyboardLayout/english', null, 'get', setupVirtualKeyboard, null, null);
-});
-//# sourceMappingURL=keyboards.js.map
\ No newline at end of file
diff --git a/wwwroot/scripts/js/keyboards.js.map b/wwwroot/scripts/js/keyboards.js.map
deleted file mode 100644
index 6013174..0000000
--- a/wwwroot/scripts/js/keyboards.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"keyboards.js","sourceRoot":"","sources":["../ts/keyboards.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/wwwroot/scripts/js/test.js b/wwwroot/scripts/js/test.js
deleted file mode 100644
index 6f3fefb..0000000
--- a/wwwroot/scripts/js/test.js
+++ /dev/null
@@ -1 +0,0 @@
-//# sourceMappingURL=test.js.map
\ No newline at end of file
diff --git a/wwwroot/scripts/js/test.js.map b/wwwroot/scripts/js/test.js.map
deleted file mode 100644
index 79b94d2..0000000
--- a/wwwroot/scripts/js/test.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"test.js","sourceRoot":"","sources":["../ts/test.ts"],"names":[],"mappings":""}
\ No newline at end of file
diff --git a/wwwroot/scripts/js/types.js b/wwwroot/scripts/js/types.js
deleted file mode 100644
index 5b2306a..0000000
--- a/wwwroot/scripts/js/types.js
+++ /dev/null
@@ -1 +0,0 @@
-//# sourceMappingURL=types.js.map
\ No newline at end of file
diff --git a/wwwroot/scripts/js/types.js.map b/wwwroot/scripts/js/types.js.map
deleted file mode 100644
index e30582c..0000000
--- a/wwwroot/scripts/js/types.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"file":"types.js","sourceRoot":"","sources":["../ts/types.ts"],"names":[],"mappings":""}
\ No newline at end of file