diff --git a/dashboard/package-lock.json b/dashboard/package-lock.json index 60d4550d5..b38442bf9 100644 --- a/dashboard/package-lock.json +++ b/dashboard/package-lock.json @@ -25,12 +25,12 @@ "jquery": "^3.7.1", "marked": "^15.0.12", "moment": "^2.30.1", - "moment-timezone": "^0.5.48", - "pankow": "^3.0.8", + "moment-timezone": "^0.6.0", + "pankow": "^3.0.9", "sass": "^1.89.0", "vite": "^6.3.5", - "vue": "^3.5.14", - "vue-i18n": "^11.1.3", + "vue": "^3.5.15", + "vue-i18n": "^11.1.4", "vue-router": "^4.5.1" } }, @@ -53,12 +53,12 @@ } }, "node_modules/@babel/parser": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.2.tgz", - "integrity": "sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw==", + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.3.tgz", + "integrity": "sha512-xyYxRj6+tLNDTWi0KCBcZ9V7yg3/lwL9DWh9Uwh/RIVlIfFidggcgxKX3GCXwCiswwcGRawBKbEg2LG/Y8eJhw==", "license": "MIT", "dependencies": { - "@babel/types": "^7.27.1" + "@babel/types": "^7.27.3" }, "bin": { "parser": "bin/babel-parser.js" @@ -68,9 +68,9 @@ } }, "node_modules/@babel/types": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.1.tgz", - "integrity": "sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==", + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.3.tgz", + "integrity": "sha512-Y1GkI4ktrtvmawoSq+4FCVHNryea6uR+qUQy0AGxLSsjCX0nVmkYQMBLHDkXZuo5hGx7eYdnIaslsdBFm7zbUw==", "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.27.1", @@ -712,13 +712,13 @@ } }, "node_modules/@intlify/core-base": { - "version": "11.1.3", - "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-11.1.3.tgz", - "integrity": "sha512-cMuHunYO7LE80azTitcvEbs1KJmtd6g7I5pxlApV3Jo547zdO3h31/0uXpqHc+Y3RKt1wo2y68RGSx77Z1klyA==", + "version": "11.1.4", + "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-11.1.4.tgz", + "integrity": "sha512-VNIanL84HNBNAoJjPA2V8EykT5NtgNDquO2MsDQcSheo7EcCt4uvH14IHBEDKVoL6k38NNICLuRhtKOKqW2ylA==", "license": "MIT", "dependencies": { - "@intlify/message-compiler": "11.1.3", - "@intlify/shared": "11.1.3" + "@intlify/message-compiler": "11.1.4", + "@intlify/shared": "11.1.4" }, "engines": { "node": ">= 16" @@ -728,12 +728,12 @@ } }, "node_modules/@intlify/message-compiler": { - "version": "11.1.3", - "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-11.1.3.tgz", - "integrity": "sha512-7rbqqpo2f5+tIcwZTAG/Ooy9C8NDVwfDkvSeDPWUPQW+Dyzfw2o9H103N5lKBxO7wxX9dgCDjQ8Umz73uYw3hw==", + "version": "11.1.4", + "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-11.1.4.tgz", + "integrity": "sha512-fQWJwTOBFNFGNr4I5k629hQxTGEKsDWhhTzr6Y4CN4OXJw/dLB/VbbQm5jlylqnv44RBZN5GSD+d1nWpNcAR5A==", "license": "MIT", "dependencies": { - "@intlify/shared": "11.1.3", + "@intlify/shared": "11.1.4", "source-map-js": "^1.0.2" }, "engines": { @@ -744,9 +744,9 @@ } }, "node_modules/@intlify/shared": { - "version": "11.1.3", - "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-11.1.3.tgz", - "integrity": "sha512-pTFBgqa/99JRA2H1qfyqv97MKWJrYngXBA/I0elZcYxvJgcCw3mApAoPW3mJ7vx3j+Ti0FyKUFZ4hWxdjKaxvA==", + "version": "11.1.4", + "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-11.1.4.tgz", + "integrity": "sha512-zOW2L5+QnWRQgM/7WNSPxa6E0F3wR2/KEQV7P4s4AXzxzmg0MuzLNiixvkRJU5h0Xb3DnHic6zybKva28kabDw==", "license": "MIT", "engines": { "node": ">= 16" @@ -1313,39 +1313,39 @@ } }, "node_modules/@vue/compiler-core": { - "version": "3.5.14", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.14.tgz", - "integrity": "sha512-k7qMHMbKvoCXIxPhquKQVw3Twid3Kg4s7+oYURxLGRd56LiuHJVrvFKI4fm2AM3c8apqODPfVJGoh8nePbXMRA==", + "version": "3.5.15", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.15.tgz", + "integrity": "sha512-nGRc6YJg/kxNqbv/7Tg4juirPnjHvuVdhcmDvQWVZXlLHjouq7VsKmV1hIxM/8yKM0VUfwT/Uzc0lO510ltZqw==", "license": "MIT", "dependencies": { "@babel/parser": "^7.27.2", - "@vue/shared": "3.5.14", + "@vue/shared": "3.5.15", "entities": "^4.5.0", "estree-walker": "^2.0.2", "source-map-js": "^1.2.1" } }, "node_modules/@vue/compiler-dom": { - "version": "3.5.14", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.14.tgz", - "integrity": "sha512-1aOCSqxGOea5I80U2hQJvXYpPm/aXo95xL/m/mMhgyPUsKe9jhjwWpziNAw7tYRnbz1I61rd9Mld4W9KmmRoug==", + "version": "3.5.15", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.15.tgz", + "integrity": "sha512-ZelQd9n+O/UCBdL00rlwCrsArSak+YLZpBVuNDio1hN3+wrCshYZEDUO3khSLAzPbF1oQS2duEoMDUHScUlYjA==", "license": "MIT", "dependencies": { - "@vue/compiler-core": "3.5.14", - "@vue/shared": "3.5.14" + "@vue/compiler-core": "3.5.15", + "@vue/shared": "3.5.15" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.5.14", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.14.tgz", - "integrity": "sha512-9T6m/9mMr81Lj58JpzsiSIjBgv2LiVoWjIVa7kuXHICUi8LiDSIotMpPRXYJsXKqyARrzjT24NAwttrMnMaCXA==", + "version": "3.5.15", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.15.tgz", + "integrity": "sha512-3zndKbxMsOU6afQWer75Zot/aydjtxNj0T2KLg033rAFaQUn2PGuE32ZRe4iMhflbTcAxL0yEYsRWFxtPro8RQ==", "license": "MIT", "dependencies": { "@babel/parser": "^7.27.2", - "@vue/compiler-core": "3.5.14", - "@vue/compiler-dom": "3.5.14", - "@vue/compiler-ssr": "3.5.14", - "@vue/shared": "3.5.14", + "@vue/compiler-core": "3.5.15", + "@vue/compiler-dom": "3.5.15", + "@vue/compiler-ssr": "3.5.15", + "@vue/shared": "3.5.15", "estree-walker": "^2.0.2", "magic-string": "^0.30.17", "postcss": "^8.5.3", @@ -1353,13 +1353,13 @@ } }, "node_modules/@vue/compiler-ssr": { - "version": "3.5.14", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.14.tgz", - "integrity": "sha512-Y0G7PcBxr1yllnHuS/NxNCSPWnRGH4Ogrp0tsLA5QemDZuJLs99YjAKQ7KqkHE0vCg4QTKlQzXLKCMF7WPSl7Q==", + "version": "3.5.15", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.15.tgz", + "integrity": "sha512-gShn8zRREZbrXqTtmLSCffgZXDWv8nHc/GhsW+mbwBfNZL5pI96e7IWcIq8XGQe1TLtVbu7EV9gFIVSmfyarPg==", "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.5.14", - "@vue/shared": "3.5.14" + "@vue/compiler-dom": "3.5.15", + "@vue/shared": "3.5.15" } }, "node_modules/@vue/devtools-api": { @@ -1368,53 +1368,53 @@ "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==" }, "node_modules/@vue/reactivity": { - "version": "3.5.14", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.14.tgz", - "integrity": "sha512-7cK1Hp343Fu/SUCCO52vCabjvsYu7ZkOqyYu7bXV9P2yyfjUMUXHZafEbq244sP7gf+EZEz+77QixBTuEqkQQw==", + "version": "3.5.15", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.15.tgz", + "integrity": "sha512-GaA5VUm30YWobCwpvcs9nvFKf27EdSLKDo2jA0IXzGS344oNpFNbEQ9z+Pp5ESDaxyS8FcH0vFN/XSe95BZtHQ==", "license": "MIT", "dependencies": { - "@vue/shared": "3.5.14" + "@vue/shared": "3.5.15" } }, "node_modules/@vue/runtime-core": { - "version": "3.5.14", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.14.tgz", - "integrity": "sha512-w9JWEANwHXNgieAhxPpEpJa+0V5G0hz3NmjAZwlOebtfKyp2hKxKF0+qSh0Xs6/PhfGihuSdqMprMVcQU/E6ag==", + "version": "3.5.15", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.15.tgz", + "integrity": "sha512-CZAlIOQ93nj0OPpWWOx4+QDLCMzBNY85IQR4Voe6vIID149yF8g9WQaWnw042f/6JfvLttK7dnyWlC1EVCRK8Q==", "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.14", - "@vue/shared": "3.5.14" + "@vue/reactivity": "3.5.15", + "@vue/shared": "3.5.15" } }, "node_modules/@vue/runtime-dom": { - "version": "3.5.14", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.14.tgz", - "integrity": "sha512-lCfR++IakeI35TVR80QgOelsUIdcKjd65rWAMfdSlCYnaEY5t3hYwru7vvcWaqmrK+LpI7ZDDYiGU5V3xjMacw==", + "version": "3.5.15", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.15.tgz", + "integrity": "sha512-wFplHKzKO/v998up2iCW3RN9TNUeDMhdBcNYZgs5LOokHntrB48dyuZHspcahKZczKKh3v6i164gapMPxBTKNw==", "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.14", - "@vue/runtime-core": "3.5.14", - "@vue/shared": "3.5.14", + "@vue/reactivity": "3.5.15", + "@vue/runtime-core": "3.5.15", + "@vue/shared": "3.5.15", "csstype": "^3.1.3" } }, "node_modules/@vue/server-renderer": { - "version": "3.5.14", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.14.tgz", - "integrity": "sha512-Rf/ISLqokIvcySIYnv3tNWq40PLpNLDLSJwwVWzG6MNtyIhfbcrAxo5ZL9nARJhqjZyWWa40oRb2IDuejeuv6w==", + "version": "3.5.15", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.15.tgz", + "integrity": "sha512-Gehc693kVTYkLt6QSYEjGvqvdK2zZ/gf/D5zkgmvBdeB30dNnVZS8yY7+IlBmHRd1rR/zwaqeu06Ij04ZxBscg==", "license": "MIT", "dependencies": { - "@vue/compiler-ssr": "3.5.14", - "@vue/shared": "3.5.14" + "@vue/compiler-ssr": "3.5.15", + "@vue/shared": "3.5.15" }, "peerDependencies": { - "vue": "3.5.14" + "vue": "3.5.15" } }, "node_modules/@vue/shared": { - "version": "3.5.14", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.14.tgz", - "integrity": "sha512-oXTwNxVfc9EtP1zzXAlSlgARLXNC84frFYkS0HHz0h3E4WZSP9sywqjqzGCP9Y34M8ipNmd380pVgmMuwELDyQ==", + "version": "3.5.15", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.15.tgz", + "integrity": "sha512-bKvgFJJL1ZX9KxMCTQY6xD9Dhe3nusd1OhyOb1cJYGqvAr0Vg8FIjHPMOEVbJ9GDT9HG+Bjdn4oS8ohKP8EvoA==", "license": "MIT" }, "node_modules/@xterm/addon-attach": { @@ -2257,9 +2257,9 @@ } }, "node_modules/moment-timezone": { - "version": "0.5.48", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.48.tgz", - "integrity": "sha512-f22b8LV1gbTO2ms2j2z13MuPogNoh5UzxL3nzNAYKGraILnbGc9NEE6dyiiiLv46DGRb8A4kg8UKWLjPthxBHw==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.6.0.tgz", + "integrity": "sha512-ldA5lRNm3iJCWZcBCab4pnNL3HSZYXVb/3TYr75/1WCTWYuTqYUb5f/S384pncYjJ88lbO8Z4uPDvmoluHJc8Q==", "license": "MIT", "dependencies": { "moment": "^2.29.4" @@ -2370,9 +2370,9 @@ } }, "node_modules/pankow": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/pankow/-/pankow-3.0.8.tgz", - "integrity": "sha512-8l+5xHkj+rx2Jte24vW7ehWUsOE4Bxmj3XrC13QnsMrVnRFfNPUcMY6H24959thsUcRvGfzsbv/WXQc91/k8/Q==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/pankow/-/pankow-3.0.9.tgz", + "integrity": "sha512-avAFSblMoMguY0GvJvhhM1w1wTewO9hPuEg23Em7tThJljZ5VmENr2B7Cf2VbvnVE4RATEC9lpPEzI7sHNpUiA==", "license": "ISC", "dependencies": { "@fontsource/inter": "^5.2.5", @@ -2802,16 +2802,16 @@ } }, "node_modules/vue": { - "version": "3.5.14", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.14.tgz", - "integrity": "sha512-LbOm50/vZFG6Mhy6KscQYXZMQ0LMCC/y40HDJPPvGFQ+i/lUH+PJHR6C3assgOQiXdl6tAfsXHbXYVBZZu65ew==", + "version": "3.5.15", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.15.tgz", + "integrity": "sha512-aD9zK4rB43JAMK/5BmS4LdPiEp8Fdh8P1Ve/XNuMF5YRf78fCyPE6FUbQwcaWQ5oZ1R2CD9NKE0FFOVpMR7gEQ==", "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.5.14", - "@vue/compiler-sfc": "3.5.14", - "@vue/runtime-dom": "3.5.14", - "@vue/server-renderer": "3.5.14", - "@vue/shared": "3.5.14" + "@vue/compiler-dom": "3.5.15", + "@vue/compiler-sfc": "3.5.15", + "@vue/runtime-dom": "3.5.15", + "@vue/server-renderer": "3.5.15", + "@vue/shared": "3.5.15" }, "peerDependencies": { "typescript": "*" @@ -2848,13 +2848,13 @@ } }, "node_modules/vue-i18n": { - "version": "11.1.3", - "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-11.1.3.tgz", - "integrity": "sha512-Pcylh9z9S5+CJAqgbRZ3EKxFIBIrtY5YUppU722GIT65+Nukm0TCqiQegZnNLCZkXGthxe0cpqj0AoM51H+6Gw==", + "version": "11.1.4", + "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-11.1.4.tgz", + "integrity": "sha512-0B2Q4rTSzQigfIQnsgNMgWOekouT2lr3hiKG3k7q3fQykr968BRdIUDnIvHisq/f1FPKbBznHpvAyGg78eDAyg==", "license": "MIT", "dependencies": { - "@intlify/core-base": "11.1.3", - "@intlify/shared": "11.1.3", + "@intlify/core-base": "11.1.4", + "@intlify/shared": "11.1.4", "@vue/devtools-api": "^6.5.0" }, "engines": { @@ -2937,17 +2937,17 @@ "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==" }, "@babel/parser": { - "version": "7.27.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.2.tgz", - "integrity": "sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw==", + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.3.tgz", + "integrity": "sha512-xyYxRj6+tLNDTWi0KCBcZ9V7yg3/lwL9DWh9Uwh/RIVlIfFidggcgxKX3GCXwCiswwcGRawBKbEg2LG/Y8eJhw==", "requires": { - "@babel/types": "^7.27.1" + "@babel/types": "^7.27.3" } }, "@babel/types": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.1.tgz", - "integrity": "sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q==", + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.3.tgz", + "integrity": "sha512-Y1GkI4ktrtvmawoSq+4FCVHNryea6uR+qUQy0AGxLSsjCX0nVmkYQMBLHDkXZuo5hGx7eYdnIaslsdBFm7zbUw==", "requires": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1" @@ -3238,27 +3238,27 @@ "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==" }, "@intlify/core-base": { - "version": "11.1.3", - "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-11.1.3.tgz", - "integrity": "sha512-cMuHunYO7LE80azTitcvEbs1KJmtd6g7I5pxlApV3Jo547zdO3h31/0uXpqHc+Y3RKt1wo2y68RGSx77Z1klyA==", + "version": "11.1.4", + "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-11.1.4.tgz", + "integrity": "sha512-VNIanL84HNBNAoJjPA2V8EykT5NtgNDquO2MsDQcSheo7EcCt4uvH14IHBEDKVoL6k38NNICLuRhtKOKqW2ylA==", "requires": { - "@intlify/message-compiler": "11.1.3", - "@intlify/shared": "11.1.3" + "@intlify/message-compiler": "11.1.4", + "@intlify/shared": "11.1.4" } }, "@intlify/message-compiler": { - "version": "11.1.3", - "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-11.1.3.tgz", - "integrity": "sha512-7rbqqpo2f5+tIcwZTAG/Ooy9C8NDVwfDkvSeDPWUPQW+Dyzfw2o9H103N5lKBxO7wxX9dgCDjQ8Umz73uYw3hw==", + "version": "11.1.4", + "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-11.1.4.tgz", + "integrity": "sha512-fQWJwTOBFNFGNr4I5k629hQxTGEKsDWhhTzr6Y4CN4OXJw/dLB/VbbQm5jlylqnv44RBZN5GSD+d1nWpNcAR5A==", "requires": { - "@intlify/shared": "11.1.3", + "@intlify/shared": "11.1.4", "source-map-js": "^1.0.2" } }, "@intlify/shared": { - "version": "11.1.3", - "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-11.1.3.tgz", - "integrity": "sha512-pTFBgqa/99JRA2H1qfyqv97MKWJrYngXBA/I0elZcYxvJgcCw3mApAoPW3mJ7vx3j+Ti0FyKUFZ4hWxdjKaxvA==" + "version": "11.1.4", + "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-11.1.4.tgz", + "integrity": "sha512-zOW2L5+QnWRQgM/7WNSPxa6E0F3wR2/KEQV7P4s4AXzxzmg0MuzLNiixvkRJU5h0Xb3DnHic6zybKva28kabDw==" }, "@jridgewell/sourcemap-codec": { "version": "1.5.0", @@ -3503,36 +3503,36 @@ "requires": {} }, "@vue/compiler-core": { - "version": "3.5.14", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.14.tgz", - "integrity": "sha512-k7qMHMbKvoCXIxPhquKQVw3Twid3Kg4s7+oYURxLGRd56LiuHJVrvFKI4fm2AM3c8apqODPfVJGoh8nePbXMRA==", + "version": "3.5.15", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.15.tgz", + "integrity": "sha512-nGRc6YJg/kxNqbv/7Tg4juirPnjHvuVdhcmDvQWVZXlLHjouq7VsKmV1hIxM/8yKM0VUfwT/Uzc0lO510ltZqw==", "requires": { "@babel/parser": "^7.27.2", - "@vue/shared": "3.5.14", + "@vue/shared": "3.5.15", "entities": "^4.5.0", "estree-walker": "^2.0.2", "source-map-js": "^1.2.1" } }, "@vue/compiler-dom": { - "version": "3.5.14", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.14.tgz", - "integrity": "sha512-1aOCSqxGOea5I80U2hQJvXYpPm/aXo95xL/m/mMhgyPUsKe9jhjwWpziNAw7tYRnbz1I61rd9Mld4W9KmmRoug==", + "version": "3.5.15", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.15.tgz", + "integrity": "sha512-ZelQd9n+O/UCBdL00rlwCrsArSak+YLZpBVuNDio1hN3+wrCshYZEDUO3khSLAzPbF1oQS2duEoMDUHScUlYjA==", "requires": { - "@vue/compiler-core": "3.5.14", - "@vue/shared": "3.5.14" + "@vue/compiler-core": "3.5.15", + "@vue/shared": "3.5.15" } }, "@vue/compiler-sfc": { - "version": "3.5.14", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.14.tgz", - "integrity": "sha512-9T6m/9mMr81Lj58JpzsiSIjBgv2LiVoWjIVa7kuXHICUi8LiDSIotMpPRXYJsXKqyARrzjT24NAwttrMnMaCXA==", + "version": "3.5.15", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.15.tgz", + "integrity": "sha512-3zndKbxMsOU6afQWer75Zot/aydjtxNj0T2KLg033rAFaQUn2PGuE32ZRe4iMhflbTcAxL0yEYsRWFxtPro8RQ==", "requires": { "@babel/parser": "^7.27.2", - "@vue/compiler-core": "3.5.14", - "@vue/compiler-dom": "3.5.14", - "@vue/compiler-ssr": "3.5.14", - "@vue/shared": "3.5.14", + "@vue/compiler-core": "3.5.15", + "@vue/compiler-dom": "3.5.15", + "@vue/compiler-ssr": "3.5.15", + "@vue/shared": "3.5.15", "estree-walker": "^2.0.2", "magic-string": "^0.30.17", "postcss": "^8.5.3", @@ -3540,12 +3540,12 @@ } }, "@vue/compiler-ssr": { - "version": "3.5.14", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.14.tgz", - "integrity": "sha512-Y0G7PcBxr1yllnHuS/NxNCSPWnRGH4Ogrp0tsLA5QemDZuJLs99YjAKQ7KqkHE0vCg4QTKlQzXLKCMF7WPSl7Q==", + "version": "3.5.15", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.15.tgz", + "integrity": "sha512-gShn8zRREZbrXqTtmLSCffgZXDWv8nHc/GhsW+mbwBfNZL5pI96e7IWcIq8XGQe1TLtVbu7EV9gFIVSmfyarPg==", "requires": { - "@vue/compiler-dom": "3.5.14", - "@vue/shared": "3.5.14" + "@vue/compiler-dom": "3.5.15", + "@vue/shared": "3.5.15" } }, "@vue/devtools-api": { @@ -3554,46 +3554,46 @@ "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==" }, "@vue/reactivity": { - "version": "3.5.14", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.14.tgz", - "integrity": "sha512-7cK1Hp343Fu/SUCCO52vCabjvsYu7ZkOqyYu7bXV9P2yyfjUMUXHZafEbq244sP7gf+EZEz+77QixBTuEqkQQw==", + "version": "3.5.15", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.15.tgz", + "integrity": "sha512-GaA5VUm30YWobCwpvcs9nvFKf27EdSLKDo2jA0IXzGS344oNpFNbEQ9z+Pp5ESDaxyS8FcH0vFN/XSe95BZtHQ==", "requires": { - "@vue/shared": "3.5.14" + "@vue/shared": "3.5.15" } }, "@vue/runtime-core": { - "version": "3.5.14", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.14.tgz", - "integrity": "sha512-w9JWEANwHXNgieAhxPpEpJa+0V5G0hz3NmjAZwlOebtfKyp2hKxKF0+qSh0Xs6/PhfGihuSdqMprMVcQU/E6ag==", + "version": "3.5.15", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.15.tgz", + "integrity": "sha512-CZAlIOQ93nj0OPpWWOx4+QDLCMzBNY85IQR4Voe6vIID149yF8g9WQaWnw042f/6JfvLttK7dnyWlC1EVCRK8Q==", "requires": { - "@vue/reactivity": "3.5.14", - "@vue/shared": "3.5.14" + "@vue/reactivity": "3.5.15", + "@vue/shared": "3.5.15" } }, "@vue/runtime-dom": { - "version": "3.5.14", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.14.tgz", - "integrity": "sha512-lCfR++IakeI35TVR80QgOelsUIdcKjd65rWAMfdSlCYnaEY5t3hYwru7vvcWaqmrK+LpI7ZDDYiGU5V3xjMacw==", + "version": "3.5.15", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.15.tgz", + "integrity": "sha512-wFplHKzKO/v998up2iCW3RN9TNUeDMhdBcNYZgs5LOokHntrB48dyuZHspcahKZczKKh3v6i164gapMPxBTKNw==", "requires": { - "@vue/reactivity": "3.5.14", - "@vue/runtime-core": "3.5.14", - "@vue/shared": "3.5.14", + "@vue/reactivity": "3.5.15", + "@vue/runtime-core": "3.5.15", + "@vue/shared": "3.5.15", "csstype": "^3.1.3" } }, "@vue/server-renderer": { - "version": "3.5.14", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.14.tgz", - "integrity": "sha512-Rf/ISLqokIvcySIYnv3tNWq40PLpNLDLSJwwVWzG6MNtyIhfbcrAxo5ZL9nARJhqjZyWWa40oRb2IDuejeuv6w==", + "version": "3.5.15", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.15.tgz", + "integrity": "sha512-Gehc693kVTYkLt6QSYEjGvqvdK2zZ/gf/D5zkgmvBdeB30dNnVZS8yY7+IlBmHRd1rR/zwaqeu06Ij04ZxBscg==", "requires": { - "@vue/compiler-ssr": "3.5.14", - "@vue/shared": "3.5.14" + "@vue/compiler-ssr": "3.5.15", + "@vue/shared": "3.5.15" } }, "@vue/shared": { - "version": "3.5.14", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.14.tgz", - "integrity": "sha512-oXTwNxVfc9EtP1zzXAlSlgARLXNC84frFYkS0HHz0h3E4WZSP9sywqjqzGCP9Y34M8ipNmd380pVgmMuwELDyQ==" + "version": "3.5.15", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.15.tgz", + "integrity": "sha512-bKvgFJJL1ZX9KxMCTQY6xD9Dhe3nusd1OhyOb1cJYGqvAr0Vg8FIjHPMOEVbJ9GDT9HG+Bjdn4oS8ohKP8EvoA==" }, "@xterm/addon-attach": { "version": "0.11.0", @@ -4164,9 +4164,9 @@ "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==" }, "moment-timezone": { - "version": "0.5.48", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.48.tgz", - "integrity": "sha512-f22b8LV1gbTO2ms2j2z13MuPogNoh5UzxL3nzNAYKGraILnbGc9NEE6dyiiiLv46DGRb8A4kg8UKWLjPthxBHw==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.6.0.tgz", + "integrity": "sha512-ldA5lRNm3iJCWZcBCab4pnNL3HSZYXVb/3TYr75/1WCTWYuTqYUb5f/S384pncYjJ88lbO8Z4uPDvmoluHJc8Q==", "requires": { "moment": "^2.29.4" } @@ -4242,9 +4242,9 @@ } }, "pankow": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/pankow/-/pankow-3.0.8.tgz", - "integrity": "sha512-8l+5xHkj+rx2Jte24vW7ehWUsOE4Bxmj3XrC13QnsMrVnRFfNPUcMY6H24959thsUcRvGfzsbv/WXQc91/k8/Q==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/pankow/-/pankow-3.0.9.tgz", + "integrity": "sha512-avAFSblMoMguY0GvJvhhM1w1wTewO9hPuEg23Em7tThJljZ5VmENr2B7Cf2VbvnVE4RATEC9lpPEzI7sHNpUiA==", "requires": { "@fontsource/inter": "^5.2.5", "@fortawesome/fontawesome-free": "^6.7.2", @@ -4471,15 +4471,15 @@ } }, "vue": { - "version": "3.5.14", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.14.tgz", - "integrity": "sha512-LbOm50/vZFG6Mhy6KscQYXZMQ0LMCC/y40HDJPPvGFQ+i/lUH+PJHR6C3assgOQiXdl6tAfsXHbXYVBZZu65ew==", + "version": "3.5.15", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.15.tgz", + "integrity": "sha512-aD9zK4rB43JAMK/5BmS4LdPiEp8Fdh8P1Ve/XNuMF5YRf78fCyPE6FUbQwcaWQ5oZ1R2CD9NKE0FFOVpMR7gEQ==", "requires": { - "@vue/compiler-dom": "3.5.14", - "@vue/compiler-sfc": "3.5.14", - "@vue/runtime-dom": "3.5.14", - "@vue/server-renderer": "3.5.14", - "@vue/shared": "3.5.14" + "@vue/compiler-dom": "3.5.15", + "@vue/compiler-sfc": "3.5.15", + "@vue/runtime-dom": "3.5.15", + "@vue/server-renderer": "3.5.15", + "@vue/shared": "3.5.15" } }, "vue-eslint-parser": { @@ -4498,12 +4498,12 @@ } }, "vue-i18n": { - "version": "11.1.3", - "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-11.1.3.tgz", - "integrity": "sha512-Pcylh9z9S5+CJAqgbRZ3EKxFIBIrtY5YUppU722GIT65+Nukm0TCqiQegZnNLCZkXGthxe0cpqj0AoM51H+6Gw==", + "version": "11.1.4", + "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-11.1.4.tgz", + "integrity": "sha512-0B2Q4rTSzQigfIQnsgNMgWOekouT2lr3hiKG3k7q3fQykr968BRdIUDnIvHisq/f1FPKbBznHpvAyGg78eDAyg==", "requires": { - "@intlify/core-base": "11.1.3", - "@intlify/shared": "11.1.3", + "@intlify/core-base": "11.1.4", + "@intlify/shared": "11.1.4", "@vue/devtools-api": "^6.5.0" } }, diff --git a/dashboard/package.json b/dashboard/package.json index 36bff95e2..bf9bcb5ff 100644 --- a/dashboard/package.json +++ b/dashboard/package.json @@ -26,12 +26,12 @@ "jquery": "^3.7.1", "marked": "^15.0.12", "moment": "^2.30.1", - "moment-timezone": "^0.5.48", - "pankow": "^3.0.8", + "moment-timezone": "^0.6.0", + "pankow": "^3.0.9", "sass": "^1.89.0", "vite": "^6.3.5", - "vue": "^3.5.14", - "vue-i18n": "^11.1.3", + "vue": "^3.5.15", + "vue-i18n": "^11.1.4", "vue-router": "^4.5.1" } } diff --git a/dashboard/src/views/AppConfigureView.vue b/dashboard/src/views/AppConfigureView.vue index 8c6b48d1f..fa7259fc2 100644 --- a/dashboard/src/views/AppConfigureView.vue +++ b/dashboard/src/views/AppConfigureView.vue @@ -5,7 +5,7 @@ const i18n = useI18n(); const t = i18n.t; import { ref, onMounted, onBeforeUnmount, computed, useTemplateRef } from 'vue'; -import { Button, ButtonGroup } from 'pankow'; +import { Button, ButtonGroup, SingleSelect } from 'pankow'; import PostInstallDialog from '../components/PostInstallDialog.vue'; import SftpInfoDialog from '../components/SftpInfoDialog.vue'; import Access from '../components/app/Access.vue'; @@ -36,7 +36,7 @@ const installationStateLabel = AppsModel.installationStateLabel; const busy = ref(true); const id = ref(''); const app = ref(null); -const view = ref(''); +const currentView = ref(''); const link = ref(''); const infoMenu = ref([]); const hasLocalStorage = ref(false); @@ -51,7 +51,7 @@ const isAppStopped = computed(() => { }); function onSetView(newView) { - view.value = newView; + currentView.value = newView; window.location.hash = `/app/${id.value}/${newView}`; } @@ -147,6 +147,8 @@ async function onStopAppTask() { busyStopTask.value = false; } +const views = ref([]); + onMounted(async () => { const tmp = window.location.hash.slice('#/app/'.length); if (!tmp) return; @@ -159,6 +161,24 @@ onMounted(async () => { await refresh(); if (!app.value) return; + views.value.push({ id: 'info', display: t('app.infoTabTitle'), }); + views.value.push({ id: 'display', display: t('app.displayTabTitle'), }); + if (app.value.accessLevel === 'admin') views.value.push({ id: 'location', display: t('app.locationTabTitle'), }); + if (app.value.type === APP_TYPES.PROXIED) views.value.push({ id: 'proxy', display: 'Proxy', }); + if (app.value.accessLevel === 'admin') views.value.push({ id: 'access', display: t('app.accessControlTabTitle'), }); + if (app.value.type !== APP_TYPES.PROXIED) views.value.push({ id: 'resources', display: t('app.resourcesTabTitle'), }); + if (app.value.type !== APP_TYPES.PROXIED) views.value.push({ id: 'services', display: t('app.servicesTabTitle'), }); + if (app.value.accessLevel === 'admin' && app.value.type !== APP_TYPES.PROXIED) views.value.push({ id: 'storage', display: t('app.storageTabTitle'), }); + if (app.value.type !== APP_TYPES.PROXIED) views.value.push({ id: 'graphs', display: t('app.graphsTabTitle'), }); + views.value.push({ id: 'security', display: t('app.securityTabTitle'), }); + if (app.value.accessLevel === 'admin' && hasEmail && app.value.type !== APP_TYPES.PROXIED) views.value.push({ id: 'email', display: t('app.emailTabTitle'), }); + if (app.value.type !== APP_TYPES.PROXIED) views.value.push({ id: 'cron', display: t('app.cronTabTitle'), }); + views.value.push({ id: 'updates', display: t('app.updatesTabTitle'), }); + if (app.value.type !== APP_TYPES.PROXIED) views.value.push({ id: 'backups', display: t('app.backupsTabTitle'), }); + views.value.push({ id: 'repair', display: t('app.repairTabTitle'), }); + views.value.push({ id: 'eventlog', display: t('app.eventlogTabTitle'), }); + if (app.value.accessLevel === 'admin') views.value.push({ id: 'uninstall', display: t('app.uninstallTabTitle'), }); + onSetView(parts[1] || 'info'); busy.value = false; @@ -187,22 +207,25 @@ onBeforeUnmount(() => { -
-
@@ -211,44 +234,28 @@ onBeforeUnmount(() => {
-
-
{{ $t('app.infoTabTitle') }}
-
{{ $t('app.displayTabTitle') }}
-
{{ $t('app.locationTabTitle') }}
-
Proxy
-
{{ $t('app.accessControlTabTitle') }}
-
{{ $t('app.resourcesTabTitle') }}
-
{{ $t('app.servicesTabTitle') }}
-
{{ $t('app.storageTabTitle') }}
-
{{ $t('app.graphsTabTitle') }}
-
{{ $t('app.securityTabTitle') }}
-
{{ $t('app.emailTabTitle') }}
-
{{ $t('app.cronTabTitle') }}
-
{{ $t('app.updatesTabTitle') }}
-
{{ $t('app.backupsTabTitle') }}
-
{{ $t('app.repairTabTitle') }}
-
{{ $t('app.eventlogTabTitle') }}
-
{{ $t('app.uninstallTabTitle') }}
+
+
{{ view.display }}
- - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + +
@@ -264,6 +271,13 @@ onBeforeUnmount(() => { color: var(--pankow-text-color); } +.titlebar { + display: flex; + flex-wrap: wrap; + gap: 10px; + justify-content: space-between; +} + .titlebar h2 { flex-grow: 1; padding: 0; @@ -273,6 +287,19 @@ onBeforeUnmount(() => { justify-content: center; } +.titlebar-toolbar { + display: flex; + gap: 10px; + align-items: center; + justify-content: space-between; +} + +@media (max-width: 576px) { + .titlebar-toolbar { + flex-grow: 1; + } +} + .statelabel { font-size: 12px; margin-top: 6px; @@ -295,11 +322,6 @@ onBeforeUnmount(() => { padding-right: 15px; } -.titlebar { - display: flex; - justify-content: space-between; -} - .apptask-progress { position: relative; width: 100%;