From 099cbfdf75ed949b4fd993ce155f03905644ae66 Mon Sep 17 00:00:00 2001 From: Pax1601 Date: Sun, 24 Sep 2023 20:03:21 +0200 Subject: [PATCH] Added more code to handle loadouts --- client/.vscode/launch.json | 14 +- client/@types/olympus/index.d.ts | 32 +++- client/package.json | 1 + .../databasemanager/.vscode/launch.json | 20 +++ .../databasemanager/.vscode/tasks.json | 13 ++ client/plugins/databasemanager/copy.bat | 1 - client/plugins/databasemanager/index.js | 110 ++++++++---- .../plugins/databasemanager/package-lock.json | 161 +----------------- client/plugins/databasemanager/package.json | 5 +- .../databasemanager/src/airuniteditor.ts | 41 +++++ .../src/databasemanagerplugin.ts | 57 +++---- .../databasemanager/src/loadouteditor.ts | 45 +++++ .../plugins/databasemanager/src/uniteditor.ts | 65 +++++++ client/plugins/databasemanager/style.css | 12 +- client/plugins/databasemanager/tsconfig.json | 5 +- client/src/interfaces.ts | 2 +- client/tsconfig.json | 4 +- 17 files changed, 340 insertions(+), 248 deletions(-) create mode 100644 client/plugins/databasemanager/.vscode/launch.json create mode 100644 client/plugins/databasemanager/.vscode/tasks.json create mode 100644 client/plugins/databasemanager/src/airuniteditor.ts create mode 100644 client/plugins/databasemanager/src/loadouteditor.ts create mode 100644 client/plugins/databasemanager/src/uniteditor.ts diff --git a/client/.vscode/launch.json b/client/.vscode/launch.json index e184155a..c3765af0 100644 --- a/client/.vscode/launch.json +++ b/client/.vscode/launch.json @@ -4,17 +4,6 @@ // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ - { - "name": "Attach to Chrome", - "port": 9222, - "urlFilter": "http://localhost:3000/*", - "request": "attach", - "type": "chrome", - "webRoot": "${workspaceFolder}/public/", - "sourceMapPathOverrides": { - "src/*": "${workspaceFolder}/src/*" - } - }, { "type": "chrome", "request": "launch", @@ -24,7 +13,8 @@ "sourceMapPathOverrides": { "src/*": "${workspaceFolder}/src/*" }, - "preLaunchTask": "server" + "preLaunchTask": "server", + "port": 9222 } ] } \ No newline at end of file diff --git a/client/@types/olympus/index.d.ts b/client/@types/olympus/index.d.ts index 75512d09..202f47d0 100644 --- a/client/@types/olympus/index.d.ts +++ b/client/@types/olympus/index.d.ts @@ -1,7 +1,3 @@ -declare module "index" { - import { OlympusApp } from "app"; - export function getApp(): OlympusApp; -} declare module "map/boxselect" { export var BoxSelect: (new (...args: any[]) => any) & typeof import("leaflet").Class; } @@ -338,7 +334,7 @@ declare module "mission/airbase" { } declare module "interfaces" { import { LatLng } from "leaflet"; - import { OlympusApp } from "app"; + import { OlympusApp } from "olympusapp"; import { Airbase } from "mission/airbase"; export interface OlympusPlugin { getName: () => string; @@ -1947,7 +1943,7 @@ declare module "server/servermanager" { getPaused(): boolean; } } -declare module "app" { +declare module "olympusapp" { import { Map } from "map/map"; import { MissionManager } from "mission/missionmanager"; import { PluginsManager } from "plugin/pluginmanager"; @@ -1979,6 +1975,26 @@ declare module "app" { * @returns The active coalition */ getActiveCoalition(): string; + /** + * + * @returns The aircraft database + */ + getAircraftDatabase(): import("unit/databases/aircraftdatabase").AircraftDatabase; + /** + * + * @returns The helicopter database + */ + getHelicopterDatabase(): import("unit/databases/helicopterdatabase").HelicopterDatabase; + /** + * + * @returns The ground unit database + */ + getGroundUnitDatabase(): import("unit/databases/groundunitdatabase").GroundUnitDatabase; + /** + * + * @returns The navy unit database + */ + getNavyUnitDatabase(): import("unit/databases/navyunitdatabase").NavyUnitDatabase; /** Set a message in the login splash screen * * @param status The message to show in the login splash screen @@ -1987,3 +2003,7 @@ declare module "app" { start(): void; } } +declare module "index" { + import { OlympusApp } from "olympusapp"; + export function getApp(): OlympusApp; +} diff --git a/client/package.json b/client/package.json index 69c7c9fe..f19df71e 100644 --- a/client/package.json +++ b/client/package.json @@ -5,6 +5,7 @@ "version": "v0.4.4-alpha", "private": true, "scripts": { + "emit-declarations": "tsc --project tsconfig.json --declaration --emitDeclarationOnly --outfile ./@types/olympus/index.d.ts", "copy": "copy.bat", "start": "npm run copy & concurrently --kill-others \"npm run watch\" \"nodemon ./bin/www\"", "watch": "watchify .\\src\\index.ts --debug -o .\\public\\javascripts\\bundle.js -t [ babelify --global true --presets [ @babel/preset-env ] --extensions '.js'] -p [ tsify --noImplicitAny ]" diff --git a/client/plugins/databasemanager/.vscode/launch.json b/client/plugins/databasemanager/.vscode/launch.json new file mode 100644 index 00000000..3fb02a39 --- /dev/null +++ b/client/plugins/databasemanager/.vscode/launch.json @@ -0,0 +1,20 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Attach to Chrome", + "port": 9222, + "urlFilter": "http://localhost:3000/*", + "request": "attach", + "type": "chrome", + "webRoot": "${workspaceFolder}../../public/", + "sourceMapPathOverrides": { + "src/*": "src/*" + }, + "preLaunchTask": "start" + } + ] +} \ No newline at end of file diff --git a/client/plugins/databasemanager/.vscode/tasks.json b/client/plugins/databasemanager/.vscode/tasks.json new file mode 100644 index 00000000..fdd8289c --- /dev/null +++ b/client/plugins/databasemanager/.vscode/tasks.json @@ -0,0 +1,13 @@ +{ + // See https://go.microsoft.com/fwlink/?LinkId=733558 + // for the documentation about the tasks.json format + "version": "2.0.0", + "tasks": [ + { + "label": "start", + "type": "shell", + "command": "npm run start", + "isBackground": true + } + ] +} \ No newline at end of file diff --git a/client/plugins/databasemanager/copy.bat b/client/plugins/databasemanager/copy.bat index 34127e37..f385d480 100644 --- a/client/plugins/databasemanager/copy.bat +++ b/client/plugins/databasemanager/copy.bat @@ -1,5 +1,4 @@ mkdir .\\..\\..\\public\\plugins\\databasemanager -copy .\\index.js .\\..\\..\\public\\plugins\\databasemanager\\index.js copy .\\plugin.json .\\..\\..\\public\\plugins\\databasemanager\\plugin.json copy .\\style.css .\\..\\..\\public\\plugins\\databasemanager\\style.css \ No newline at end of file diff --git a/client/plugins/databasemanager/index.js b/client/plugins/databasemanager/index.js index 36e2c0b7..1c06144c 100644 --- a/client/plugins/databasemanager/index.js +++ b/client/plugins/databasemanager/index.js @@ -1,5 +1,22 @@ (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i { return false; }; @@ -33,19 +50,18 @@ class DatabaseManagerPlugin { __classPrivateFieldSet(this, _DatabaseManagerPlugin_contentDiv, document.createElement("div"), "f"); __classPrivateFieldGet(this, _DatabaseManagerPlugin_contentDiv, "f").classList.add("dc-content-container"); __classPrivateFieldGet(this, _DatabaseManagerPlugin_element, "f").appendChild(__classPrivateFieldGet(this, _DatabaseManagerPlugin_contentDiv, "f")); + __classPrivateFieldSet(this, _DatabaseManagerPlugin_aircraftEditor, new airuniteditor_1.AirUnitEditor(__classPrivateFieldGet(this, _DatabaseManagerPlugin_scrollDiv, "f"), __classPrivateFieldGet(this, _DatabaseManagerPlugin_contentDiv, "f")), "f"); } getName() { return "Database Control Plugin"; } initialize(app) { + var _a; __classPrivateFieldSet(this, _DatabaseManagerPlugin_app, app, "f"); - var aircraftDatabase = __classPrivateFieldGet(this, _DatabaseManagerPlugin_app, "f").getAircraftDatabase(); - var blueprints = aircraftDatabase.getBlueprints(); - for (let key in blueprints) { - var div = document.createElement("div"); - __classPrivateFieldGet(this, _DatabaseManagerPlugin_scrollDiv, "f").appendChild(div); - div.textContent = key; - div.onclick = () => __classPrivateFieldGet(this, _DatabaseManagerPlugin_instances, "m", _DatabaseManagerPlugin_setContent).call(this, blueprints[key]); + var aircraftDatabase = (_a = __classPrivateFieldGet(this, _DatabaseManagerPlugin_app, "f")) === null || _a === void 0 ? void 0 : _a.getAircraftDatabase(); + if (aircraftDatabase != null) { + __classPrivateFieldGet(this, _DatabaseManagerPlugin_aircraftEditor, "f").setDatabase(aircraftDatabase); + __classPrivateFieldGet(this, _DatabaseManagerPlugin_aircraftEditor, "f").show(); } return true; } @@ -57,29 +73,61 @@ class DatabaseManagerPlugin { } } exports.DatabaseManagerPlugin = DatabaseManagerPlugin; -_DatabaseManagerPlugin_element = new WeakMap(), _DatabaseManagerPlugin_app = new WeakMap(), _DatabaseManagerPlugin_scrollDiv = new WeakMap(), _DatabaseManagerPlugin_contentDiv = new WeakMap(), _DatabaseManagerPlugin_instances = new WeakSet(), _DatabaseManagerPlugin_setContent = function _DatabaseManagerPlugin_setContent(blueprint) { - __classPrivateFieldGet(this, _DatabaseManagerPlugin_contentDiv, "f").replaceChildren(); - for (var key in blueprint) { - if (typeof blueprint[key] === "string") { - var dt = document.createElement("dt"); - var dd = document.createElement("dd"); - dt.innerText = key; - var input = document.createElement("input"); - input.value = blueprint[key]; - input.textContent = blueprint[key]; - dd.appendChild(input); - __classPrivateFieldGet(this, _DatabaseManagerPlugin_contentDiv, "f").appendChild(dt); - __classPrivateFieldGet(this, _DatabaseManagerPlugin_contentDiv, "f").appendChild(dd); - } - } -}; - -},{}],2:[function(require,module,exports){ +_DatabaseManagerPlugin_app = new WeakMap(), _DatabaseManagerPlugin_element = new WeakMap(), _DatabaseManagerPlugin_scrollDiv = new WeakMap(), _DatabaseManagerPlugin_contentDiv = new WeakMap(), _DatabaseManagerPlugin_aircraftEditor = new WeakMap(); +},{"./airuniteditor":1}],3:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const databasemanagerplugin_1 = require("./databasemanagerplugin"); globalThis.getOlympusPlugin = () => { return new databasemanagerplugin_1.DatabaseManagerPlugin(); }; - -},{"./databasemanagerplugin":1}]},{},[2]); +},{"./databasemanagerplugin":2}],4:[function(require,module,exports){ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.UnitEditor = void 0; +class UnitEditor { + constructor(scrollDiv, contentDiv) { + this.database = null; + this.scrollDiv = scrollDiv; + this.contentDiv = contentDiv; + } + setDatabase(database) { + this.database = database; + } + show() { + if (this.database !== null) { + var blueprints = this.database.getBlueprints(); + for (let key in blueprints) { + var div = document.createElement("div"); + this.scrollDiv.appendChild(div); + div.textContent = key; + div.onclick = () => this.setContent(blueprints[key]); + } + } + } + addStringInput(key, value) { + var dt = document.createElement("dt"); + var dd = document.createElement("dd"); + dt.innerText = key; + var input = document.createElement("input"); + input.value = value; + input.textContent = value; + dd.appendChild(input); + this.contentDiv.appendChild(dt); + this.contentDiv.appendChild(dd); + } + addDropdownInput(key, value, options) { + var dt = document.createElement("dt"); + var dd = document.createElement("dd"); + dt.innerText = key; + var input = document.createElement("input"); + input.value = value; + input.textContent = value; + dd.appendChild(input); + this.contentDiv.appendChild(dt); + this.contentDiv.appendChild(dd); + } +} +exports.UnitEditor = UnitEditor; +},{}]},{},[3]) +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL25vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJzcmMvYWlydW5pdGVkaXRvci50cyIsInNyYy9kYXRhYmFzZW1hbmFnZXJwbHVnaW4udHMiLCJzcmMvaW5kZXgudHMiLCJzcmMvdW5pdGVkaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztBQ0NBLDZDQUEwQztBQUUxQyxNQUFhLGFBQWMsU0FBUSx1QkFBVTtJQUN6QyxZQUFZLFNBQXNCLEVBQUUsVUFBdUI7UUFDdkQsS0FBSyxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsVUFBVSxDQUFDLFNBQXdCO1FBQy9CLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFbEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDN0QsQ0FBQztDQUNKO0FBWkQsc0NBWUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDZEQsbURBQWdEO0FBR2hELE1BQWEscUJBQXFCO0lBUzlCO1FBUkEscUNBQTBCLElBQUksRUFBQztRQUUvQixpREFBc0I7UUFDdEIsbURBQXdCO1FBQ3hCLG9EQUF5QjtRQUV6Qix3REFBK0I7UUFHM0IsdUJBQUEsSUFBSSxrQ0FBWSxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFBLENBQUM7UUFDOUMsdUJBQUEsSUFBSSxzQ0FBUyxDQUFDLEVBQUUsR0FBRyx3QkFBd0IsQ0FBQztRQUM1Qyx1QkFBQSxJQUFJLHNDQUFTLENBQUMsYUFBYSxHQUFHLEdBQUcsRUFBRSxHQUFHLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxD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Q0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7Q0FJSjtBQXJERCxnQ0FxREMiLCJmaWxlIjoiZ2VuZXJhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbigpe2Z1bmN0aW9uIHIoZSxuLHQpe2Z1bmN0aW9uIG8oaSxmKXtpZighbltpXSl7aWYoIWVbaV0pe3ZhciBjPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmU7aWYoIWYmJmMpcmV0dXJuIGMoaSwhMCk7aWYodSlyZXR1cm4gdShpLCEwKTt2YXIgYT1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK2krXCInXCIpO3Rocm93IGEuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixhfXZhciBwPW5baV09e2V4cG9ydHM6e319O2VbaV1bMF0uY2FsbChwLmV4cG9ydHMsZnVuY3Rpb24ocil7dmFyIG49ZVtpXVsxXVtyXTtyZXR1cm4gbyhufHxyKX0scCxwLmV4cG9ydHMscixlLG4sdCl9cmV0dXJuIG5baV0uZXhwb3J0c31mb3IodmFyIHU9XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZSxpPTA7aTx0Lmxlbmd0aDtpKyspbyh0W2ldKTtyZXR1cm4gb31yZXR1cm4gcn0pKCkiLCJpbXBvcnQgeyBVbml0Qmx1ZXByaW50IH0gZnJvbSBcImludGVyZmFjZXNcIjtcclxuaW1wb3J0IHsgVW5pdEVkaXRvciB9IGZyb20gXCIuL3VuaXRlZGl0b3JcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBBaXJVbml0RWRpdG9yIGV4dGVuZHMgVW5pdEVkaXRvciB7XHJcbiAgICBjb25zdHJ1Y3RvcihzY3JvbGxEaXY6IEhUTUxFbGVtZW50LCBjb250ZW50RGl2OiBIVE1MRWxlbWVudCkge1xyXG4gICAgICAgIHN1cGVyKHNjcm9sbERpdiwgY29udGVudERpdik7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0Q29udGVudChibHVlcHJpbnQ6IFVuaXRCbHVlcHJpbnQpIHtcclxuICAgICAgICB0aGlzLmNvbnRlbnREaXYucmVwbGFjZUNoaWxkcmVuKCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy5hZGRTdHJpbmdJbnB1dChcIk5hbWVcIiwgYmx1ZXByaW50Lm5hbWUpO1xyXG4gICAgICAgIHRoaXMuYWRkU3RyaW5nSW5wdXQoXCJMYWJlbFwiLCBibHVlcHJpbnQubGFiZWwpO1xyXG4gICAgICAgIHRoaXMuYWRkU3RyaW5nSW5wdXQoXCJTaG9ydCBsYWJlbFwiLCBibHVlcHJpbnQuc2hvcnRMYWJlbCk7XHJcbiAgICB9XHJcbn1cclxuIiwiaW1wb3J0IHsgT2x5bXB1c1BsdWdpbiB9IGZyb20gXCJpbnRlcmZhY2VzXCI7XHJcbmltcG9ydCB7IEFpclVuaXRFZGl0b3IgfSBmcm9tIFwiLi9haXJ1bml0ZWRpdG9yXCI7XHJcbmltcG9ydCB7IE9seW1wdXNBcHAgfSBmcm9tIFwib2x5bXB1c2FwcFwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIERhdGFiYXNlTWFuYWdlclBsdWdpbiBpbXBsZW1lbnRzIE9seW1wdXNQbHVnaW4ge1xyXG4gICAgI2FwcDogT2x5bXB1c0FwcCB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgICNlbGVtZW50OiBIVE1MRWxlbWVudDtcclxuICAgICNzY3JvbGxEaXY6IEhUTUxFbGVtZW50O1xyXG4gICAgI2NvbnRlbnREaXY6IEhUTUxFbGVtZW50O1xyXG5cclxuICAgICNhaXJjcmFmdEVkaXRvcjogQWlyVW5pdEVkaXRvcjtcclxuICAgICAgICBcclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHRoaXMuI2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG4gICAgICAgIHRoaXMuI2VsZW1lbnQuaWQgPSBcImRhdGFiYXNlLWNvbnRyb2wtcGFuZWxcIjtcclxuICAgICAgICB0aGlzLiNlbGVtZW50Lm9uY29udGV4dG1lbnUgPSAoKSA9PiB7IHJldHVybiBmYWxzZTsgfVxyXG4gICAgICAgIHRoaXMuI2VsZW1lbnQuY2xhc3NMaXN0LmFkZChcIm9sLWRpYWxvZ1wiKTtcclxuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMuI2VsZW1lbnQpO1xyXG5cclxuICAgICAgICB0aGlzLiNzY3JvbGxEaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG4gICAgICAgIHRoaXMuI3Njcm9sbERpdi5jbGFzc0xpc3QuYWRkKFwiZGMtc2Nyb2xsLWNvbnRhaW5lclwiKTtcclxuICAgICAgICB0aGlzLiNlbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuI3Njcm9sbERpdik7XHJcblxyXG4gICAgICAgIHRoaXMuI2NvbnRlbnREaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG4gICAgICAgIHRoaXMuI2NvbnRlbnREaXYuY2xhc3NMaXN0LmFkZChcImRjLWNvbnRlbnQtY29udGFpbmVyXCIpO1xyXG4gICAgICAgIHRoaXMuI2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy4jY29udGVudERpdik7XHJcblxyXG4gICAgICAgIHRoaXMuI2FpcmNyYWZ0RWRpdG9yID0gbmV3IEFpclVuaXRFZGl0b3IodGhpcy4jc2Nyb2xsRGl2LCB0aGlzLiNjb250ZW50RGl2KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXROYW1lKCkge1xyXG4gICAgICAgIHJldHVybiBcIkRhdGFiYXNlIENvbnRyb2wgUGx1Z2luXCJcclxuICAgIH1cclxuXHJcbiAgICBpbml0aWFsaXplKGFwcDogYW55KSB7XHJcbiAgICAgICAgdGhpcy4jYXBwID0gYXBwO1xyXG4gICAgICAgIFxyXG4gICAgICAgIHZhciBhaXJjcmFmdERhdGFiYXNlID0gdGhpcy4jYXBwPy5nZXRBaXJjcmFmdERhdGFiYXNlKCk7XHJcbiAgICAgICAgaWYgKGFpcmNyYWZ0RGF0YWJhc2UgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLiNhaXJjcmFmdEVkaXRvci5zZXREYXRhYmFzZShhaXJjcmFmdERhdGFiYXNlKTtcclxuICAgICAgICAgICAgdGhpcy4jYWlyY3JhZnRFZGl0b3Iuc2hvdygpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RWxlbWVudCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy4jZWxlbWVudDtcclxuICAgIH1cclxuXHJcbiAgICB0b2dnbGUoYm9vbD86IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLmdldEVsZW1lbnQoKS5jbGFzc0xpc3QudG9nZ2xlKFwiaGlkZVwiLCBib29sKTtcclxuICAgIH1cclxufSIsImltcG9ydCB7IERhdGFiYXNlTWFuYWdlclBsdWdpbiB9IGZyb20gXCIuL2RhdGFiYXNlbWFuYWdlcnBsdWdpblwiO1xyXG5cclxuZ2xvYmFsVGhpcy5nZXRPbHltcHVzUGx1Z2luID0gKCkgPT4ge1xyXG4gICAgcmV0dXJuIG5ldyBEYXRhYmFzZU1hbmFnZXJQbHVnaW4oKTtcclxufSIsImltcG9ydCB7IFVuaXRCbHVlcHJpbnQgfSBmcm9tIFwiaW50ZXJmYWNlc1wiO1xyXG5pbXBvcnQgeyBVbml0RGF0YWJhc2UgfSBmcm9tIFwidW5pdC9kYXRhYmFzZXMvdW5pdGRhdGFiYXNlXCI7XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVW5pdEVkaXRvciB7XHJcbiAgICBkYXRhYmFzZTogVW5pdERhdGFiYXNlIHwgbnVsbCA9IG51bGw7XHJcbiAgICBzY3JvbGxEaXY6IEhUTUxFbGVtZW50O1xyXG4gICAgY29udGVudERpdjogSFRNTEVsZW1lbnQ7XHJcblxyXG4gICAgY29uc3RydWN0b3Ioc2Nyb2xsRGl2OiBIVE1MRWxlbWVudCwgY29udGVudERpdjogSFRNTEVsZW1lbnQpIHtcclxuICAgICAgICB0aGlzLnNjcm9sbERpdiA9IHNjcm9sbERpdjtcclxuICAgICAgICB0aGlzLmNvbnRlbnREaXYgPSBjb250ZW50RGl2O1xyXG4gICAgfVxyXG5cclxuICAgIHNldERhdGFiYXNlKGRhdGFiYXNlOiBhbnkpIHtcclxuICAgICAgICB0aGlzLmRhdGFiYXNlID0gZGF0YWJhc2U7XHJcbiAgICB9XHJcblxyXG4gICAgc2hvdygpIHtcclxuICAgICAgICBpZiAodGhpcy5kYXRhYmFzZSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICB2YXIgYmx1ZXByaW50czoge1trZXk6IHN0cmluZ106IFVuaXRCbHVlcHJpbnR9ID0gdGhpcy5kYXRhYmFzZS5nZXRCbHVlcHJpbnRzKCk7XHJcblxyXG4gICAgICAgICAgICBmb3IgKGxldCBrZXkgaW4gYmx1ZXByaW50cykge1xyXG4gICAgICAgICAgICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbERpdi5hcHBlbmRDaGlsZChkaXYpO1xyXG4gICAgICAgICAgICAgICAgZGl2LnRleHRDb250ZW50ID0ga2V5O1xyXG4gICAgICAgICAgICAgICAgZGl2Lm9uY2xpY2sgPSAoKSA9PiB0aGlzLnNldENvbnRlbnQoYmx1ZXByaW50c1trZXldKTtcclxuICAgICAgICAgICAgfSAgICAgIFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhZGRTdHJpbmdJbnB1dChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xyXG4gICAgICAgIHZhciBkdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkdFwiKTtcclxuICAgICAgICB2YXIgZGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGRcIik7XHJcbiAgICAgICAgZHQuaW5uZXJUZXh0ID0ga2V5O1xyXG4gICAgICAgIHZhciBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiKTtcclxuICAgICAgICBpbnB1dC52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgIGlucHV0LnRleHRDb250ZW50ID0gdmFsdWU7XHJcbiAgICAgICAgZGQuYXBwZW5kQ2hpbGQoaW5wdXQpO1xyXG4gICAgICAgIHRoaXMuY29udGVudERpdi5hcHBlbmRDaGlsZChkdCk7XHJcbiAgICAgICAgdGhpcy5jb250ZW50RGl2LmFwcGVuZENoaWxkKGRkKTtcclxuICAgIH1cclxuXHJcbiAgICBhZGREcm9wZG93bklucHV0KGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBvcHRpb25zOiBzdHJpbmdbXSkge1xyXG4gICAgICAgIHZhciBkdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkdFwiKTtcclxuICAgICAgICB2YXIgZGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGRcIik7XHJcbiAgICAgICAgZHQuaW5uZXJUZXh0ID0ga2V5O1xyXG4gICAgICAgIHZhciBpbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiKTtcclxuICAgICAgICBpbnB1dC52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgIGlucHV0LnRleHRDb250ZW50ID0gdmFsdWU7XHJcbiAgICAgICAgZGQuYXBwZW5kQ2hpbGQoaW5wdXQpO1xyXG4gICAgICAgIHRoaXMuY29udGVudERpdi5hcHBlbmRDaGlsZChkdCk7XHJcbiAgICAgICAgdGhpcy5jb250ZW50RGl2LmFwcGVuZENoaWxkKGRkKTtcclxuICAgIH1cclxuXHJcbiAgICBhYnN0cmFjdCBzZXRDb250ZW50KGJsdWVwcmludDogVW5pdEJsdWVwcmludCk6IHZvaWQ7XHJcbiAgICBcclxufSJdfQ== diff --git a/client/plugins/databasemanager/package-lock.json b/client/plugins/databasemanager/package-lock.json index 1212aee1..7d12735b 100644 --- a/client/plugins/databasemanager/package-lock.json +++ b/client/plugins/databasemanager/package-lock.json @@ -1,162 +1,13 @@ { "name": "DatabaseManagerPlugin", "version": "v0.0.1", - "lockfileVersion": 1, + "lockfileVersion": 3, "requires": true, - "dependencies": { - "any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" - }, - "convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==" - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", - "requires": { - "error-ex": "^1.2.0" - } - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", - "requires": { - "is-utf8": "^0.2.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==" - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "tsconfig": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/tsconfig/-/tsconfig-5.0.3.tgz", - "integrity": "sha512-Cq65A3kVp6BbsUgg9DRHafaGmbMb9EhAc7fjWvudNWKjkbWrt43FnrtZt6awshH1R0ocfF2Z0uxock3lVqEgOg==", - "requires": { - "any-promise": "^1.3.0", - "parse-json": "^2.2.0", - "strip-bom": "^2.0.0", - "strip-json-comments": "^2.0.0" - } - }, - "tsify": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/tsify/-/tsify-5.0.4.tgz", - "integrity": "sha512-XAZtQ5OMPsJFclkZ9xMZWkSNyMhMxEPsz3D2zu79yoKorH9j/DT4xCloJeXk5+cDhosEibu4bseMVjyPOAyLJA==", - "requires": { - "convert-source-map": "^1.1.0", - "fs.realpath": "^1.0.0", - "object-assign": "^4.1.0", - "semver": "^6.1.0", - "through2": "^2.0.0", - "tsconfig": "^5.0.3" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + "packages": { + "": { + "name": "DatabaseManagerPlugin", + "version": "v0.0.1", + "devDependencies": {} } } } diff --git a/client/plugins/databasemanager/package.json b/client/plugins/databasemanager/package.json index 8e717b92..ea22fcdd 100644 --- a/client/plugins/databasemanager/package.json +++ b/client/plugins/databasemanager/package.json @@ -3,7 +3,10 @@ "version": "v0.0.1", "private": true, "scripts": { - "build": "browserify ./src/index.ts -p [ tsify --noImplicitAny] > index.js && copy.bat" + "build": "browserify ./src/index.ts -p [ tsify --noImplicitAny] > index.js && copy.bat", + "start": "npm run copy & concurrently --kill-others \"npm run watch\"", + "copy": "copy.bat", + "watch": "watchify ./src/index.ts --debug -o ../../public/plugins/databasemanager/index.js -t [ babelify --global true --presets [ @babel/preset-env ] --extensions '.js'] -p [ tsify --noImplicitAny ]" }, "dependencies": {}, "devDependencies": {} diff --git a/client/plugins/databasemanager/src/airuniteditor.ts b/client/plugins/databasemanager/src/airuniteditor.ts new file mode 100644 index 00000000..fee6fd57 --- /dev/null +++ b/client/plugins/databasemanager/src/airuniteditor.ts @@ -0,0 +1,41 @@ +import { LoadoutBlueprint, UnitBlueprint } from "interfaces"; +import { UnitEditor } from "./uniteditor"; +import { LoadoutEditor } from "./loadouteditor"; + +export class AirUnitEditor extends UnitEditor { + #loadoutEditor: LoadoutEditor | null = null; + + constructor(scrollDiv: HTMLElement, contentDiv1: HTMLElement, contentDiv2: HTMLElement) { + super(scrollDiv, contentDiv1, contentDiv2); + this.#loadoutEditor = new LoadoutEditor(this.contentDiv2); + } + + setContent(blueprint: UnitBlueprint) { + this.contentDiv1.replaceChildren(); + + this.addStringInput("Name", blueprint.name); + this.addStringInput("Label", blueprint.label); + this.addStringInput("Short label", blueprint.shortLabel); + this.addDropdownInput("Coalition", blueprint.coalition, ["", "blue", "red"]); + this.addDropdownInput("Era", blueprint.era, ["WW2", "Early Cold War", "Mid Cold War", "Late Cold War", "Modern"]); + this.addStringInput("Filename", blueprint.filename?? ""); + this.addStringInput("Cost", String(blueprint.cost)?? "", "number"); + + this.addLoadoutList(blueprint.loadouts?? []); + } + + addLoadoutList(loadouts: LoadoutBlueprint[]) { + var loadoutsEl = document.createElement("div"); + loadoutsEl.classList.add("dc-scroll-container", "dc-loadout-container") + loadouts.forEach((loadout: LoadoutBlueprint) => { + var div = document.createElement("div"); + loadoutsEl.appendChild(div); + div.textContent = loadout.name; + div.onclick = () => { + this.#loadoutEditor?.setLoadout(loadout); + this.#loadoutEditor?.show(); + }; + }); + this.contentDiv1.appendChild(loadoutsEl); + } +} diff --git a/client/plugins/databasemanager/src/databasemanagerplugin.ts b/client/plugins/databasemanager/src/databasemanagerplugin.ts index fa4bad6a..ba62e7e9 100644 --- a/client/plugins/databasemanager/src/databasemanagerplugin.ts +++ b/client/plugins/databasemanager/src/databasemanagerplugin.ts @@ -1,10 +1,16 @@ -const SHOW_CONTROL_TIPS = "Show control tips" +import { OlympusPlugin } from "interfaces"; +import { AirUnitEditor } from "./airuniteditor"; +import { OlympusApp } from "olympusapp"; export class DatabaseManagerPlugin implements OlympusPlugin { + #app: OlympusApp | null = null; + #element: HTMLElement; - #app: any; #scrollDiv: HTMLElement; - #contentDiv: HTMLElement; + #contentDiv1: HTMLElement; + #contentDiv2: HTMLElement; + + #aircraftEditor: AirUnitEditor; constructor() { this.#element = document.createElement("div"); @@ -17,9 +23,15 @@ export class DatabaseManagerPlugin implements OlympusPlugin { this.#scrollDiv.classList.add("dc-scroll-container"); this.#element.appendChild(this.#scrollDiv); - this.#contentDiv = document.createElement("div"); - this.#contentDiv.classList.add("dc-content-container"); - this.#element.appendChild(this.#contentDiv); + this.#contentDiv1 = document.createElement("div"); + this.#contentDiv1.classList.add("dc-content-container"); + this.#element.appendChild(this.#contentDiv1); + + this.#contentDiv2 = document.createElement("div"); + this.#contentDiv2.classList.add("dc-content-container"); + this.#element.appendChild(this.#contentDiv2); + + this.#aircraftEditor = new AirUnitEditor(this.#scrollDiv, this.#contentDiv1, this.#contentDiv2); } getName() { @@ -29,15 +41,11 @@ export class DatabaseManagerPlugin implements OlympusPlugin { initialize(app: any) { this.#app = app; - var aircraftDatabase = this.#app.getAircraftDatabase(); - var blueprints: {[key: string]: UnitBlueprint} = aircraftDatabase.getBlueprints(); - - for (let key in blueprints) { - var div = document.createElement("div"); - this.#scrollDiv.appendChild(div); - div.textContent = key; - div.onclick = () => this.#setContent(blueprints[key]); - } + var aircraftDatabase = this.#app?.getAircraftDatabase(); + if (aircraftDatabase != null) { + this.#aircraftEditor.setDatabase(aircraftDatabase); + this.#aircraftEditor.show(); + } return true; } @@ -49,23 +57,4 @@ export class DatabaseManagerPlugin implements OlympusPlugin { toggle(bool?: boolean) { this.getElement().classList.toggle("hide", bool); } - - #setContent(blueprint: UnitBlueprint) { - this.#contentDiv.replaceChildren(); - - for (var key in blueprint) { - if (typeof blueprint[key as keyof UnitBlueprint] === "string") - { - var dt = document.createElement("dt"); - var dd = document.createElement("dd"); - dt.innerText = key; - var input = document.createElement("input"); - input.value = blueprint[key as keyof UnitBlueprint] as string; - input.textContent = blueprint[key as keyof UnitBlueprint] as string; - dd.appendChild(input); - this.#contentDiv.appendChild(dt); - this.#contentDiv.appendChild(dd); - } - } - } } \ No newline at end of file diff --git a/client/plugins/databasemanager/src/loadouteditor.ts b/client/plugins/databasemanager/src/loadouteditor.ts new file mode 100644 index 00000000..9fea8af6 --- /dev/null +++ b/client/plugins/databasemanager/src/loadouteditor.ts @@ -0,0 +1,45 @@ +import { LoadoutBlueprint, LoadoutItemBlueprint } from "interfaces"; + +export class LoadoutEditor { + #contentDiv: HTMLElement; + #loadout: LoadoutBlueprint | null = null; + + constructor(contentDiv: HTMLElement) { + this.#contentDiv = contentDiv; + } + + setLoadout(loadout: LoadoutBlueprint) { + this.#loadout = loadout; + } + + show() { + this.#contentDiv.replaceChildren(); + + if (this.#loadout) { + this.addStringInput("Name", this.#loadout.name); + this.addStringInput("Code", this.#loadout.code); + + var itemsEl = document.createElement("div"); + itemsEl.classList.add("dc-scroll-container", "dc-items-container"); + this.#loadout.items.forEach((item: LoadoutItemBlueprint) => { + var div = document.createElement("div"); + itemsEl.appendChild(div); + div.textContent = item.name; + }) + this.#contentDiv.appendChild(itemsEl); + } + } + + addStringInput(key: string, value: string, type?: string) { + var dt = document.createElement("dt"); + var dd = document.createElement("dd"); + dt.innerText = key; + var input = document.createElement("input"); + input.value = value; + input.textContent = value; + input.type = type?? "text"; + dd.appendChild(input); + this.#contentDiv.appendChild(dt); + this.#contentDiv.appendChild(dd); + } +} \ No newline at end of file diff --git a/client/plugins/databasemanager/src/uniteditor.ts b/client/plugins/databasemanager/src/uniteditor.ts new file mode 100644 index 00000000..04fd7c6f --- /dev/null +++ b/client/plugins/databasemanager/src/uniteditor.ts @@ -0,0 +1,65 @@ +import { LoadoutBlueprint, UnitBlueprint } from "interfaces"; +import { UnitDatabase } from "unit/databases/unitdatabase"; + +export abstract class UnitEditor { + database: UnitDatabase | null = null; + scrollDiv: HTMLElement; + contentDiv1: HTMLElement; + contentDiv2: HTMLElement; + + constructor(scrollDiv: HTMLElement, contentDiv1: HTMLElement, contentDiv2: HTMLElement) { + this.scrollDiv = scrollDiv; + this.contentDiv1 = contentDiv1; + this.contentDiv2 = contentDiv2; + } + + setDatabase(database: any) { + this.database = database; + } + + show() { + if (this.database !== null) { + var blueprints: {[key: string]: UnitBlueprint} = this.database.getBlueprints(); + + for (let key in blueprints) { + var div = document.createElement("div"); + this.scrollDiv.appendChild(div); + div.textContent = key; + div.onclick = () => this.setContent(blueprints[key]); + } + } + } + + addStringInput(key: string, value: string, type?: string) { + var dt = document.createElement("dt"); + var dd = document.createElement("dd"); + dt.innerText = key; + var input = document.createElement("input"); + input.value = value; + input.textContent = value; + input.type = type?? "text"; + dd.appendChild(input); + this.contentDiv1.appendChild(dt); + this.contentDiv1.appendChild(dd); + } + + addDropdownInput(key: string, value: string, options: string[]) { + var dt = document.createElement("dt"); + var dd = document.createElement("dd"); + dt.innerText = key; + var select = document.createElement("select"); + options.forEach((option: string) => { + var el = document.createElement("option"); + el.value = option; + el.innerText = option; + select.appendChild(el); + }); + select.value = value; + dd.appendChild(select); + this.contentDiv1.appendChild(dt); + this.contentDiv1.appendChild(dd); + } + + abstract setContent(blueprint: UnitBlueprint): void; + +} \ No newline at end of file diff --git a/client/plugins/databasemanager/style.css b/client/plugins/databasemanager/style.css index fa3d21dd..893fdea0 100644 --- a/client/plugins/databasemanager/style.css +++ b/client/plugins/databasemanager/style.css @@ -1,12 +1,12 @@ #database-control-panel { display: flex; flex-direction: row; + width: 80%; } .dc-scroll-container { overflow-y: scroll; max-height: 600px; - width: 300px; margin: 10px; color: black; font-weight: bold; @@ -27,7 +27,6 @@ } .dc-content-container { - width: 300px; margin: 10px; } @@ -35,3 +34,12 @@ width: 100%; font-weight: bold; } + +.dc-loadout-container { + max-height: 200px; + width: 300px; +} + +.dc-items-container { + max-height: 200px; +} diff --git a/client/plugins/databasemanager/tsconfig.json b/client/plugins/databasemanager/tsconfig.json index 2ba9ed01..5fbef0a9 100644 --- a/client/plugins/databasemanager/tsconfig.json +++ b/client/plugins/databasemanager/tsconfig.json @@ -23,7 +23,7 @@ // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ /* Modules */ "module": "commonjs", /* Specify what module code is generated. */ - "rootDirs": ["./src", "../../@types"], /* Specify the root folder within your source files. */ + "rootDirs": ["./src"], /* Specify the root folder within your source files. */ // "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ @@ -98,7 +98,6 @@ "skipLibCheck": true /* Skip type checking all .d.ts files. */ }, "include": [ - "src/*.ts", - "../../@types/*.d.ts" + "src/*.ts" ] } \ No newline at end of file diff --git a/client/src/interfaces.ts b/client/src/interfaces.ts index 02a66494..45a2ee7b 100644 --- a/client/src/interfaces.ts +++ b/client/src/interfaces.ts @@ -1,5 +1,5 @@ import { LatLng } from "leaflet"; -import { OlympusApp } from "./app"; +import { OlympusApp } from "./olympusapp"; import { Airbase } from "./mission/airbase"; export interface OlympusPlugin { diff --git a/client/tsconfig.json b/client/tsconfig.json index 24719959..45b6293f 100644 --- a/client/tsconfig.json +++ b/client/tsconfig.json @@ -48,9 +48,9 @@ /* Emit */ "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ // "declarationMap": true, /* Create sourcemaps for d.ts files. */ - "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + //"emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ - "outFile": "./@types/olympus/index.d.ts", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + //"outFile": "./@types/olympus/index.ts", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ // "outDir": "./", /* Specify an output folder for all emitted files. */ // "removeComments": true, /* Disable emitting comments. */ // "noEmit": true, /* Disable emitting files from a compilation. */