From 78a1e0301f7cc969e9854a1639b6717f92bc364c Mon Sep 17 00:00:00 2001 From: jedi Date: Fri, 4 Sep 2026 15:04:13 +0200 Subject: [PATCH] stash --- .gitignore | 2 +- .gitmodules | 3 - deploy/dev/Dockerfile.frontend | 2 +- deploy/prod/Dockerfile.frontend | 2 +- frontend/extras | 1 - frontend/package-lock.json | 195 ++++++++---------- frontend/package.json | 1 - frontend/src/components/CombinedFileField.vue | 2 +- frontend/src/components/DeletableWrapper.vue | 8 + frontend/src/{ => lib}/short-id.js | 0 frontend/src/router.js | 2 +- frontend/src/views/Files.vue | 2 +- frontend/src/views/Friends.vue | 1 + frontend/src/views/GroupDetail.vue | 1 + frontend/src/views/Inventory.vue | 1 + frontend/src/views/InventoryDetail.vue | 6 +- frontend/src/views/StorageLocation.vue | 1 + frontend/src/views/StorageLocationDetail.vue | 6 +- frontend/src/views/WorkflowDetail.vue | 2 + frontend/src/views/settings/Account.vue | 1 + 20 files changed, 118 insertions(+), 121 deletions(-) delete mode 100644 .gitmodules delete mode 160000 frontend/extras rename frontend/src/{ => lib}/short-id.js (100%) diff --git a/.gitignore b/.gitignore index 4ce5750..614da9b 100644 --- a/.gitignore +++ b/.gitignore @@ -14,7 +14,7 @@ dist/ downloads/ eggs/ .eggs/ -lib/ +#lib/ lib64/ parts/ sdist/ diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index c34cc6f..0000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "frontend/extras"] - path = frontend/extras - url = https://git.neulandlabor.de/j3d1/vue-extras.git diff --git a/deploy/dev/Dockerfile.frontend b/deploy/dev/Dockerfile.frontend index 02b9e79..cdba36e 100644 --- a/deploy/dev/Dockerfile.frontend +++ b/deploy/dev/Dockerfile.frontend @@ -9,7 +9,7 @@ RUN mkdir /git # A wildcard is used to ensure both package.json AND package-lock.json are copied COPY package.json ./ -COPY extras/ ./extras/ +#COPY extras/ ./extras/ RUN npm install CMD [ "npm", "run", "dev", "--", "--host"] diff --git a/deploy/prod/Dockerfile.frontend b/deploy/prod/Dockerfile.frontend index 1def462..fb16084 100644 --- a/deploy/prod/Dockerfile.frontend +++ b/deploy/prod/Dockerfile.frontend @@ -15,7 +15,7 @@ ARG GIT_COMMIT=unknown ENV GIT_COMMIT=$GIT_COMMIT COPY package.json package-lock.json ./ -COPY extras/ ./extras/ +#COPY extras/ ./extras/ RUN npm ci COPY . . RUN npm run build diff --git a/frontend/extras b/frontend/extras deleted file mode 160000 index 21bf28a..0000000 --- a/frontend/extras +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 21bf28a8b6293872f5f7a42c9ca0bc12ede5aaae diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 9a3cb1d..fb906ae 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -197,6 +197,93 @@ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", "wrap-ansi": "^8.1.0", "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "string-width-cjs": { + "version": "npm:string-width@4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "strip-ansi-cjs": { + "version": "npm:strip-ansi@6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "wrap-ansi-cjs": { + "version": "npm:wrap-ansi@7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + } } }, "@jridgewell/sourcemap-codec": { @@ -887,9 +974,6 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, - "extras": { - "version": "file:extras" - }, "fast-diff": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", @@ -1620,40 +1704,6 @@ "strip-ansi": "^7.0.1" } }, - "string-width-cjs": { - "version": "npm:string-width@4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, "strip-ansi": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", @@ -1663,23 +1713,6 @@ "ansi-regex": "^6.2.2" } }, - "strip-ansi-cjs": { - "version": "npm:strip-ansi@6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - } - } - }, "strip-literal": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.3.0.tgz", @@ -1977,60 +2010,6 @@ "strip-ansi": "^7.0.1" } }, - "wrap-ansi-cjs": { - "version": "npm:wrap-ansi@7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, "ws": { "version": "8.21.3", "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.3.tgz", diff --git a/frontend/package.json b/frontend/package.json index bff1287..1fac118 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -17,7 +17,6 @@ "vue-multiselect": "^2.1.7", "vue-router": "^4.1.6", "vuex": "^4.1.0", - "extras": "file:./extras", "jquery": "^3.6.0", "popper.js": "^1.16.1" }, diff --git a/frontend/src/components/CombinedFileField.vue b/frontend/src/components/CombinedFileField.vue index d8d1aec..0dcb058 100644 --- a/frontend/src/components/CombinedFileField.vue +++ b/frontend/src/components/CombinedFileField.vue @@ -14,7 +14,7 @@
+ confirm-message="Delete this file? This cannot be undone." @delete="deleteFile(file)">
- + diff --git a/frontend/src/views/Friends.vue b/frontend/src/views/Friends.vue index 0449131..3e2bc30 100644 --- a/frontend/src/views/Friends.vue +++ b/frontend/src/views/Friends.vue @@ -173,6 +173,7 @@ export default { }) }, tryDropFriend(friend) { + if (!confirm(`Are you sure you want to remove "${friend.handle}" as a friend?`)) return this.dropFriend(friend).then((ok) => { if (ok) { delete this.friends[friend.handle] diff --git a/frontend/src/views/GroupDetail.vue b/frontend/src/views/GroupDetail.vue index e50f6da..8e16884 100644 --- a/frontend/src/views/GroupDetail.vue +++ b/frontend/src/views/GroupDetail.vue @@ -107,6 +107,7 @@ export default { }) }, tryRemoveMember(member) { + if (!confirm(`Are you sure you want to remove "${member.handle}" from ${this.group.handle}?`)) return this.removeGroupMember({groupHandle: this.group.handle, identityId: member.id}) .then(() => { this.refresh() diff --git a/frontend/src/views/Inventory.vue b/frontend/src/views/Inventory.vue index 8b6ba4b..05b3121 100644 --- a/frontend/src/views/Inventory.vue +++ b/frontend/src/views/Inventory.vue @@ -196,6 +196,7 @@ export default { return this.fetchFriendInventoryItems({friendHandle: this.selectedOwner}) }, tryDeleteItem(item) { + if (!confirm(`Are you sure you want to delete "${item.name}"? This cannot be undone.`)) return this.deleteInventoryItem(item).then(() => { this.fetchItemsForOwner() }) diff --git a/frontend/src/views/InventoryDetail.vue b/frontend/src/views/InventoryDetail.vue index 8d41d8c..19d37e9 100644 --- a/frontend/src/views/InventoryDetail.vue +++ b/frontend/src/views/InventoryDetail.vue @@ -46,7 +46,7 @@ Edit @@ -116,6 +116,10 @@ export default { ...mapActions(["fetchItemByHandle", "deleteInventoryItem", "fetchGroupMemberships"]), async loadItem() { this.item = await this.fetchItemByHandle({handle: this.decodedHandle, id: this.id}) || {} + }, + tryDeleteItem() { + if (!confirm(`Are you sure you want to delete "${this.item.name}"? This cannot be undone.`)) return + this.deleteInventoryItem(this.item).then(() => this.$router.push(ownerOverviewRoute(this.item))) } }, watch: { diff --git a/frontend/src/views/StorageLocation.vue b/frontend/src/views/StorageLocation.vue index 496b2e3..e8d5f35 100644 --- a/frontend/src/views/StorageLocation.vue +++ b/frontend/src/views/StorageLocation.vue @@ -184,6 +184,7 @@ export default { : this.fetchGroupStorageLocations({groupHandle: this.selectedOwner}) }, tryDeleteLocation(location) { + if (!confirm(`Are you sure you want to delete "${location.name}"? This cannot be undone.`)) return this.deleteStorageLocation(location).then(() => { this.fetchLocationsForOwner() }) diff --git a/frontend/src/views/StorageLocationDetail.vue b/frontend/src/views/StorageLocationDetail.vue index 19e2412..0c3d532 100644 --- a/frontend/src/views/StorageLocationDetail.vue +++ b/frontend/src/views/StorageLocationDetail.vue @@ -39,7 +39,7 @@ Edit @@ -103,6 +103,10 @@ export default { ...mapActions(["fetchStorageLocationByHandle", "deleteStorageLocation", "fetchGroupMemberships"]), async loadLocation() { this.location = await this.fetchStorageLocationByHandle({handle: this.decodedHandle, id: this.id}) || {} + }, + tryDeleteLocation() { + if (!confirm(`Are you sure you want to delete "${this.location.name}"? This cannot be undone.`)) return + this.deleteStorageLocation(this.location).then(() => this.$router.push(ownerLocationOverviewRoute(this.location))) } }, watch: { diff --git a/frontend/src/views/WorkflowDetail.vue b/frontend/src/views/WorkflowDetail.vue index 9d9596f..ee0d6c8 100644 --- a/frontend/src/views/WorkflowDetail.vue +++ b/frontend/src/views/WorkflowDetail.vue @@ -416,6 +416,8 @@ export default { }, async abortWorkflow() { + const displayName = this.getWorkflowDisplayName || this.workflowInstance.title; + if (!confirm(`Are you sure you want to abort "${displayName}"?`)) return; try { this.loading = true; await this.deleteWorkflow(this.workflowInstance.id); diff --git a/frontend/src/views/settings/Account.vue b/frontend/src/views/settings/Account.vue index 36e39a0..83ce506 100644 --- a/frontend/src/views/settings/Account.vue +++ b/frontend/src/views/settings/Account.vue @@ -130,6 +130,7 @@ export default { await this.updateUserProfilePicture({file: image}); }, async removePicture() { + if (!confirm('Are you sure you want to remove your profile picture?')) return; await this.updateUserProfilePicture({file: null}); } },