diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index efc0d9d4c84334e8dc18661ed698493284cdab3a..d43f738ca6db6bf7b535291a96458877c2df6375 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -12,7 +12,7 @@ default: tags: - docker before_script: - - npm --version # For debugging + - npm --version # For debugging - node --version - npm install --no-fund @@ -38,14 +38,12 @@ build: stage: deploy image: name: gcr.io/kaniko-project/executor:v1.23.2-debug - entrypoint: [ "" ] - dependencies: [ ] - cache: [ ] + entrypoint: [""] + dependencies: [] + cache: [] before_script: - echo "{\"auths\":{\"${CI_REGISTRY}\":{\"auth\":\"$(printf "%s:%s" "${CI_REGISTRY_USER}" "${CI_REGISTRY_PASSWORD}" | base64 | tr -d '\n')\"},\"$(echo -n $CI_DEPENDENCY_PROXY_SERVER | awk -F[:] '{print $1}')\":{\"auth\":\"$(printf "%s:%s" ${CI_DEPENDENCY_PROXY_USER} "${CI_DEPENDENCY_PROXY_PASSWORD}" | base64 | tr -d '\n')\"}}}" > /kaniko/.docker/config.json - - publish-main-docker-container-job: extends: .build-container-job only: @@ -57,6 +55,7 @@ publish-main-docker-container-job: --dockerfile "${CI_PROJECT_DIR}/Dockerfile" --destination "${CI_REGISTRY_IMAGE}:main-${CI_COMMIT_SHA}" --destination "${CI_REGISTRY_IMAGE}:main-latest" + --registry-mirror "${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}" publish-docker-container-job: extends: .build-container-job @@ -70,3 +69,4 @@ publish-docker-container-job: --destination "${CI_REGISTRY_IMAGE}:$(echo ${CI_COMMIT_TAG} | cut -d'.' -f1-2)" --destination "${CI_REGISTRY_IMAGE}:$(echo ${CI_COMMIT_TAG} | cut -d'.' -f1)" --destination "${CI_REGISTRY_IMAGE}:latest" + --registry-mirror "${CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX}" diff --git a/openapi-ts.config.ts b/openapi-ts.config.ts index 5ddf6587a90c9e86778d915e27db0022c667d053..0e4a01c23662568ea7977afc62ff9bea5cc07abe 100644 --- a/openapi-ts.config.ts +++ b/openapi-ts.config.ts @@ -3,6 +3,7 @@ import { defineConfig } from "@hey-api/openapi-ts"; export default defineConfig({ client: "@hey-api/client-axios", input: "./openapi-clowm.json", + experimentalParser: false, output: { lint: "eslint", format: "prettier", diff --git a/package-lock.json b/package-lock.json index cb64cd8f9c7927009434d272bc2c63c2e74bd20f..5f43b75741ccc4fb6c639a38a8506458099d8fa8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,7 @@ "ajv": "~8.17.0", "bootstrap": "~5.3.0", "chart.js": "~4.4.0", - "chartjs-plugin-zoom": "~2.1.0", + "chartjs-plugin-zoom": "~2.2.0", "dayjs": "~1.11.0", "dompurify": "~3.2.0", "filesize": "~10.1.0", @@ -30,7 +30,7 @@ "sortablejs": "^1.15.2", "vue": "~3.5.0", "vue-matomo": "^4.2.0", - "vue-router": "~4.4.0", + "vue-router": "~4.5.0", "vue3-cookies": "~1.0.0" }, "devDependencies": { @@ -52,7 +52,7 @@ "eslint": "~9.12.0", "eslint-plugin-vue": "~9.31.0", "highlight.js": "^11.9.0", - "prettier": "~3.3.0", + "prettier": "~3.4.0", "sass": "^1.66.0", "typescript": "~5.5.0", "vite": "~5.4.0", @@ -281,9 +281,9 @@ } }, "node_modules/@aws-sdk/client-s3": { - "version": "3.699.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.699.0.tgz", - "integrity": "sha512-x3wV9e6d0esA6Yyg3xWJucMYd/O8JVrNCJnGm/sz3lMYOQGefpVZKZZsHcnzQcTEVAQMF/T5/cdfdvPzIx/esA==", + "version": "3.701.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.701.0.tgz", + "integrity": "sha512-7iXmPC5r7YNjvwSsRbGq9oLVgfIWZesXtEYl908UqMmRj2sVAW/leLopDnbLT7TEedqlK0RasOZT05I0JTNdKw==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/sha1-browser": "5.2.0", @@ -295,7 +295,7 @@ "@aws-sdk/credential-provider-node": "3.699.0", "@aws-sdk/middleware-bucket-endpoint": "3.696.0", "@aws-sdk/middleware-expect-continue": "3.696.0", - "@aws-sdk/middleware-flexible-checksums": "3.697.0", + "@aws-sdk/middleware-flexible-checksums": "3.701.0", "@aws-sdk/middleware-host-header": "3.696.0", "@aws-sdk/middleware-location-constraint": "3.696.0", "@aws-sdk/middleware-logger": "3.696.0", @@ -666,9 +666,9 @@ } }, "node_modules/@aws-sdk/lib-storage": { - "version": "3.699.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.699.0.tgz", - "integrity": "sha512-l8Eeb0am8nqUdAh5UVJJu0h3x8NGcs1yKe7riIT+gP5LUSTxdQDQfaWdMK9du9+M+Pbw0N93i1PTLVVbgJNT1Q==", + "version": "3.701.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/lib-storage/-/lib-storage-3.701.0.tgz", + "integrity": "sha512-eAbJ/3OgyFp1NnFdQfkZ7PuKCjrhbSQWf0EVTMhlg4aE5piCZ1We38NI1dQ58yr53rGc2gBkbYr8+/9CehpEvA==", "license": "Apache-2.0", "dependencies": { "@smithy/abort-controller": "^3.1.7", @@ -683,7 +683,7 @@ "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-s3": "^3.699.0" + "@aws-sdk/client-s3": "^3.701.0" } }, "node_modules/@aws-sdk/middleware-bucket-endpoint": { @@ -720,9 +720,9 @@ } }, "node_modules/@aws-sdk/middleware-flexible-checksums": { - "version": "3.697.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.697.0.tgz", - "integrity": "sha512-K/y43P+NuHu5+21/29BoJSltcPekvcCU8i74KlGGHbW2Z105e5QVZlFjxivcPOjOA3gdC0W4SoFSIWam5RBhzw==", + "version": "3.701.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.701.0.tgz", + "integrity": "sha512-adNaPCyTT+CiVM0ufDiO1Fe7nlRmJdI9Hcgj0M9S6zR7Dw70Ra5z8Lslkd7syAccYvZaqxLklGjPQH/7GNxwTA==", "license": "Apache-2.0", "dependencies": { "@aws-crypto/crc32": "5.2.0", @@ -876,9 +876,9 @@ } }, "node_modules/@aws-sdk/s3-request-presigner": { - "version": "3.699.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.699.0.tgz", - "integrity": "sha512-r4/A55LfdqtVmaa8FEaN4uvNiJK+fjtPdX1WgscOa+BA0tkzFGXzmAKmtw/gLhJtgsDPc0Pgd15nQJnnPn94Mg==", + "version": "3.701.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.701.0.tgz", + "integrity": "sha512-S4eKSZxhDcVmUoHv9N4dCxGde7V4v60R/+qFz/LgHxU++XOZ2npM/jqX5I9vT4uOkHLwQD6DgkL0j37vZpsqxA==", "license": "Apache-2.0", "dependencies": { "@aws-sdk/signature-v4-multi-region": "3.696.0", @@ -1694,9 +1694,9 @@ } }, "node_modules/@hey-api/client-axios": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/@hey-api/client-axios/-/client-axios-0.2.10.tgz", - "integrity": "sha512-EXTf9WcZCyzRIi1JEbKbJ4JvB+TLy9WsSaBKRUwd7d8c6PYQ+MRJCTnkzGJk1wXkeBLqJEwyf2IZH/qmCkDhqg==", + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/@hey-api/client-axios/-/client-axios-0.2.11.tgz", + "integrity": "sha512-jyJAsEkdi5ybAGTSfZD8gaKRCVid25h3qWQQ+BzgmBmlw2X5dIQaXXXnOxAQJxLD9Q+FWUh2MspLKIZ16MQ3Dw==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/hey-api" @@ -1706,9 +1706,9 @@ } }, "node_modules/@hey-api/openapi-ts": { - "version": "0.57.0", - "resolved": "https://registry.npmjs.org/@hey-api/openapi-ts/-/openapi-ts-0.57.0.tgz", - "integrity": "sha512-TFcr7CYAFYLJVjJzCNk8bbGpLhn5K7PR3SHvBizVCZM4PdrcbTx6++W7FyKq84TGXuptN70+LvM+8bOSf3PgCw==", + "version": "0.57.1", + "resolved": "https://registry.npmjs.org/@hey-api/openapi-ts/-/openapi-ts-0.57.1.tgz", + "integrity": "sha512-CZ2W1Ma4Z1zPI2M7mR5wfgTvDnxYenv/zAiX4wYgUX3n8GlWWjRkAQ02TgwBiHD3T9isR2zPyub/8rqyZ5yIsA==", "dev": true, "license": "FSL-1.1-MIT", "dependencies": { @@ -3228,13 +3228,13 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.9.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.3.tgz", - "integrity": "sha512-F3u1fs/fce3FFk+DAxbxc78DF8x0cY09RRL8GnXLmkJ1jvx3TtPdWoTT5/NiYfI5ASqXBmfqJi9dZ3gxMx4lzw==", + "version": "22.10.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.0.tgz", + "integrity": "sha512-XC70cRZVElFHfIUB40FgZOBbgJYFKKMa5nb9lxcwYstFG/Mi+/Y0bGS+rs6Dmhmkpq4pnNiLiuZAbc02YCOnmA==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~6.19.8" + "undici-types": "~6.20.0" } }, "node_modules/@types/qs": { @@ -3273,17 +3273,17 @@ "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.15.0.tgz", - "integrity": "sha512-+zkm9AR1Ds9uLWN3fkoeXgFppaQ+uEVtfOV62dDmsy9QCNqlRHWNEck4yarvRNrvRcHQLGfqBNui3cimoz8XAg==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.16.0.tgz", + "integrity": "sha512-5YTHKV8MYlyMI6BaEG7crQ9BhSc8RxzshOReKwZwRWN0+XvvTOm+L/UYLCYxFpfwYuAAqhxiq4yae0CMFwbL7Q==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.15.0", - "@typescript-eslint/type-utils": "8.15.0", - "@typescript-eslint/utils": "8.15.0", - "@typescript-eslint/visitor-keys": "8.15.0", + "@typescript-eslint/scope-manager": "8.16.0", + "@typescript-eslint/type-utils": "8.16.0", + "@typescript-eslint/utils": "8.16.0", + "@typescript-eslint/visitor-keys": "8.16.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -3307,16 +3307,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.15.0.tgz", - "integrity": "sha512-7n59qFpghG4uazrF9qtGKBZXn7Oz4sOMm8dwNWDQY96Xlm2oX67eipqcblDj+oY1lLCbf1oltMZFpUso66Kl1A==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.16.0.tgz", + "integrity": "sha512-D7DbgGFtsqIPIFMPJwCad9Gfi/hC0PWErRRHFnaCWoEDYi5tQUDiJCTmGUbBiLzjqAck4KcXt9Ayj0CNlIrF+w==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/scope-manager": "8.15.0", - "@typescript-eslint/types": "8.15.0", - "@typescript-eslint/typescript-estree": "8.15.0", - "@typescript-eslint/visitor-keys": "8.15.0", + "@typescript-eslint/scope-manager": "8.16.0", + "@typescript-eslint/types": "8.16.0", + "@typescript-eslint/typescript-estree": "8.16.0", + "@typescript-eslint/visitor-keys": "8.16.0", "debug": "^4.3.4" }, "engines": { @@ -3336,14 +3336,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.15.0.tgz", - "integrity": "sha512-QRGy8ADi4J7ii95xz4UoiymmmMd/zuy9azCaamnZ3FM8T5fZcex8UfJcjkiEZjJSztKfEBe3dZ5T/5RHAmw2mA==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.16.0.tgz", + "integrity": "sha512-mwsZWubQvBki2t5565uxF0EYvG+FwdFb8bMtDuGQLdCCnGPrDEDvm1gtfynuKlnpzeBRqdFCkMf9jg1fnAK8sg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.15.0", - "@typescript-eslint/visitor-keys": "8.15.0" + "@typescript-eslint/types": "8.16.0", + "@typescript-eslint/visitor-keys": "8.16.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3354,14 +3354,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.15.0.tgz", - "integrity": "sha512-UU6uwXDoI3JGSXmcdnP5d8Fffa2KayOhUUqr/AiBnG1Gl7+7ut/oyagVeSkh7bxQ0zSXV9ptRh/4N15nkCqnpw==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.16.0.tgz", + "integrity": "sha512-IqZHGG+g1XCWX9NyqnI/0CX5LL8/18awQqmkZSl2ynn8F76j579dByc0jhfVSnSnhf7zv76mKBQv9HQFKvDCgg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.15.0", - "@typescript-eslint/utils": "8.15.0", + "@typescript-eslint/typescript-estree": "8.16.0", + "@typescript-eslint/utils": "8.16.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -3382,9 +3382,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.15.0.tgz", - "integrity": "sha512-n3Gt8Y/KyJNe0S3yDCD2RVKrHBC4gTUcLTebVBXacPy091E6tNspFLKRXlk3hwT4G55nfr1n2AdFqi/XMxzmPQ==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.16.0.tgz", + "integrity": "sha512-NzrHj6thBAOSE4d9bsuRNMvk+BvaQvmY4dDglgkgGC0EW/tB3Kelnp3tAKH87GEwzoxgeQn9fNGRyFJM/xd+GQ==", "dev": true, "license": "MIT", "engines": { @@ -3396,14 +3396,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.15.0.tgz", - "integrity": "sha512-1eMp2JgNec/niZsR7ioFBlsh/Fk0oJbhaqO0jRyQBMgkz7RrFfkqF9lYYmBoGBaSiLnu8TAPQTwoTUiSTUW9dg==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.16.0.tgz", + "integrity": "sha512-E2+9IzzXMc1iaBy9zmo+UYvluE3TW7bCGWSF41hVWUE01o8nzr1rvOQYSxelxr6StUvRcTMe633eY8mXASMaNw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "8.15.0", - "@typescript-eslint/visitor-keys": "8.15.0", + "@typescript-eslint/types": "8.16.0", + "@typescript-eslint/visitor-keys": "8.16.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -3425,16 +3425,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.15.0.tgz", - "integrity": "sha512-k82RI9yGhr0QM3Dnq+egEpz9qB6Un+WLYhmoNcvl8ltMEededhh7otBVVIDDsEEttauwdY/hQoSsOv13lxrFzQ==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.16.0.tgz", + "integrity": "sha512-C1zRy/mOL8Pj157GiX4kaw7iyRLKfJXBR3L82hk5kS/GyHcOFmy4YUq/zfZti72I9wnuQtA/+xzft4wCC8PJdA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.15.0", - "@typescript-eslint/types": "8.15.0", - "@typescript-eslint/typescript-estree": "8.15.0" + "@typescript-eslint/scope-manager": "8.16.0", + "@typescript-eslint/types": "8.16.0", + "@typescript-eslint/typescript-estree": "8.16.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3453,13 +3453,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.15.0.tgz", - "integrity": "sha512-h8vYOulWec9LhpwfAdZf2bjr8xIp0KNKnpgqSz0qqYYKAW/QZKw3ktRndbiAtUz4acH4QLQavwZBYCc0wulA/Q==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.16.0.tgz", + "integrity": "sha512-pq19gbaMOmFE3CbL0ZB8J8BFCo2ckfHBfaIsaOZgBIF4EoISJIdLX5xRhd0FGB0LlHReNRuzoJoMGpTjq8F2CQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.15.0", + "@typescript-eslint/types": "8.16.0", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -3484,16 +3484,16 @@ } }, "node_modules/@vitejs/plugin-vue": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.0.tgz", - "integrity": "sha512-7n7KdUEtx/7Yl7I/WVAMZ1bEb0eVvXF3ummWTeLcs/9gvo9pJhuLdouSXGjdZ/MKD1acf1I272+X0RMua4/R3g==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.1.tgz", + "integrity": "sha512-cxh314tzaWwOLqVes2gnnCtvBDcM1UMdn+iFR+UjAn411dPT3tOmqrJjbMd7koZpMAmBM/GqeV4n9ge7JSiJJQ==", "dev": true, "license": "MIT", "engines": { "node": "^18.0.0 || >=20.0.0" }, "peerDependencies": { - "vite": "^5.0.0", + "vite": "^5.0.0 || ^6.0.0", "vue": "^3.2.25" } }, @@ -3609,15 +3609,15 @@ } }, "node_modules/@vue/eslint-config-typescript": { - "version": "14.1.3", - "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-14.1.3.tgz", - "integrity": "sha512-L4NUJQz/0We2QYtrNwRAGRy4KfpOagl5V3MpZZ+rQ51a+bKjlKYYrugi7lp7PIX8LolRgu06ZwDoswnSGWnAmA==", + "version": "14.1.4", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-14.1.4.tgz", + "integrity": "sha512-NcG1adLFde+t+TCaXlL38PHuZlBEuwDahgrPVyB052m9QeHOswVIAplMD2cXgH8vXieAVNF1+mXvyilpIO3+kg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "^8.8.1", + "@typescript-eslint/eslint-plugin": "^8.15.0", "fast-glob": "^3.3.2", - "typescript-eslint": "^8.8.1", + "typescript-eslint": "^8.15.0", "vue-eslint-parser": "^9.4.3" }, "engines": { @@ -3854,9 +3854,9 @@ } }, "node_modules/axios": { - "version": "1.7.7", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", - "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.8.tgz", + "integrity": "sha512-Uu0wb7KNqK2t5K+YQyVCLM76prD5sRFjKHbJYCP1J7JFGEQ6nN7HWn9+04LAeiJ3ji54lgS/gZCH1oxyrf1SPw==", "license": "MIT", "peer": true, "dependencies": { @@ -4210,9 +4210,9 @@ } }, "node_modules/chartjs-plugin-zoom": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/chartjs-plugin-zoom/-/chartjs-plugin-zoom-2.1.0.tgz", - "integrity": "sha512-7lMimfQCUaIJLhPJaWSAA4gw+1m8lyR3Wn+M3MxjHbM/XxRUnOxN7cM5RR9jUmxmyW0h7L2hZ8KhvUsqrFxy/Q==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/chartjs-plugin-zoom/-/chartjs-plugin-zoom-2.2.0.tgz", + "integrity": "sha512-in6kcdiTlP6npIVLMd4zXZ08PDUXC52gZ4FAy5oyjk1zX3gKarXMAof7B9eFiisf9WOC3bh2saHg+J5WtLXZeA==", "license": "MIT", "dependencies": { "@types/hammerjs": "^2.0.45", @@ -4249,9 +4249,9 @@ } }, "node_modules/cipher-base": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.5.tgz", - "integrity": "sha512-xq7ICKB4TMHUx7Tz1L9O2SGKOhYMOTR32oir45Bq28/AQTpHogKgHcoYFSdRbMtddl+ozNXfXY9jWcgYKmde0w==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.6.tgz", + "integrity": "sha512-3Ek9H3X6pj5TgenXYtNWdaBon1tgYCaebd+XPg0keyjEbEfkD4KkmAxkQ/i1vYvxdcT5nscLBfq9VJRmCBcFSw==", "dev": true, "license": "MIT", "dependencies": { @@ -5999,9 +5999,9 @@ "license": "MIT" }, "node_modules/magic-string": { - "version": "0.30.13", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.13.tgz", - "integrity": "sha512-8rYBO+MsWkgjDSOvLomYnzhdwEG51olQ4zL5KXnNJWV5MNmrb4rTZdrtkhxjnD/QyZUqR/Z/XDsUs/4ej2nx0g==", + "version": "0.30.14", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.14.tgz", + "integrity": "sha512-5c99P1WKTed11ZC0HMJOj6CDIue6F8ySu+bJL+85q1zBEIY8IklrJ1eiKC2NDRh3Ct3FcvmJPyQHb9erXMTJNw==", "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" @@ -6225,9 +6225,9 @@ "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", "funding": [ { "type": "github", @@ -6798,9 +6798,9 @@ } }, "node_modules/prettier": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", - "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.1.tgz", + "integrity": "sha512-G+YdqtITVZmOJje6QkXQWzl3fSfMxFwm1tjTyo9exhkmWSqC4Yhd1+lug++IlR2mvRVAxEDDWYkQdeSztajqgg==", "dev": true, "license": "MIT", "bin": { @@ -7459,9 +7459,9 @@ } }, "node_modules/ts-api-utils": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.1.tgz", - "integrity": "sha512-5RU2/lxTA3YUZxju61HO2U6EoZLvBLtmV2mbTvqyu4a/7s7RmJPT+1YekhMVsQhznRWk/czIwDUg+V8Q9ZuG4w==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.2.tgz", + "integrity": "sha512-ZF5gQIQa/UmzfvxbHZI3JXN0/Jt+vnAfAviNRAMc491laiK6YCLpCW9ft8oaCRFOTxCZtUTE6XB0ZQAe3olntw==", "dev": true, "license": "MIT", "engines": { @@ -7525,15 +7525,15 @@ } }, "node_modules/typescript-eslint": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.15.0.tgz", - "integrity": "sha512-wY4FRGl0ZI+ZU4Jo/yjdBu0lVTSML58pu6PgGtJmCufvzfV565pUF6iACQt092uFOd49iLOTX/sEVmHtbSrS+w==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.16.0.tgz", + "integrity": "sha512-wDkVmlY6O2do4V+lZd0GtRfbtXbeD0q9WygwXXSJnC1xorE8eqyC2L1tJimqpSeFrOzRlYtWnUp/uzgHQOgfBQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.15.0", - "@typescript-eslint/parser": "8.15.0", - "@typescript-eslint/utils": "8.15.0" + "@typescript-eslint/eslint-plugin": "8.16.0", + "@typescript-eslint/parser": "8.16.0", + "@typescript-eslint/utils": "8.16.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -7573,9 +7573,9 @@ } }, "node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", "dev": true, "license": "MIT" }, @@ -7829,9 +7829,9 @@ } }, "node_modules/vue-router": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.4.5.tgz", - "integrity": "sha512-4fKZygS8cH1yCyuabAXGUAsyi1b2/o/OKgu/RUb+znIYOxPRxdkytJEx+0wGcpBE1pX6vUgh5jwWOKRGvuA/7Q==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.5.0.tgz", + "integrity": "sha512-HDuk+PuH5monfNuY+ct49mNmkCRK4xJAV9Ts4z9UFc4rzdDnxQLyCMGGc8pKhZhHTVzfanpNwB/lwqevcBwI4w==", "license": "MIT", "dependencies": { "@vue/devtools-api": "^6.6.4" diff --git a/package.json b/package.json index a79dfb56576c83e9f35a96f42976cec9818f2ecd..fcc3a0b2c35e492037b5afc817ef178eb7dd735c 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "ajv": "~8.17.0", "bootstrap": "~5.3.0", "chart.js": "~4.4.0", - "chartjs-plugin-zoom": "~2.1.0", + "chartjs-plugin-zoom": "~2.2.0", "dayjs": "~1.11.0", "dompurify": "~3.2.0", "filesize": "~10.1.0", @@ -33,7 +33,7 @@ "sortablejs": "^1.15.2", "vue": "~3.5.0", "vue-matomo": "^4.2.0", - "vue-router": "~4.4.0", + "vue-router": "~4.5.0", "vue3-cookies": "~1.0.0" }, "devDependencies": { @@ -55,7 +55,7 @@ "eslint": "~9.12.0", "eslint-plugin-vue": "~9.31.0", "highlight.js": "^11.9.0", - "prettier": "~3.3.0", + "prettier": "~3.4.0", "sass": "^1.66.0", "typescript": "~5.5.0", "vite": "~5.4.0", diff --git a/src/App.vue b/src/App.vue index 4f96203d759b40dc40a7028367c0b4d5eb006603..3c0d059dd78da8e2526b4ba210d4a22403ff2194 100644 --- a/src/App.vue +++ b/src/App.vue @@ -176,10 +176,4 @@ onMounted(() => { <AppFooter /> </template> -<style scoped> -@media (min-width: 1550px) { - .container-xxxl { - max-width: 1500px !important; - } -} -</style> +<style scoped></style> diff --git a/src/assets/main.css b/src/assets/main.css index 0409e705a7f134cc895ac2c58aa18b6ceb835a67..0d119addbd61fb34df399c995bbc3141962f312c 100644 --- a/src/assets/main.css +++ b/src/assets/main.css @@ -46,3 +46,9 @@ pre { .parameter-form-tooltip { --bs-tooltip-max-width: 350px; } + +@media (min-width: 1550px) { + .container-xxxl { + max-width: 1500px !important; + } +} \ No newline at end of file diff --git a/src/client/sdk.gen.ts b/src/client/sdk.gen.ts index 24a6202224c54f87178b8f8ab34a264f7a5f798b..eb05917e3aad9a4d00b8d768b5dd3f7a4815dbcb 100644 --- a/src/client/sdk.gen.ts +++ b/src/client/sdk.gen.ts @@ -3,7 +3,7 @@ import { createClient, createConfig, - type Options, + type OptionsLegacyParser, formDataBodySerializer, } from "@hey-api/client-axios"; import type { @@ -294,7 +294,7 @@ export class ApiTokenService { * Permissions `api_token:list_all` required. See parameter `uid` for exception. */ public static apiTokenListToken<ThrowOnError extends boolean = false>( - options?: Options<ApiTokenListTokenData, ThrowOnError>, + options?: OptionsLegacyParser<ApiTokenListTokenData, ThrowOnError>, ) { return (options?.client ?? client).get< ApiTokenListTokenResponse, @@ -313,7 +313,7 @@ export class ApiTokenService { * Permission `api_token:create` required. */ public static apiTokenCreateToken<ThrowOnError extends boolean = false>( - options: Options<ApiTokenCreateTokenData, ThrowOnError>, + options: OptionsLegacyParser<ApiTokenCreateTokenData, ThrowOnError>, ) { return (options?.client ?? client).post< ApiTokenCreateTokenResponse, @@ -333,7 +333,7 @@ export class ApiTokenService { * otherwise `api_token:read_any` required. */ public static apiTokenGetToken<ThrowOnError extends boolean = false>( - options: Options<ApiTokenGetTokenData, ThrowOnError>, + options: OptionsLegacyParser<ApiTokenGetTokenData, ThrowOnError>, ) { return (options?.client ?? client).get< ApiTokenGetTokenResponse, @@ -353,7 +353,7 @@ export class ApiTokenService { * otherwise `api_token:delete_any` required. */ public static apiTokenDeleteToken<ThrowOnError extends boolean = false>( - options: Options<ApiTokenDeleteTokenData, ThrowOnError>, + options: OptionsLegacyParser<ApiTokenDeleteTokenData, ThrowOnError>, ) { return (options?.client ?? client).delete< ApiTokenDeleteTokenResponse, @@ -372,7 +372,7 @@ export class AuthService { * Redirect route to OIDC provider to kickstart the login process. */ public static authLogin<ThrowOnError extends boolean = false>( - options?: Options<AuthLoginData, ThrowOnError>, + options?: OptionsLegacyParser<AuthLoginData, ThrowOnError>, ) { return (options?.client ?? client).get<void, unknown, ThrowOnError>({ ...options, @@ -394,7 +394,7 @@ export class AuthService { * This JWT has to be sent to all authorized endpoints via the HTTPBearer scheme. */ public static authLoginCallback<ThrowOnError extends boolean = false>( - options: Options<AuthLoginCallbackData, ThrowOnError>, + options: OptionsLegacyParser<AuthLoginCallbackData, ThrowOnError>, ) { return (options?.client ?? client).get<void, unknown, ThrowOnError>({ ...options, @@ -407,7 +407,7 @@ export class AuthService { * Logout the user from the system by deleting the bearer cookie. */ public static authLogout<ThrowOnError extends boolean = false>( - options?: Options<unknown, ThrowOnError>, + options?: OptionsLegacyParser<unknown, ThrowOnError>, ) { return (options?.client ?? client).get<void, unknown, ThrowOnError>({ ...options, @@ -424,7 +424,7 @@ export class BucketService { * Permission `bucket:list_all` required. See parameter `owner_id` for exception. */ public static bucketListBuckets<ThrowOnError extends boolean = false>( - options?: Options<BucketListBucketsData, ThrowOnError>, + options?: OptionsLegacyParser<BucketListBucketsData, ThrowOnError>, ) { return (options?.client ?? client).get< BucketListBucketsResponse, @@ -447,7 +447,7 @@ export class BucketService { * Permission `bucket:create` required. */ public static bucketCreateBucket<ThrowOnError extends boolean = false>( - options: Options<BucketCreateBucketData, ThrowOnError>, + options: OptionsLegacyParser<BucketCreateBucketData, ThrowOnError>, ) { return (options?.client ?? client).post< BucketCreateBucketResponse, @@ -467,7 +467,7 @@ export class BucketService { * otherwise `bucket:list_all` */ public static bucketListBucketOtrs<ThrowOnError extends boolean = false>( - options?: Options<BucketListBucketOtrsData, ThrowOnError>, + options?: OptionsLegacyParser<BucketListBucketOtrsData, ThrowOnError>, ) { return (options?.client ?? client).get< BucketListBucketOtrsResponse, @@ -487,7 +487,7 @@ export class BucketService { * otherwise `bucket:read_any` required. */ public static bucketGetBucket<ThrowOnError extends boolean = false>( - options: Options<BucketGetBucketData, ThrowOnError>, + options: OptionsLegacyParser<BucketGetBucketData, ThrowOnError>, ) { return (options?.client ?? client).get< BucketGetBucketResponse, @@ -507,7 +507,7 @@ export class BucketService { * otherwise `bucket:delete_any` required. */ public static bucketDeleteBucket<ThrowOnError extends boolean = false>( - options: Options<BucketDeleteBucketData, ThrowOnError>, + options: OptionsLegacyParser<BucketDeleteBucketData, ThrowOnError>, ) { return (options?.client ?? client).delete< BucketDeleteBucketResponse, @@ -527,7 +527,7 @@ export class BucketService { * otherwise `bucket:read_any` required. */ public static bucketGetBucketOtr<ThrowOnError extends boolean = false>( - options: Options<BucketGetBucketOtrData, ThrowOnError>, + options: OptionsLegacyParser<BucketGetBucketOtrData, ThrowOnError>, ) { return (options?.client ?? client).get< BucketGetBucketOtrResponse, @@ -547,7 +547,7 @@ export class BucketService { * otherwise `bucket:update_any` required. */ public static bucketCreateBucketOtr<ThrowOnError extends boolean = false>( - options: Options<BucketCreateBucketOtrData, ThrowOnError>, + options: OptionsLegacyParser<BucketCreateBucketOtrData, ThrowOnError>, ) { return (options?.client ?? client).post< BucketCreateBucketOtrResponse, @@ -567,7 +567,7 @@ export class BucketService { * otherwise `bucket:update_any` required. */ public static bucketAcceptBucketOtr<ThrowOnError extends boolean = false>( - options: Options<BucketAcceptBucketOtrData, ThrowOnError>, + options: OptionsLegacyParser<BucketAcceptBucketOtrData, ThrowOnError>, ) { return (options?.client ?? client).patch< BucketAcceptBucketOtrResponse, @@ -587,7 +587,7 @@ export class BucketService { * otherwise `bucket:update_any` required. */ public static bucketDeleteBucketOtr<ThrowOnError extends boolean = false>( - options: Options<BucketDeleteBucketOtrData, ThrowOnError>, + options: OptionsLegacyParser<BucketDeleteBucketOtrData, ThrowOnError>, ) { return (options?.client ?? client).delete< BucketDeleteBucketOtrResponse, @@ -608,7 +608,12 @@ export class BucketService { */ public static bucketUpdateBucketPublicState< ThrowOnError extends boolean = false, - >(options: Options<BucketUpdateBucketPublicStateData, ThrowOnError>) { + >( + options: OptionsLegacyParser< + BucketUpdateBucketPublicStateData, + ThrowOnError + >, + ) { return (options?.client ?? client).patch< BucketUpdateBucketPublicStateResponse, BucketUpdateBucketPublicStateError, @@ -626,7 +631,7 @@ export class BucketService { * Permission `bucket:update_any` required. */ public static bucketUpdateBucketLimits<ThrowOnError extends boolean = false>( - options: Options<BucketUpdateBucketLimitsData, ThrowOnError>, + options: OptionsLegacyParser<BucketUpdateBucketLimitsData, ThrowOnError>, ) { return (options?.client ?? client).patch< BucketUpdateBucketLimitsResponse, @@ -648,7 +653,12 @@ export class BucketPermissionService { */ public static bucketPermissionListPermissions< ThrowOnError extends boolean = false, - >(options?: Options<BucketPermissionListPermissionsData, ThrowOnError>) { + >( + options?: OptionsLegacyParser< + BucketPermissionListPermissionsData, + ThrowOnError + >, + ) { return (options?.client ?? client).get< BucketPermissionListPermissionsResponse, BucketPermissionListPermissionsError, @@ -667,7 +677,12 @@ export class BucketPermissionService { */ public static bucketPermissionCreatePermission< ThrowOnError extends boolean = false, - >(options: Options<BucketPermissionCreatePermissionData, ThrowOnError>) { + >( + options: OptionsLegacyParser< + BucketPermissionCreatePermissionData, + ThrowOnError + >, + ) { return (options?.client ?? client).post< BucketPermissionCreatePermissionResponse, BucketPermissionCreatePermissionError, @@ -688,7 +703,10 @@ export class BucketPermissionService { public static bucketPermissionListPermissionsPerUser< ThrowOnError extends boolean = false, >( - options: Options<BucketPermissionListPermissionsPerUserData, ThrowOnError>, + options: OptionsLegacyParser< + BucketPermissionListPermissionsPerUserData, + ThrowOnError + >, ) { return (options?.client ?? client).get< BucketPermissionListPermissionsPerUserResponse, @@ -710,7 +728,7 @@ export class BucketPermissionService { public static bucketPermissionListPermissionsPerBucket< ThrowOnError extends boolean = false, >( - options: Options< + options: OptionsLegacyParser< BucketPermissionListPermissionsPerBucketData, ThrowOnError >, @@ -735,7 +753,10 @@ export class BucketPermissionService { public static bucketPermissionGetPermissionForBucket< ThrowOnError extends boolean = false, >( - options: Options<BucketPermissionGetPermissionForBucketData, ThrowOnError>, + options: OptionsLegacyParser< + BucketPermissionGetPermissionForBucketData, + ThrowOnError + >, ) { return (options?.client ?? client).get< BucketPermissionGetPermissionForBucketResponse, @@ -755,7 +776,12 @@ export class BucketPermissionService { */ public static bucketPermissionUpdatePermission< ThrowOnError extends boolean = false, - >(options: Options<BucketPermissionUpdatePermissionData, ThrowOnError>) { + >( + options: OptionsLegacyParser< + BucketPermissionUpdatePermissionData, + ThrowOnError + >, + ) { return (options?.client ?? client).put< BucketPermissionUpdatePermissionResponse, BucketPermissionUpdatePermissionError, @@ -775,7 +801,12 @@ export class BucketPermissionService { */ public static bucketPermissionDeletePermission< ThrowOnError extends boolean = false, - >(options: Options<BucketPermissionDeletePermissionData, ThrowOnError>) { + >( + options: OptionsLegacyParser< + BucketPermissionDeletePermissionData, + ThrowOnError + >, + ) { return (options?.client ?? client).delete< BucketPermissionDeletePermissionResponse, BucketPermissionDeletePermissionError, @@ -795,7 +826,7 @@ export class NewsService { * Permission `news:create` required. */ public static newsCreateNews<ThrowOnError extends boolean = false>( - options: Options<NewsCreateNewsData, ThrowOnError>, + options: OptionsLegacyParser<NewsCreateNewsData, ThrowOnError>, ) { return (options?.client ?? client).post< NewsCreateNewsResponse, @@ -817,7 +848,7 @@ export class NewsService { * Permission `news:list` required. */ public static newsListNews<ThrowOnError extends boolean = false>( - options?: Options<NewsListNewsData, ThrowOnError>, + options?: OptionsLegacyParser<NewsListNewsData, ThrowOnError>, ) { return (options?.client ?? client).get< NewsListNewsResponse, @@ -836,7 +867,7 @@ export class NewsService { * Permission `news:list` required. */ public static newsListLatestNews<ThrowOnError extends boolean = false>( - options?: Options<unknown, ThrowOnError>, + options?: OptionsLegacyParser<unknown, ThrowOnError>, ) { return (options?.client ?? client).get< NewsListLatestNewsResponse, @@ -855,7 +886,7 @@ export class NewsService { * Permission `news:read` required. */ public static newsGetNews<ThrowOnError extends boolean = false>( - options: Options<NewsGetNewsData, ThrowOnError>, + options: OptionsLegacyParser<NewsGetNewsData, ThrowOnError>, ) { return (options?.client ?? client).get< NewsGetNewsResponse, @@ -874,7 +905,7 @@ export class NewsService { * Permission `news:delete` required. */ public static newsDeleteNews<ThrowOnError extends boolean = false>( - options: Options<NewsDeleteNewsData, ThrowOnError>, + options: OptionsLegacyParser<NewsDeleteNewsData, ThrowOnError>, ) { return (options?.client ?? client).delete< NewsDeleteNewsResponse, @@ -895,7 +926,7 @@ export class ResourceService { * Permission `resource:create` required. */ public static resourceCreateResource<ThrowOnError extends boolean = false>( - options: Options<ResourceCreateResourceData, ThrowOnError>, + options: OptionsLegacyParser<ResourceCreateResourceData, ThrowOnError>, ) { return (options?.client ?? client).post< ResourceCreateResourceResponse, @@ -914,7 +945,7 @@ export class ResourceService { * Permission `resource:list` required. */ public static resourceListResources<ThrowOnError extends boolean = false>( - options?: Options<ResourceListResourcesData, ThrowOnError>, + options?: OptionsLegacyParser<ResourceListResourcesData, ThrowOnError>, ) { return (options?.client ?? client).get< ResourceListResourcesResponse, @@ -933,7 +964,7 @@ export class ResourceService { * Permission `resource:update_any` required. */ public static resourceListSyncRequests<ThrowOnError extends boolean = false>( - options?: Options<unknown, ThrowOnError>, + options?: OptionsLegacyParser<unknown, ThrowOnError>, ) { return (options?.client ?? client).get< ResourceListSyncRequestsResponse, @@ -953,7 +984,7 @@ export class ResourceService { * otherwise `resource:list_all` */ public static resourceListResourceOtrs<ThrowOnError extends boolean = false>( - options?: Options<ResourceListResourceOtrsData, ThrowOnError>, + options?: OptionsLegacyParser<ResourceListResourceOtrsData, ThrowOnError>, ) { return (options?.client ?? client).get< ResourceListResourceOtrsResponse, @@ -972,7 +1003,7 @@ export class ResourceService { * Permission `resource:read` required. */ public static resourceGetResource<ThrowOnError extends boolean = false>( - options: Options<ResourceGetResourceData, ThrowOnError>, + options: OptionsLegacyParser<ResourceGetResourceData, ThrowOnError>, ) { return (options?.client ?? client).get< ResourceGetResourceResponse, @@ -991,7 +1022,7 @@ export class ResourceService { * Permission `resource:delete` required. */ public static resourceDeleteResource<ThrowOnError extends boolean = false>( - options: Options<ResourceDeleteResourceData, ThrowOnError>, + options: OptionsLegacyParser<ResourceDeleteResourceData, ThrowOnError>, ) { return (options?.client ?? client).delete< ResourceDeleteResourceResponse, @@ -1011,7 +1042,7 @@ export class ResourceService { * otherwise `resource:read_any` required. */ public static resourceGetResourceOtr<ThrowOnError extends boolean = false>( - options: Options<ResourceGetResourceOtrData, ThrowOnError>, + options: OptionsLegacyParser<ResourceGetResourceOtrData, ThrowOnError>, ) { return (options?.client ?? client).get< ResourceGetResourceOtrResponse, @@ -1031,7 +1062,7 @@ export class ResourceService { * otherwise `resource:update_any` required. */ public static resourceCreateResourceOtr<ThrowOnError extends boolean = false>( - options: Options<ResourceCreateResourceOtrData, ThrowOnError>, + options: OptionsLegacyParser<ResourceCreateResourceOtrData, ThrowOnError>, ) { return (options?.client ?? client).post< ResourceCreateResourceOtrResponse, @@ -1051,7 +1082,7 @@ export class ResourceService { * otherwise `resource:update_any` required. */ public static resourceAcceptResourceOtr<ThrowOnError extends boolean = false>( - options: Options<ResourceAcceptResourceOtrData, ThrowOnError>, + options: OptionsLegacyParser<ResourceAcceptResourceOtrData, ThrowOnError>, ) { return (options?.client ?? client).patch< ResourceAcceptResourceOtrResponse, @@ -1071,7 +1102,7 @@ export class ResourceService { * otherwise `resource:update_any` required. */ public static resourceDeleteResourceOtr<ThrowOnError extends boolean = false>( - options: Options<ResourceDeleteResourceOtrData, ThrowOnError>, + options: OptionsLegacyParser<ResourceDeleteResourceOtrData, ThrowOnError>, ) { return (options?.client ?? client).delete< ResourceDeleteResourceOtrResponse, @@ -1093,7 +1124,12 @@ export class ResourceVersionService { */ public static resourceVersionListResourceVersions< ThrowOnError extends boolean = false, - >(options: Options<ResourceVersionListResourceVersionsData, ThrowOnError>) { + >( + options: OptionsLegacyParser< + ResourceVersionListResourceVersionsData, + ThrowOnError + >, + ) { return (options?.client ?? client).get< ResourceVersionListResourceVersionsResponse, ResourceVersionListResourceVersionsError, @@ -1112,7 +1148,12 @@ export class ResourceVersionService { */ public static resourceVersionRequestResourceVersion< ThrowOnError extends boolean = false, - >(options: Options<ResourceVersionRequestResourceVersionData, ThrowOnError>) { + >( + options: OptionsLegacyParser< + ResourceVersionRequestResourceVersionData, + ThrowOnError + >, + ) { return (options?.client ?? client).post< ResourceVersionRequestResourceVersionResponse, ResourceVersionRequestResourceVersionError, @@ -1132,7 +1173,12 @@ export class ResourceVersionService { */ public static resourceVersionGetResourceVersion< ThrowOnError extends boolean = false, - >(options: Options<ResourceVersionGetResourceVersionData, ThrowOnError>) { + >( + options: OptionsLegacyParser< + ResourceVersionGetResourceVersionData, + ThrowOnError + >, + ) { return (options?.client ?? client).get< ResourceVersionGetResourceVersionResponse, ResourceVersionGetResourceVersionError, @@ -1151,7 +1197,12 @@ export class ResourceVersionService { */ public static resourceVersionResourceFileTree< ThrowOnError extends boolean = false, - >(options: Options<ResourceVersionResourceFileTreeData, ThrowOnError>) { + >( + options: OptionsLegacyParser< + ResourceVersionResourceFileTreeData, + ThrowOnError + >, + ) { return (options?.client ?? client).get< ResourceVersionResourceFileTreeResponse, ResourceVersionResourceFileTreeError, @@ -1171,7 +1222,7 @@ export class ResourceVersionService { public static resourceVersionRequestResourceVersionReview< ThrowOnError extends boolean = false, >( - options: Options< + options: OptionsLegacyParser< ResourceVersionRequestResourceVersionReviewData, ThrowOnError >, @@ -1195,7 +1246,7 @@ export class ResourceVersionService { public static resourceVersionRequestResourceVersionSync< ThrowOnError extends boolean = false, >( - options: Options< + options: OptionsLegacyParser< ResourceVersionRequestResourceVersionSyncData, ThrowOnError >, @@ -1218,7 +1269,12 @@ export class ResourceVersionService { */ public static resourceVersionResourceVersionReview< ThrowOnError extends boolean = false, - >(options: Options<ResourceVersionResourceVersionReviewData, ThrowOnError>) { + >( + options: OptionsLegacyParser< + ResourceVersionResourceVersionReviewData, + ThrowOnError + >, + ) { return (options?.client ?? client).put< ResourceVersionResourceVersionReviewResponse, ResourceVersionResourceVersionReviewError, @@ -1237,7 +1293,12 @@ export class ResourceVersionService { */ public static resourceVersionResourceVersionSync< ThrowOnError extends boolean = false, - >(options: Options<ResourceVersionResourceVersionSyncData, ThrowOnError>) { + >( + options: OptionsLegacyParser< + ResourceVersionResourceVersionSyncData, + ThrowOnError + >, + ) { return (options?.client ?? client).put< ResourceVersionResourceVersionSyncResponse, ResourceVersionResourceVersionSyncError, @@ -1256,7 +1317,12 @@ export class ResourceVersionService { */ public static resourceVersionResourceVersionLatest< ThrowOnError extends boolean = false, - >(options: Options<ResourceVersionResourceVersionLatestData, ThrowOnError>) { + >( + options: OptionsLegacyParser< + ResourceVersionResourceVersionLatestData, + ThrowOnError + >, + ) { return (options?.client ?? client).put< ResourceVersionResourceVersionLatestResponse, ResourceVersionResourceVersionLatestError, @@ -1276,7 +1342,7 @@ export class ResourceVersionService { public static resourceVersionDeleteResourceVersionCluster< ThrowOnError extends boolean = false, >( - options: Options< + options: OptionsLegacyParser< ResourceVersionDeleteResourceVersionClusterData, ThrowOnError >, @@ -1300,7 +1366,10 @@ export class ResourceVersionService { public static resourceVersionDeleteResourceVersionS3< ThrowOnError extends boolean = false, >( - options: Options<ResourceVersionDeleteResourceVersionS3Data, ThrowOnError>, + options: OptionsLegacyParser< + ResourceVersionDeleteResourceVersionS3Data, + ThrowOnError + >, ) { return (options?.client ?? client).delete< ResourceVersionDeleteResourceVersionS3Response, @@ -1321,7 +1390,7 @@ export class S3KeyService { * Permission `s3_key:list` required. */ public static s3KeyGetUserKeys<ThrowOnError extends boolean = false>( - options: Options<S3KeyGetUserKeysData, ThrowOnError>, + options: OptionsLegacyParser<S3KeyGetUserKeysData, ThrowOnError>, ) { return (options?.client ?? client).get< S3KeyGetUserKeysResponse, @@ -1340,7 +1409,7 @@ export class S3KeyService { * Permission `s3_key:create` required. */ public static s3KeyCreateUserKey<ThrowOnError extends boolean = false>( - options: Options<S3KeyCreateUserKeyData, ThrowOnError>, + options: OptionsLegacyParser<S3KeyCreateUserKeyData, ThrowOnError>, ) { return (options?.client ?? client).post< S3KeyCreateUserKeyResponse, @@ -1359,7 +1428,7 @@ export class S3KeyService { * Permission `s3_key:read` required. */ public static s3KeyGetUserKey<ThrowOnError extends boolean = false>( - options: Options<S3KeyGetUserKeyData, ThrowOnError>, + options: OptionsLegacyParser<S3KeyGetUserKeyData, ThrowOnError>, ) { return (options?.client ?? client).get< S3KeyGetUserKeyResponse, @@ -1378,7 +1447,7 @@ export class S3KeyService { * Permission `s3_key:delete` required if the current user is the target, otherwise `s3_key:delete_any` required. */ public static s3KeyDeleteUserKey<ThrowOnError extends boolean = false>( - options: Options<S3KeyDeleteUserKeyData, ThrowOnError>, + options: OptionsLegacyParser<S3KeyDeleteUserKeyData, ThrowOnError>, ) { return (options?.client ?? client).delete< S3KeyDeleteUserKeyResponse, @@ -1399,7 +1468,7 @@ export class UserService { * Permission `user:create` required. */ public static userCreateUser<ThrowOnError extends boolean = false>( - options: Options<UserCreateUserData, ThrowOnError>, + options: OptionsLegacyParser<UserCreateUserData, ThrowOnError>, ) { return (options?.client ?? client).post< UserCreateUserResponse, @@ -1418,7 +1487,7 @@ export class UserService { * Permission `user:list` required. */ public static userListUsers<ThrowOnError extends boolean = false>( - options?: Options<UserListUsersData, ThrowOnError>, + options?: OptionsLegacyParser<UserListUsersData, ThrowOnError>, ) { return (options?.client ?? client).get< UserListUsersResponse, @@ -1437,7 +1506,7 @@ export class UserService { * Permission `user: search` required. */ public static userSearchUsers<ThrowOnError extends boolean = false>( - options: Options<UserSearchUsersData, ThrowOnError>, + options: OptionsLegacyParser<UserSearchUsersData, ThrowOnError>, ) { return (options?.client ?? client).get< UserSearchUsersResponse, @@ -1456,7 +1525,7 @@ export class UserService { * Permission `user:read` required. */ public static userGetLoggedInUser<ThrowOnError extends boolean = false>( - options?: Options<unknown, ThrowOnError>, + options?: OptionsLegacyParser<unknown, ThrowOnError>, ) { return (options?.client ?? client).get< UserGetLoggedInUserResponse, @@ -1475,7 +1544,7 @@ export class UserService { * Permission `user:read` required. */ public static userGetUser<ThrowOnError extends boolean = false>( - options: Options<UserGetUserData, ThrowOnError>, + options: OptionsLegacyParser<UserGetUserData, ThrowOnError>, ) { return (options?.client ?? client).get< UserGetUserResponse, @@ -1494,7 +1563,7 @@ export class UserService { * Permission `user:update` required. */ public static userUpdateRoles<ThrowOnError extends boolean = false>( - options: Options<UserUpdateRolesData, ThrowOnError>, + options: OptionsLegacyParser<UserUpdateRolesData, ThrowOnError>, ) { return (options?.client ?? client).put< UserUpdateRolesResponse, @@ -1513,7 +1582,7 @@ export class UserService { * Permission `user:create` required. */ public static userResendInvitation<ThrowOnError extends boolean = false>( - options: Options<UserResendInvitationData, ThrowOnError>, + options: OptionsLegacyParser<UserResendInvitationData, ThrowOnError>, ) { return (options?.client ?? client).patch< UserResendInvitationResponse, @@ -1538,7 +1607,7 @@ export class WorkflowService { * Permission `workflow:create` required. */ public static workflowCreateWorkflow<ThrowOnError extends boolean = false>( - options: Options<WorkflowCreateWorkflowData, ThrowOnError>, + options: OptionsLegacyParser<WorkflowCreateWorkflowData, ThrowOnError>, ) { return (options?.client ?? client).post< WorkflowCreateWorkflowResponse, @@ -1557,7 +1626,7 @@ export class WorkflowService { * Permission `workflow:list` required. */ public static workflowListWorkflows<ThrowOnError extends boolean = false>( - options?: Options<WorkflowListWorkflowsData, ThrowOnError>, + options?: OptionsLegacyParser<WorkflowListWorkflowsData, ThrowOnError>, ) { return (options?.client ?? client).get< WorkflowListWorkflowsResponse, @@ -1577,7 +1646,7 @@ export class WorkflowService { * otherwise `workflow:list_all` */ public static workflowListWorkflowOtrs<ThrowOnError extends boolean = false>( - options?: Options<WorkflowListWorkflowOtrsData, ThrowOnError>, + options?: OptionsLegacyParser<WorkflowListWorkflowOtrsData, ThrowOnError>, ) { return (options?.client ?? client).get< WorkflowListWorkflowOtrsResponse, @@ -1599,7 +1668,10 @@ export class WorkflowService { public static workflowGetDeveloperWorkflowStatistics< ThrowOnError extends boolean = false, >( - options?: Options<WorkflowGetDeveloperWorkflowStatisticsData, ThrowOnError>, + options?: OptionsLegacyParser< + WorkflowGetDeveloperWorkflowStatisticsData, + ThrowOnError + >, ) { return (options?.client ?? client).get< WorkflowGetDeveloperWorkflowStatisticsResponse, @@ -1618,7 +1690,7 @@ export class WorkflowService { * Permission `workflow:read` required. */ public static workflowGetWorkflow<ThrowOnError extends boolean = false>( - options: Options<WorkflowGetWorkflowData, ThrowOnError>, + options: OptionsLegacyParser<WorkflowGetWorkflowData, ThrowOnError>, ) { return (options?.client ?? client).get< WorkflowGetWorkflowResponse, @@ -1638,7 +1710,7 @@ export class WorkflowService { * other `workflow:delete_any`. */ public static workflowDeleteWorkflow<ThrowOnError extends boolean = false>( - options: Options<WorkflowDeleteWorkflowData, ThrowOnError>, + options: OptionsLegacyParser<WorkflowDeleteWorkflowData, ThrowOnError>, ) { return (options?.client ?? client).delete< WorkflowDeleteWorkflowResponse, @@ -1658,7 +1730,7 @@ export class WorkflowService { * otherwise `workflow:read_any` required. */ public static workflowGetWorkflowOtr<ThrowOnError extends boolean = false>( - options: Options<WorkflowGetWorkflowOtrData, ThrowOnError>, + options: OptionsLegacyParser<WorkflowGetWorkflowOtrData, ThrowOnError>, ) { return (options?.client ?? client).get< WorkflowGetWorkflowOtrResponse, @@ -1678,7 +1750,7 @@ export class WorkflowService { * otherwise `workflow:update_any` required. */ public static workflowCreateWorkflowOtr<ThrowOnError extends boolean = false>( - options: Options<WorkflowCreateWorkflowOtrData, ThrowOnError>, + options: OptionsLegacyParser<WorkflowCreateWorkflowOtrData, ThrowOnError>, ) { return (options?.client ?? client).post< WorkflowCreateWorkflowOtrResponse, @@ -1698,7 +1770,7 @@ export class WorkflowService { * otherwise `workflow:update_any` required. */ public static workflowAcceptWorkflowOtr<ThrowOnError extends boolean = false>( - options: Options<WorkflowAcceptWorkflowOtrData, ThrowOnError>, + options: OptionsLegacyParser<WorkflowAcceptWorkflowOtrData, ThrowOnError>, ) { return (options?.client ?? client).patch< WorkflowAcceptWorkflowOtrResponse, @@ -1718,7 +1790,7 @@ export class WorkflowService { * otherwise `workflow:update_any` required. */ public static workflowDeleteWorkflowOtr<ThrowOnError extends boolean = false>( - options: Options<WorkflowDeleteWorkflowOtrData, ThrowOnError>, + options: OptionsLegacyParser<WorkflowDeleteWorkflowOtrData, ThrowOnError>, ) { return (options?.client ?? client).delete< WorkflowDeleteWorkflowOtrResponse, @@ -1738,7 +1810,12 @@ export class WorkflowService { */ public static workflowGetWorkflowStatistics< ThrowOnError extends boolean = false, - >(options: Options<WorkflowGetWorkflowStatisticsData, ThrowOnError>) { + >( + options: OptionsLegacyParser< + WorkflowGetWorkflowStatisticsData, + ThrowOnError + >, + ) { return (options?.client ?? client).get< WorkflowGetWorkflowStatisticsResponse, WorkflowGetWorkflowStatisticsError, @@ -1756,7 +1833,7 @@ export class WorkflowService { * Permission `workflow:update` required. */ public static workflowUpdateWorkflow<ThrowOnError extends boolean = false>( - options: Options<WorkflowUpdateWorkflowData, ThrowOnError>, + options: OptionsLegacyParser<WorkflowUpdateWorkflowData, ThrowOnError>, ) { return (options?.client ?? client).post< WorkflowUpdateWorkflowResponse, @@ -1779,7 +1856,7 @@ export class WorkflowCredentialsService { public static workflowCredentialsGetWorkflowCredentials< ThrowOnError extends boolean = false, >( - options: Options< + options: OptionsLegacyParser< WorkflowCredentialsGetWorkflowCredentialsData, ThrowOnError >, @@ -1803,7 +1880,7 @@ export class WorkflowCredentialsService { public static workflowCredentialsUpdateWorkflowCredentials< ThrowOnError extends boolean = false, >( - options: Options< + options: OptionsLegacyParser< WorkflowCredentialsUpdateWorkflowCredentialsData, ThrowOnError >, @@ -1828,7 +1905,7 @@ export class WorkflowCredentialsService { public static workflowCredentialsDeleteWorkflowCredentials< ThrowOnError extends boolean = false, >( - options: Options< + options: OptionsLegacyParser< WorkflowCredentialsDeleteWorkflowCredentialsData, ThrowOnError >, @@ -1854,7 +1931,12 @@ export class WorkflowExecutionService { */ public static workflowExecutionStartWorkflow< ThrowOnError extends boolean = false, - >(options: Options<WorkflowExecutionStartWorkflowData, ThrowOnError>) { + >( + options: OptionsLegacyParser< + WorkflowExecutionStartWorkflowData, + ThrowOnError + >, + ) { return (options?.client ?? client).post< WorkflowExecutionStartWorkflowResponse, WorkflowExecutionStartWorkflowError, @@ -1879,7 +1961,7 @@ export class WorkflowExecutionService { public static workflowExecutionListWorkflowExecutions< ThrowOnError extends boolean = false, >( - options?: Options< + options?: OptionsLegacyParser< WorkflowExecutionListWorkflowExecutionsData, ThrowOnError >, @@ -1907,7 +1989,10 @@ export class WorkflowExecutionService { public static workflowExecutionStartArbitraryWorkflow< ThrowOnError extends boolean = false, >( - options: Options<WorkflowExecutionStartArbitraryWorkflowData, ThrowOnError>, + options: OptionsLegacyParser< + WorkflowExecutionStartArbitraryWorkflowData, + ThrowOnError + >, ) { return (options?.client ?? client).post< WorkflowExecutionStartArbitraryWorkflowResponse, @@ -1928,7 +2013,12 @@ export class WorkflowExecutionService { */ public static workflowExecutionGetWorkflowExecution< ThrowOnError extends boolean = false, - >(options: Options<WorkflowExecutionGetWorkflowExecutionData, ThrowOnError>) { + >( + options: OptionsLegacyParser< + WorkflowExecutionGetWorkflowExecutionData, + ThrowOnError + >, + ) { return (options?.client ?? client).get< WorkflowExecutionGetWorkflowExecutionResponse, WorkflowExecutionGetWorkflowExecutionError, @@ -1949,7 +2039,7 @@ export class WorkflowExecutionService { public static workflowExecutionDeleteWorkflowExecution< ThrowOnError extends boolean = false, >( - options: Options< + options: OptionsLegacyParser< WorkflowExecutionDeleteWorkflowExecutionData, ThrowOnError >, @@ -1974,7 +2064,7 @@ export class WorkflowExecutionService { public static workflowExecutionGetWorkflowExecutionParams< ThrowOnError extends boolean = false, >( - options: Options< + options: OptionsLegacyParser< WorkflowExecutionGetWorkflowExecutionParamsData, ThrowOnError >, @@ -1999,7 +2089,7 @@ export class WorkflowExecutionService { public static workflowExecutionCancelWorkflowExecution< ThrowOnError extends boolean = false, >( - options: Options< + options: OptionsLegacyParser< WorkflowExecutionCancelWorkflowExecutionData, ThrowOnError >, @@ -2024,7 +2114,9 @@ export class WorkflowModeService { */ public static workflowModeGetWorkflowMode< ThrowOnError extends boolean = false, - >(options: Options<WorkflowModeGetWorkflowModeData, ThrowOnError>) { + >( + options: OptionsLegacyParser<WorkflowModeGetWorkflowModeData, ThrowOnError>, + ) { return (options?.client ?? client).get< WorkflowModeGetWorkflowModeResponse, WorkflowModeGetWorkflowModeError, @@ -2045,7 +2137,12 @@ export class WorkflowVersionService { */ public static workflowVersionListWorkflowVersion< ThrowOnError extends boolean = false, - >(options: Options<WorkflowVersionListWorkflowVersionData, ThrowOnError>) { + >( + options: OptionsLegacyParser< + WorkflowVersionListWorkflowVersionData, + ThrowOnError + >, + ) { return (options?.client ?? client).get< WorkflowVersionListWorkflowVersionResponse, WorkflowVersionListWorkflowVersionError, @@ -2065,7 +2162,12 @@ export class WorkflowVersionService { */ public static workflowVersionGetWorkflowVersion< ThrowOnError extends boolean = false, - >(options: Options<WorkflowVersionGetWorkflowVersionData, ThrowOnError>) { + >( + options: OptionsLegacyParser< + WorkflowVersionGetWorkflowVersionData, + ThrowOnError + >, + ) { return (options?.client ?? client).get< WorkflowVersionGetWorkflowVersionResponse, WorkflowVersionGetWorkflowVersionError, @@ -2085,7 +2187,7 @@ export class WorkflowVersionService { public static workflowVersionUpdateWorkflowVersionStatus< ThrowOnError extends boolean = false, >( - options: Options< + options: OptionsLegacyParser< WorkflowVersionUpdateWorkflowVersionStatusData, ThrowOnError >, @@ -2110,7 +2212,7 @@ export class WorkflowVersionService { public static workflowVersionGetWorkflowVersionMetadata< ThrowOnError extends boolean = false, >( - options: Options< + options: OptionsLegacyParser< WorkflowVersionGetWorkflowVersionMetadataData, ThrowOnError >, @@ -2135,7 +2237,7 @@ export class WorkflowVersionService { public static workflowVersionUpdateWorkflowVersionMetadata< ThrowOnError extends boolean = false, >( - options: Options< + options: OptionsLegacyParser< WorkflowVersionUpdateWorkflowVersionMetadataData, ThrowOnError >, @@ -2160,7 +2262,10 @@ export class WorkflowVersionService { public static workflowVersionDeprecateWorkflowVersion< ThrowOnError extends boolean = false, >( - options: Options<WorkflowVersionDeprecateWorkflowVersionData, ThrowOnError>, + options: OptionsLegacyParser< + WorkflowVersionDeprecateWorkflowVersionData, + ThrowOnError + >, ) { return (options?.client ?? client).patch< WorkflowVersionDeprecateWorkflowVersionResponse, @@ -2181,7 +2286,7 @@ export class WorkflowVersionService { public static workflowVersionUpdateWorkflowVersionParameterExtension< ThrowOnError extends boolean = false, >( - options: Options< + options: OptionsLegacyParser< WorkflowVersionUpdateWorkflowVersionParameterExtensionData, ThrowOnError >, @@ -2206,7 +2311,7 @@ export class WorkflowVersionService { public static workflowVersionDownloadWorkflowDocumentation< ThrowOnError extends boolean = false, >( - options: Options< + options: OptionsLegacyParser< WorkflowVersionDownloadWorkflowDocumentationData, ThrowOnError >, @@ -2230,7 +2335,7 @@ export class WorkflowVersionService { public static workflowVersionUploadWorkflowVersionIcon< ThrowOnError extends boolean = false, >( - options: Options< + options: OptionsLegacyParser< WorkflowVersionUploadWorkflowVersionIconData, ThrowOnError >, @@ -2259,7 +2364,7 @@ export class WorkflowVersionService { public static workflowVersionDeleteWorkflowVersionIcon< ThrowOnError extends boolean = false, >( - options: Options< + options: OptionsLegacyParser< WorkflowVersionDeleteWorkflowVersionIconData, ThrowOnError >, diff --git a/src/components/AppHeader.vue b/src/components/AppHeader.vue index ada871cf06afeb043df0f015531fd97686bba690..6a955567c8ab291a211009441ae90ae07482bc37 100644 --- a/src/components/AppHeader.vue +++ b/src/components/AppHeader.vue @@ -52,9 +52,11 @@ watch( <header class="navbar navbar-expand bd-navbar sticky-top border-bottom border-secondary" > - <nav class="container-xxl bd-gutter flex-wrap flex-lg-nowrap text-light"> + <nav + class="container-fluid container-xxxl bd-gutter flex-wrap flex-lg-nowrap text-light" + > <router-link - class="navbar-brand ms-3 text-white d-flex align-items-center" + class="navbar-brand text-white d-flex align-items-center" to="/" > <img @@ -376,4 +378,11 @@ ul { --bs-navbar-hover-color: rgba(255, 255, 255, 0.9) !important; --bs-navbar-disabled-color: rgba(255, 255, 255, 0.4) !important; } + +.navbar > .container-xxxl { + display: flex; + flex-wrap: inherit; + align-items: center; + justify-content: space-between; +} </style> diff --git a/src/components/object-storage/modals/CopyObjectModal.vue b/src/components/object-storage/modals/CopyObjectModal.vue index 2ecf9d2e1272ba60f59c8370abe8034738c21c92..ced824132c8d264aaff7c891a060b59d96daff77 100644 --- a/src/components/object-storage/modals/CopyObjectModal.vue +++ b/src/components/object-storage/modals/CopyObjectModal.vue @@ -62,10 +62,9 @@ function copyObject() { ) .then(() => { if (formState.moveObject && props.srcObject.Key != undefined) { - return objectRepository.deleteObject( - props.srcBucket, + return objectRepository.deleteObjects(props.srcBucket, [ props.srcObject.Key, - ); + ]); } }) .then(() => { diff --git a/src/components/object-storage/modals/ObjectDetailModal.vue b/src/components/object-storage/modals/ObjectDetailModal.vue index 6a1a018b0f2deb88087fef111ef9ac65d6016f6d..a5053f9e4a3527c3d050f36687ca854f99289122 100644 --- a/src/components/object-storage/modals/ObjectDetailModal.vue +++ b/src/components/object-storage/modals/ObjectDetailModal.vue @@ -84,10 +84,6 @@ onMounted(() => { filesize( objectRepository.objectMetaMapping[metaIdentifier] .ContentLength ?? 0, - { - base: 2, - standard: "jedec", - }, ) }} </td> diff --git a/src/components/parameter-schema/GroupNav.vue b/src/components/parameter-schema/GroupNav.vue index 8e36ad9594ed4aca3ab58a807e1c81075d52943d..60dcff07445898882d17deb1b7b5cfc22bb55857 100644 --- a/src/components/parameter-schema/GroupNav.vue +++ b/src/components/parameter-schema/GroupNav.vue @@ -275,6 +275,7 @@ onMounted(() => { Try it out </button> <button + v-if="workflowId != undefined" type="button" class="btn btn-primary" data-bs-toggle="modal" diff --git a/src/components/workflows/WorkflowWithVersionsCard.vue b/src/components/workflows/WorkflowWithVersionsCard.vue index 726b88585cbacc4813312a2167b1320297982c89..71b4d7275729a11343cac6dc56a85594206e8e93 100644 --- a/src/components/workflows/WorkflowWithVersionsCard.vue +++ b/src/components/workflows/WorkflowWithVersionsCard.vue @@ -182,7 +182,7 @@ onMounted(() => { }, }" class="btn btn-primary dropdown-item" - >Add Parameter Metadata + >Edit Parameter Metadata </router-link> </li> <li> @@ -355,11 +355,7 @@ onMounted(() => { }, }" > - <template v-if="version.parameter_extension" - >Update - </template> - <template v-else>Add</template> - Parameter Translation + Edit parameter translation </router-link> </li> <li> @@ -373,7 +369,7 @@ onMounted(() => { }, }" > - Update Metadata + Edit execution environment </router-link> </li> <li> @@ -390,7 +386,7 @@ onMounted(() => { }, }" > - Edit Parameter Visibility + Edit parameter visibility </router-link> </li> </ul> diff --git a/src/components/workflows/modals/ParameterModal.vue b/src/components/workflows/modals/ParameterModal.vue index 9b52f749880d5a9b8925a2afaa8cc1f47ca79ae0..cab38a286c94d59f28a8b1cfe7a70fba4006a8e2 100644 --- a/src/components/workflows/modals/ParameterModal.vue +++ b/src/components/workflows/modals/ParameterModal.vue @@ -174,7 +174,7 @@ onMounted(() => { :modal-id="modalId" :static-backdrop="false" modal-label="Workflow Execution Parameters Modal" - size-modifier-modal="lg" + size-modifier-modal="xl" :track-modal-value="executionId" > <template #header diff --git a/src/stores/s3objects.ts b/src/stores/s3objects.ts index cf6229bb034f49050a07b612fe49fdf4d4a19577..341502885d6de5d14b00bee88399351608df2376 100644 --- a/src/stores/s3objects.ts +++ b/src/stores/s3objects.ts @@ -172,27 +172,75 @@ export const useS3ObjectStore = defineStore({ }) .finally(onFinally); }, - deleteObject(bucketName: string, key: string): Promise<void> { - const command = new DeleteObjectCommand({ - Bucket: bucketName, - Key: key, - }); - return this.client - .send(command) - .then(() => { - const bucketRepository = useBucketStore(); - bucketRepository.fetchBucket(bucketName); - if (this.objectMapping[bucketName] == undefined) { - this.fetchS3Objects(bucketName); - } else { - this.objectMapping[bucketName] = this.objectMapping[ - bucketName - ].filter((obj) => obj.Key !== key); + deleteObjects(bucketName: string, keys: string[]): Promise<void> { + switch (keys.length) { + case 0: { + return Promise.resolve(); + } + case 1: { + return this.client + .send( + new DeleteObjectCommand({ + Bucket: bucketName, + Key: keys[0], + }), + ) + .then(() => { + const bucketRepository = useBucketStore(); + bucketRepository.fetchBucket(bucketName); + if (this.objectMapping[bucketName] == undefined) { + this.fetchS3Objects(bucketName); + } else { + this.objectMapping[bucketName] = this.objectMapping[ + bucketName + ].filter((obj) => obj.Key !== keys[0]); + } + }) + .catch((err) => { + console.error(err); + }); + } + default: { + const commands: DeleteObjectsCommand[] = []; + const chunksize = 1000; + for (let i = 0; i < keys.length; i = i + chunksize) { + commands.push( + new DeleteObjectsCommand({ + Bucket: bucketName, + Delete: { + Objects: keys.slice(i, i + chunksize).map((obj) => { + return { Key: obj }; + }), + }, + }), + ); } - }) - .catch((err) => { - console.error(err); - }); + return Promise.all( + commands.map((command, index) => { + this.client.send(command).then(() => { + if (this.objectMapping[bucketName] != undefined) { + this.objectMapping[bucketName] = this.objectMapping[ + bucketName + ].filter((obj) => + obj.Key != undefined + ? !keys + .slice( + index * chunksize, + index * chunksize + chunksize, + ) + .includes(obj.Key) + : false, + ); + } + }); + }), + ).then(() => { + if (this.objectMapping[bucketName] == undefined) { + this.fetchS3Objects(bucketName); + } + }); + } + } }, deleteObjectsWithPrefix(bucketName: string, prefix: string): Promise<void> { if (this.objectMapping[bucketName] == undefined) { diff --git a/src/types/PseudoFolder.ts b/src/types/PseudoFolder.ts index c65e1f950c9a0825fae56ef479820bb9bff2ee4c..0941f12482f4d22113c3eb8a6b0a2a57815bb9b1 100644 --- a/src/types/PseudoFolder.ts +++ b/src/types/PseudoFolder.ts @@ -7,6 +7,7 @@ export interface S3ObjectWithFolder extends S3Object { export type S3PseudoFolder = { Size: number; + quantity: number; parentFolder: string[]; LastModified: Date; name: string; diff --git a/src/views/DashboardView.vue b/src/views/DashboardView.vue index 5d79dfe4f6231337f35ea91ae9c277ac4bfdfa16..5ceece659261709c7fba24b047dbb9697b5dee19 100644 --- a/src/views/DashboardView.vue +++ b/src/views/DashboardView.vue @@ -161,7 +161,7 @@ function accumulateWorkflowStatus( </router-link> </template> <template #body> - <div>Access to {{ bucketStore.buckets.length }} buckets</div> + <div>Access to {{ bucketStore.buckets.length }} bucket(s)</div> <ul class="mb-0"> <li> {{ @@ -191,7 +191,7 @@ function accumulateWorkflowStatus( <template #body> <div> {{ otrStore.bucketOtrs.length }} open bucket ownership transfer - requests + request(s) </div> <ul class="mb-0"> <li> @@ -200,7 +200,7 @@ function accumulateWorkflowStatus( (otr) => otr.current_owner_uid == authStore.currentUID, ).length }} - pending request to others + pending request(s) to others </li> <li> {{ @@ -208,7 +208,7 @@ function accumulateWorkflowStatus( (otr) => otr.new_owner_uid == authStore.currentUID, ).length }} - request to accept / reject + request(s) to accept / reject </li> </ul> </template> @@ -218,7 +218,7 @@ function accumulateWorkflowStatus( <router-link :to="{ name: 's3_keys' }">S3 Bucket Keys</router-link> </template> <template #body> - <div>{{ keyStore.keys.length }} active keys</div> + <div>{{ keyStore.keys.length }} active key(s)</div> <div>S3 Endpoint:</div> <a :href="environment.S3_URL">{{ environment.S3_URL }}</a> </template> @@ -231,7 +231,7 @@ function accumulateWorkflowStatus( </template> <template #body> <div class="card-text"> - {{ activeUploadBuckets.length }} active multipart uploads + {{ activeUploadBuckets.length }} active multipart upload(s) </div> <template v-if="activeUploadBuckets.length > 0"> <div>Buckets</div> @@ -290,7 +290,8 @@ function accumulateWorkflowStatus( </template> <template #body> <div> - Overall {{ executionStore.executions.length }} workflow executions + Overall {{ executionStore.executions.length }} workflow + execution(s) </div> <ul class="mb-0"> <li> @@ -302,7 +303,7 @@ function accumulateWorkflowStatus( execution.status === WorkflowExecutionStatus.SCHEDULED, ).length }} - running executions + running execution(s) </li> <li> {{ @@ -311,7 +312,7 @@ function accumulateWorkflowStatus( execution.status === WorkflowExecutionStatus.SUCCESS, ).length }} - successful executions + successful execution(s) </li> <li> {{ @@ -320,7 +321,7 @@ function accumulateWorkflowStatus( execution.status === WorkflowExecutionStatus.ERROR, ).length }} - erroneous executions + erroneous execution(s) </li> </ul> </template> @@ -337,8 +338,8 @@ function accumulateWorkflowStatus( </template> <template #body> <div> - {{ processedOwnWorkflows.length }} own workflows, - {{ pendingOwnWorkflowReviews }} pending reviews + {{ processedOwnWorkflows.length }} own workflow(s), + {{ pendingOwnWorkflowReviews }} pending review(s) </div> <ul v-if="processedOwnWorkflows.length > 0" class="mb-0"> <li @@ -365,7 +366,7 @@ function accumulateWorkflowStatus( <template #body> <div> {{ otrStore.workflowOtrs.length }} open workflow ownership - transfer requests + transfer request(s) </div> <ul class="mb-0"> <li> @@ -374,7 +375,7 @@ function accumulateWorkflowStatus( (otr) => otr.current_owner_uid == authStore.currentUID, ).length }} - pending request to others + pending request(s) to others </li> <li> {{ @@ -382,7 +383,7 @@ function accumulateWorkflowStatus( (otr) => otr.new_owner_uid == authStore.currentUID, ).length }} - request to accept / reject + request(s) to accept / reject </li> </ul> </template> @@ -399,15 +400,15 @@ function accumulateWorkflowStatus( </router-link> </template> <template #body> - <div>{{ resourceStore.ownResources.length }} own resources</div> + <div>{{ resourceStore.ownResources.length }} own resource(s)</div> <ul v-if="processedOwnWorkflows.length > 0" class="mb-0"> <li class="mb-0"> {{ pendingOwnResourceUploads }} - pending uploads + pending upload(s) </li> <li class="mb-0"> {{ pendingOwnResourceReviews }} - pending reviews + pending review(s) </li> </ul> </template> @@ -421,7 +422,7 @@ function accumulateWorkflowStatus( <template #body> <div> {{ otrStore.resourceOtrs.length }} open workflow ownership - transfer requests + transfer request(s) </div> <ul class="mb-0"> <li> @@ -430,7 +431,7 @@ function accumulateWorkflowStatus( (otr) => otr.current_owner_uid == authStore.currentUID, ).length }} - pending request to others + pending request(s) to others </li> <li> {{ @@ -438,7 +439,7 @@ function accumulateWorkflowStatus( (otr) => otr.new_owner_uid == authStore.currentUID, ).length }} - request to accept / reject + request(s) to accept / reject </li> </ul> </template> @@ -455,7 +456,7 @@ function accumulateWorkflowStatus( </router-link> </template> <template #body> - {{ pendingWorkflowReviews }} pending reviews + {{ pendingWorkflowReviews }} pending review(s) </template> </bootstrap-card> <bootstrap-card class="hover-shadow m-2 flex-fill w-fit"> @@ -465,7 +466,7 @@ function accumulateWorkflowStatus( </router-link> </template> <template #body> - {{ pendingResourceReviews }} pending reviews + {{ pendingResourceReviews }} pending review(s) </template> </bootstrap-card> </div> @@ -480,7 +481,7 @@ function accumulateWorkflowStatus( </router-link> </template> <template #body> - {{ resourceStore.syncRequests.length }} pending sync requests + {{ resourceStore.syncRequests.length }} pending sync request(s) </template> </bootstrap-card> <bootstrap-card class="hover-shadow m-2 flex-fill w-fit"> diff --git a/src/views/object-storage/BucketView.vue b/src/views/object-storage/BucketView.vue index 2d9c31cce9ec840834fe392d5d947c3b8481c63f..3445fe82546e751dcb7930622972c210409ebb71 100644 --- a/src/views/object-storage/BucketView.vue +++ b/src/views/object-storage/BucketView.vue @@ -23,6 +23,7 @@ import { useS3ObjectStore } from "@/stores/s3objects"; import { useS3KeyStore } from "@/stores/s3keys"; import BootstrapToast from "@/components/BootstrapToast.vue"; import { useSettingsStore } from "@/stores/settings"; +import { md5 } from "@/utils/md5"; const authStore = useUserStore(); const bucketRepository = useBucketStore(); @@ -46,12 +47,10 @@ let refreshTimeout: NodeJS.Timeout | undefined = undefined; // ----------------------------------------------------------------------------- const deleteObjectsState = reactive<{ deletedItem: string; - potentialObjectToDelete: string; - deleteFolder: boolean; + potentialObjectsToDelete: string[]; }>({ deletedItem: "", - potentialObjectToDelete: "", - deleteFolder: true, + potentialObjectsToDelete: [], }); const objectState = reactive<{ @@ -62,6 +61,7 @@ const objectState = reactive<{ editObjectKey: string; copyObject: S3Object; viewDetailKey: string | undefined; + selectedObjs: string[]; }>({ loading: true, filterString: "", @@ -74,6 +74,7 @@ const objectState = reactive<{ LastModified: new Date(), }, viewDetailKey: undefined, + selectedObjs: [], }); // Computed Properties @@ -189,10 +190,14 @@ const visibleObjects = computed<(S3ObjectWithFolder | S3PseudoFolder)[]>(() => { const folderLastModified = dayjs( calculateFolderLastModified(currentFolder.subFolders[subFolderName]), ).toDate(); + const folderQuantity = calculateFolderObjectNumber( + currentFolder.subFolders[subFolderName], + ); return { name: subFolderName, Size: folderSize, Key: subFolderName, + quantity: folderQuantity, parentFolder: currentSubFolders.value, LastModified: folderLastModified, } as S3PseudoFolder; @@ -257,6 +262,13 @@ watch( { flush: "post" }, ); +watch( + () => props.subFolders, + () => { + objectState.selectedObjs = []; + }, +); + // Lifecycle Hooks // ----------------------------------------------------------------------------- onMounted(() => { @@ -282,17 +294,35 @@ onMounted(() => { // Functions // ----------------------------------------------------------------------------- /** - * Calculate recursively the cumulative file size of all o objects in a folder + * Calculate recursively the number of objects in a folder + * @param folder Folder to inspect + * @returns The number of objects in this folder + */ +function calculateFolderObjectNumber(folder: FolderTree): number { + return ( + folder.files.filter((obj) => !obj.Key?.endsWith("/") ?? false).length + + Object.keys(folder.subFolders).reduce( + (size, subFolderName) => + size + calculateFolderObjectNumber(folder.subFolders[subFolderName]), + 0, + ) + ); +} + +/** + * Calculate recursively the cumulative file size of all objects in a folder * @param folder Folder to inspect * @returns The size of this folder in bytes */ function calculateFolderSize(folder: FolderTree): number { - let folderSize = 0; - folderSize += folder.files.reduce((acc, file) => acc + (file.Size ?? 0), 0); - for (const subFolderName of Object.keys(folder.subFolders)) { - folderSize += calculateFolderSize(folder.subFolders[subFolderName]); - } - return folderSize; + return ( + folder.files.reduce((acc, file) => acc + (file.Size ?? 0), 0) + + Object.keys(folder.subFolders).reduce( + (size, subFolderName) => + size + calculateFolderSize(folder.subFolders[subFolderName]), + 0, + ) + ); } /** @@ -363,20 +393,7 @@ function deleteObject(key?: string) { if (key == undefined) { return; } - deleteObjectsState.potentialObjectToDelete = key; - deleteObjectsState.deleteFolder = false; -} - -/** - * Delete an Object in the current folder - * @param key Key of the Object - */ -function confirmedDeleteObject(key: string) { - objectRepository.deleteObject(props.bucketName, key).then(() => { - const splittedKey = key.split("/"); - deleteObjectsState.deletedItem = splittedKey[splittedKey.length - 1]; - successToast?.show(); - }); + deleteObjectsState.potentialObjectsToDelete = [key]; } /** @@ -398,29 +415,61 @@ async function downloadObject(bucket: string, key?: string) { document.body.removeChild(element); } -function deleteFolder(folderPath: string) { - deleteObjectsState.potentialObjectToDelete = folderPath; - deleteObjectsState.deleteFolder = true; +function deleteFolder(folder: S3PseudoFolder) { + deleteObjectsState.potentialObjectsToDelete = [folderKeyPrefix(folder)]; +} + +function folderKeyPrefix(folder: S3PseudoFolder): string { + return folder.parentFolder.concat([""]).join("/") + folder.name + "/"; } /** * Delete a folder in the current Bucket - * @param folderPath Path to the folder with a trailing "/", e.g. some/path/to/a/folder/ + * @param keys Path to the folder with a trailing "/", e.g. some/path/to/a/folder/ */ -function confirmedDeleteFolder(folderPath: string) { - objectRepository - .deleteObjectsWithPrefix(props.bucketName, folderPath) - .then(() => { - const splittedPath = folderPath.split("/"); - deleteObjectsState.deletedItem = splittedPath[splittedPath.length - 2]; +function confirmedDeleteKeys(keys: string[]) { + Promise.all( + keys + .filter((key) => key.endsWith("/")) + .map((key) => + objectRepository.deleteObjectsWithPrefix(props.bucketName, key), + ) + .concat( + objectRepository.deleteObjects( + props.bucketName, + keys.filter((key) => !key.endsWith("/")), + ), + ), + ).then(() => { + objectState.selectedObjs = objectState.selectedObjs.filter( + (obj) => !keys.includes(obj), + ); + if (keys.length > 0) { + deleteObjectsState.deletedItem = + keys.length > 1 ? "selected items" : keys[0]; successToast?.show(); - }); + } + }); } function getObjectFileName(key: string): string { const splittedKey = key.split("/"); return splittedKey[splittedKey.length - 1]; } + +function deleteSelected() { + deleteObjectsState.potentialObjectsToDelete = objectState.selectedObjs; +} + +function clickBox() { + if (objectState.selectedObjs.length < visibleObjects.value.length) { + objectState.selectedObjs = visibleObjects.value.map((obj) => + isS3Object(obj) ? (obj.Key ?? "") : folderKeyPrefix(obj), + ); + } else { + objectState.selectedObjs = []; + } +} </script> <template> @@ -429,12 +478,13 @@ function getObjectFileName(key: string): string { </bootstrap-toast> <DeleteModal modal-id="delete-object-modal" - :object-name-delete="deleteObjectsState.potentialObjectToDelete" - :back-modal-id="undefined" + :object-name-delete=" + deleteObjectsState.potentialObjectsToDelete.length === 1 + ? deleteObjectsState.potentialObjectsToDelete[0] + : 'selected items' + " @confirm-delete=" - deleteObjectsState.deleteFolder - ? confirmedDeleteFolder(deleteObjectsState.potentialObjectToDelete) - : confirmedDeleteObject(deleteObjectsState.potentialObjectToDelete) + confirmedDeleteKeys(deleteObjectsState.potentialObjectsToDelete) " /> <!-- Navbar Breadcrumb --> @@ -598,6 +648,16 @@ function getObjectFileName(key: string): string { <font-awesome-icon icon="fa-solid fa-users-line" /> <span class="visually-hidden">View Bucket Permissions</span> </button> + <button + class="btn tooltip-container btn-danger ms-2" + :disabled="!writableBucket || objectState.selectedObjs.length === 0" + data-bs-toggle="modal" + data-bs-target="#delete-object-modal" + data-bs-title="Delete selected files" + @click="deleteSelected()" + > + <font-awesome-icon icon="fa-solid fa-trash" /> + </button> <permission-list-modal v-if=" objectState.loading == false && @@ -639,43 +699,73 @@ function getObjectFileName(key: string): string { <div v-else> <!-- Table header --> <table class="table table-sm table-hover caption-top align-middle"> - <caption> + <caption v-if="objectState.selectedObjs.length === 0"> Displaying {{ objectState.loading ? 0 : filteredObjects.length }} Items </caption> + <caption v-else> + Selected + {{ + objectState.selectedObjs.length + }} + Item(s) + </caption> <thead> <tr> + <th v-if="writableBucket && visibleObjects.length > 0"> + <input + class="form-check-input" + type="checkbox" + :checked=" + objectState.selectedObjs.length === visibleObjects.length + " + @click="clickBox()" + /> + </th> <th scope="col">Name</th> <th scope="col">Last Accessed</th> <th scope="col">Size</th> <th scope="col"></th> + <th scope="col"></th> </tr> </thead> <!-- Table body when loading the objects --> <tbody v-if="objectState.loading"> <tr v-for="n in 5" :key="n" class="placeholder-glow"> + <td v-if="writableBucket"></td> <th scope="row"> <span class="placeholder w-100 bg-secondary"></span> </th> <td><span class="placeholder w-50 bg-secondary"></span></td> <td><span class="placeholder w-50 bg-secondary"></span></td> + <td><span class="placeholder w-50 bg-secondary"></span></td> <td></td> </tr> </tbody> <!-- Table body when no objects are in the bucket --> <tbody v-else-if="filteredObjects.length === 0"> <tr> - <td colspan="4" class="text-center fst-italic fw-light"> + <td colspan="5" class="text-center fst-italic fw-light"> No objects to display </td> </tr> </tbody> <!-- Table body when showing objects --> <tbody v-else> - <tr v-for="obj in filteredObjects" :key="obj.Key"> + <tr v-for="obj in filteredObjects" :key="md5(obj.Key ?? '')"> + <td v-if="writableBucket"> + <input + v-model="objectState.selectedObjs" + class="form-check-input" + type="checkbox" + :value=" + isS3Object(obj) ? (obj.Key ?? '') : folderKeyPrefix(obj) + " + /> + </td> <th scope="row" class="text-truncate"> <!-- Show file name if row is an object --> <div v-if="isS3Object(obj)">{{ obj.pseudoFileName }}</div> @@ -707,6 +797,13 @@ function getObjectFileName(key: string): string { <td> {{ filesize(obj.Size ?? 0) }} </td> + <td> + <span v-if="!isS3Object(obj)" + >{{ obj.quantity }} object<template v-if="obj.quantity != 1" + >s</template + ></span + > + </td> <!-- Show buttons with dropdown menu if row is an object --> <td class="text-end"> <div @@ -790,11 +887,7 @@ function getObjectFileName(key: string): string { :disabled="!writableBucket" data-bs-toggle="modal" data-bs-target="#delete-object-modal" - @click=" - deleteFolder( - obj.parentFolder.concat(['']).join('/') + obj.name + '/', - ) - " + @click="deleteFolder(obj)" > <font-awesome-icon icon="fa-solid fa-trash" class="me-2" /> <span>Delete</span> diff --git a/src/views/workflows/ArbitraryWorkflowView.vue b/src/views/workflows/ArbitraryWorkflowView.vue index 2cc8579fecf769fd3ffb176741034ea5b49b22cc..30ea0be5658a31653ca51a852025d710865624ac 100644 --- a/src/views/workflows/ArbitraryWorkflowView.vue +++ b/src/views/workflows/ArbitraryWorkflowView.vue @@ -255,7 +255,6 @@ onMounted(() => { v-else :loading="workflowExecutionState.loading" :schema="workflowState.parameterSchema" - :view-mode="props.viewMode" :nextflow-version="workflowState.workflow.nextflow_version" @start-workflow="startWorkflow" />