From 4a6427f89375e72d927398f31182e2a989da0984 Mon Sep 17 00:00:00 2001 From: Daniel Ceregatti Date: Sun, 11 Jun 2023 18:20:14 -0700 Subject: [PATCH] Add Pinia store so we can have disparate components. Add Vueuse core library for useFetch. Get async requests working with the above. Start using Vue's Suspense feature. Make Status its own component. Start adding search results. Continued work on error modal. Add CORS headers to the backend. Remove error store, as we only have one store. Rename favicon.png to favicon.ico. Remove functions from scripts where they are not used. Move functions to where they are used. Lots of WIP. --- files/bin/dz-common | 19 +++ server/bin/dz | 6 - web/bin/dz | 19 --- web/docroot/index.html | 2 +- web/docroot/package-lock.json | 134 ++++++++++++++++++ web/docroot/package.json | 1 + .../public/{favicon.png => favicon.ico} | Bin web/docroot/src/App.vue | 14 +- web/docroot/src/components/Body.vue | 12 +- web/docroot/src/components/Error.vue | 7 +- web/docroot/src/components/Header.vue | 29 ++-- web/docroot/src/components/Modinfo.vue | 28 ++-- web/docroot/src/components/Mods.vue | 55 +++---- web/docroot/src/components/Search.vue | 50 +------ web/docroot/src/components/SearchResults.vue | 45 +++++- web/docroot/src/components/Status.vue | 17 +++ web/docroot/src/components/XmlTree.vue | 21 ++- web/docroot/src/fetch.js | 24 ---- web/docroot/src/main.js | 6 +- web/docroot/src/stores/app.js | 10 ++ web/docroot/src/stores/error.js | 9 -- web/root/index.js | 8 +- web/web.js | 39 ++++- 23 files changed, 359 insertions(+), 196 deletions(-) rename web/docroot/public/{favicon.png => favicon.ico} (100%) create mode 100644 web/docroot/src/components/Status.vue delete mode 100644 web/docroot/src/fetch.js create mode 100644 web/docroot/src/stores/app.js delete mode 100644 web/docroot/src/stores/error.js diff --git a/files/bin/dz-common b/files/bin/dz-common index 72ec382..5ecefce 100755 --- a/files/bin/dz-common +++ b/files/bin/dz-common @@ -60,3 +60,22 @@ prompt_yn(){ return 1 fi } + +# List mods +list(){ + X=1 + C="${green}" + spaces=" " + echo "Installed mods:" + echo -e " ID Name URL Size" + echo "------------------------------------------------------------------------------------------------------------------------" + for dir in $(ls -tr ${WORKSHOP_DIR}) + do + ID=${dir} + NAME=$(grep name "${WORKSHOP_DIR}/${dir}/meta.cpp" | cut -d '"' -f2 | sed -r 's/\s+//g') + SIZE=$(du -sh "${WORKSHOP_DIR}/${dir}" | awk '{print $1}') + printf "${C}%.3d %s %.30s %s https://steamcommunity.com/sharedfiles/filedetails/?id=%s %s${default}\n" ${X} ${ID} "${NAME}" "${spaces:${#NAME}+1}" ${ID} ${SIZE} + X=$((X+1)) + done + echo +} diff --git a/server/bin/dz b/server/bin/dz index 06b8910..9532e42 100755 --- a/server/bin/dz +++ b/server/bin/dz @@ -450,9 +450,6 @@ case "${C}" in login) login "${@}" ;; - m|modupdate) - modupdate "${@}" - ;; n|rcon) rcon "${@}" ;; @@ -471,9 +468,6 @@ case "${C}" in stop) stop "${@}" ;; - u|update) - update "${@}" - ;; *) usage "$*" ;; diff --git a/web/bin/dz b/web/bin/dz index 19db892..be52d10 100755 --- a/web/bin/dz +++ b/web/bin/dz @@ -364,25 +364,6 @@ check_mod_install(){ fi } -# List mods -list(){ - X=1 - C="${green}" - spaces=" " - echo "Installed mods:" - echo -e " ID Name URL Size" - echo "------------------------------------------------------------------------------------------------------------------------" - for dir in $(ls -tr ${WORKSHOP_DIR}) - do - ID=${dir} - NAME=$(grep name "${WORKSHOP_DIR}/${dir}/meta.cpp" | cut -d '"' -f2 | sed -r 's/\s+//g') - SIZE=$(du -sh "${WORKSHOP_DIR}/${dir}" | awk '{print $1}') - printf "${C}%.3d %s %.30s %s https://steamcommunity.com/sharedfiles/filedetails/?id=%s %s${default}\n" ${X} ${ID} "${NAME}" "${spaces:${#NAME}+1}" ${ID} ${SIZE} - X=$((X+1)) - done - echo -} - # Capture the first argument and shift it off so we can pass $@ to every function C=${1} shift || { diff --git a/web/docroot/index.html b/web/docroot/index.html index ff1304e..e0122db 100644 --- a/web/docroot/index.html +++ b/web/docroot/index.html @@ -2,7 +2,7 @@ - + DayZ Docker Server diff --git a/web/docroot/package-lock.json b/web/docroot/package-lock.json index 6e3fef6..e837b46 100644 --- a/web/docroot/package-lock.json +++ b/web/docroot/package-lock.json @@ -9,6 +9,7 @@ "version": "0.0.0", "dependencies": { "@popperjs/core": "^2.11.8", + "@vueuse/core": "^10.1.2", "bootstrap": "^5.3.0", "bootstrap-icons": "^1.10.5", "pinia": "^2.1.3", @@ -396,6 +397,11 @@ "url": "https://opencollective.com/popperjs" } }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.17", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.17.tgz", + "integrity": "sha512-4p9vcSmxAayx72yn70joFoL44c9MO/0+iVEBIQXe3v2h2SiAsEIo/G5v6ObFWvNKRFjbrVadNf9LqEEZeQPzdA==" + }, "node_modules/@vitejs/plugin-vue": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.2.3.tgz", @@ -516,6 +522,89 @@ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz", "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==" }, + "node_modules/@vueuse/core": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.1.2.tgz", + "integrity": "sha512-roNn8WuerI56A5uiTyF/TEYX0Y+VKlhZAF94unUfdhbDUI+NfwQMn4FUnUscIRUhv3344qvAghopU4bzLPNFlA==", + "dependencies": { + "@types/web-bluetooth": "^0.0.17", + "@vueuse/metadata": "10.1.2", + "@vueuse/shared": "10.1.2", + "vue-demi": ">=0.14.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/core/node_modules/vue-demi": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.5.tgz", + "integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/@vueuse/metadata": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.1.2.tgz", + "integrity": "sha512-3mc5BqN9aU2SqBeBuWE7ne4OtXHoHKggNgxZR2K+zIW4YLsy6xoZ4/9vErQs6tvoKDX6QAqm3lvsrv0mczAwIQ==", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.1.2.tgz", + "integrity": "sha512-1uoUTPBlgyscK9v6ScGeVYDDzlPSFXBlxuK7SfrDGyUTBiznb3mNceqhwvZHjtDRELZEN79V5uWPTF1VDV8svA==", + "dependencies": { + "vue-demi": ">=0.14.0" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared/node_modules/vue-demi": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.5.tgz", + "integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, "node_modules/bootstrap": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.0.tgz", @@ -975,6 +1064,11 @@ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==" }, + "@types/web-bluetooth": { + "version": "0.0.17", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.17.tgz", + "integrity": "sha512-4p9vcSmxAayx72yn70joFoL44c9MO/0+iVEBIQXe3v2h2SiAsEIo/G5v6ObFWvNKRFjbrVadNf9LqEEZeQPzdA==" + }, "@vitejs/plugin-vue": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.2.3.tgz", @@ -1086,6 +1180,46 @@ "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz", "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==" }, + "@vueuse/core": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.1.2.tgz", + "integrity": "sha512-roNn8WuerI56A5uiTyF/TEYX0Y+VKlhZAF94unUfdhbDUI+NfwQMn4FUnUscIRUhv3344qvAghopU4bzLPNFlA==", + "requires": { + "@types/web-bluetooth": "^0.0.17", + "@vueuse/metadata": "10.1.2", + "@vueuse/shared": "10.1.2", + "vue-demi": ">=0.14.0" + }, + "dependencies": { + "vue-demi": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.5.tgz", + "integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==", + "requires": {} + } + } + }, + "@vueuse/metadata": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.1.2.tgz", + "integrity": "sha512-3mc5BqN9aU2SqBeBuWE7ne4OtXHoHKggNgxZR2K+zIW4YLsy6xoZ4/9vErQs6tvoKDX6QAqm3lvsrv0mczAwIQ==" + }, + "@vueuse/shared": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.1.2.tgz", + "integrity": "sha512-1uoUTPBlgyscK9v6ScGeVYDDzlPSFXBlxuK7SfrDGyUTBiznb3mNceqhwvZHjtDRELZEN79V5uWPTF1VDV8svA==", + "requires": { + "vue-demi": ">=0.14.0" + }, + "dependencies": { + "vue-demi": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.5.tgz", + "integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==", + "requires": {} + } + } + }, "bootstrap": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.0.tgz", diff --git a/web/docroot/package.json b/web/docroot/package.json index 180b89e..d585cca 100644 --- a/web/docroot/package.json +++ b/web/docroot/package.json @@ -9,6 +9,7 @@ }, "dependencies": { "@popperjs/core": "^2.11.8", + "@vueuse/core": "^10.1.2", "bootstrap": "^5.3.0", "bootstrap-icons": "^1.10.5", "pinia": "^2.1.3", diff --git a/web/docroot/public/favicon.png b/web/docroot/public/favicon.ico similarity index 100% rename from web/docroot/public/favicon.png rename to web/docroot/public/favicon.ico diff --git a/web/docroot/src/App.vue b/web/docroot/src/App.vue index a80de51..c2b433d 100644 --- a/web/docroot/src/App.vue +++ b/web/docroot/src/App.vue @@ -5,9 +5,13 @@ import Header from '@/components/Header.vue' diff --git a/web/docroot/src/components/Body.vue b/web/docroot/src/components/Body.vue index 26736a0..fa01edf 100644 --- a/web/docroot/src/components/Body.vue +++ b/web/docroot/src/components/Body.vue @@ -1,13 +1,13 @@ diff --git a/web/docroot/src/components/Error.vue b/web/docroot/src/components/Error.vue index 0bf8c4e..e0990e7 100644 --- a/web/docroot/src/components/Error.vue +++ b/web/docroot/src/components/Error.vue @@ -1,9 +1,8 @@ + diff --git a/web/docroot/src/components/Modinfo.vue b/web/docroot/src/components/Modinfo.vue index 2200fb3..baeb7c2 100644 --- a/web/docroot/src/components/Modinfo.vue +++ b/web/docroot/src/components/Modinfo.vue @@ -1,16 +1,18 @@ +