From 70d463d7153add41c02fa2e99f470e80b1a1e120 Mon Sep 17 00:00:00 2001 From: Vitor Mattos Date: Fri, 20 Sep 2024 18:41:00 -0300 Subject: [PATCH] feat: rewrite file list Signed-off-by: Vitor Mattos --- package-lock.json | 8 + package.json | 2 + src/helpers/logger.js | 11 + src/router/router.js | 5 + src/store/filters.js | 27 ++ .../FileListFilter/FileListFilter.vue | 58 +++++ .../FileListFilter/FileListFilterModified.vue | 128 ++++++++++ .../FileListFilter/FileListFilterStatus.vue | 136 ++++++++++ src/views/FilesList/FileListFilters.vue | 74 ++++++ src/views/FilesList/FilesList.vue | 232 ++++++++++++++++++ src/views/FilesList/FilesListVirtual.vue | 57 +++++ src/views/FilesList/VirtualList.vue | 13 + tsconfig.json | 2 +- 13 files changed, 752 insertions(+), 1 deletion(-) create mode 100644 src/helpers/logger.js create mode 100644 src/store/filters.js create mode 100644 src/views/FilesList/FileListFilter/FileListFilter.vue create mode 100644 src/views/FilesList/FileListFilter/FileListFilterModified.vue create mode 100644 src/views/FilesList/FileListFilter/FileListFilterStatus.vue create mode 100644 src/views/FilesList/FileListFilters.vue create mode 100644 src/views/FilesList/FilesList.vue create mode 100644 src/views/FilesList/FilesListVirtual.vue create mode 100644 src/views/FilesList/VirtualList.vue diff --git a/package-lock.json b/package-lock.json index c518a2a1e..a88882e41 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,6 +12,8 @@ "@fontsource/dancing-script": "^5.1.0", "@libresign/vue-pdf-editor": "^1.3.7", "@marionebl/option": "^1.0.8", + "@mdi/js": "^7.4.47", + "@mdi/svg": "^7.4.47", "@nextcloud/auth": "^2.4.0", "@nextcloud/axios": "^2.5.1", "@nextcloud/dialogs": "^6.0.1", @@ -2783,6 +2785,12 @@ "integrity": "sha512-KPnNOtm5i2pMabqZxpUz7iQf+mfrYZyKCZ8QNz85czgEt7cuHcGorWfdzUMWYA0SD+a6Hn4FmJ+YhzzzjkTZrQ==", "license": "Apache-2.0" }, + "node_modules/@mdi/svg": { + "version": "7.4.47", + "resolved": "https://registry.npmjs.org/@mdi/svg/-/svg-7.4.47.tgz", + "integrity": "sha512-WQ2gDll12T9WD34fdRFgQVgO8bag3gavrAgJ0frN4phlwdJARpE6gO1YvLEMJR0KKgoc+/Ea/A0Pp11I00xBvw==", + "license": "Apache-2.0" + }, "node_modules/@nextcloud/auth": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/@nextcloud/auth/-/auth-2.4.0.tgz", diff --git a/package.json b/package.json index e61294dd3..a437d6112 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,8 @@ "@fontsource/dancing-script": "^5.1.0", "@libresign/vue-pdf-editor": "^1.3.7", "@marionebl/option": "^1.0.8", + "@mdi/js": "^7.4.47", + "@mdi/svg": "^7.4.47", "@nextcloud/auth": "^2.4.0", "@nextcloud/axios": "^2.5.1", "@nextcloud/dialogs": "^6.0.1", diff --git a/src/helpers/logger.js b/src/helpers/logger.js new file mode 100644 index 000000000..c9565f4ba --- /dev/null +++ b/src/helpers/logger.js @@ -0,0 +1,11 @@ +/** + * SPDX-FileCopyrightText: 2020-2024 LibreCode coop and contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +import { getLoggerBuilder } from '@nextcloud/logger' + +export default getLoggerBuilder() + .setApp('libresign') + .detectUser() + .build() diff --git a/src/router/router.js b/src/router/router.js index 2784e180a..bec603b17 100644 --- a/src/router/router.js +++ b/src/router/router.js @@ -141,6 +141,11 @@ const router = new Router({ name: 'timeline', component: () => import('../views/Timeline/Timeline.vue'), }, + { + path: '/f/filelist/sign', + name: 'fileslist', + component: () => import('../views/FilesList/FilesList.vue'), + }, { path: '/f/request', name: 'requestFiles', diff --git a/src/store/filters.js b/src/store/filters.js new file mode 100644 index 000000000..c081bc0ef --- /dev/null +++ b/src/store/filters.js @@ -0,0 +1,27 @@ +/** + * SPDX-FileCopyrightText: 2020-2024 LibreCode coop and contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +import { defineStore } from 'pinia' +import logger from '../helpers/logger.js' + +export const useFiltersStore = defineStore('filter', { + state: () => ({ + chips: {}, + }), + + getters: { + activeChips(state) { + return Object.values(state.chips).flat() + }, + }, + + actions: { + onFilterUpdateChips(event) { + this.chips = { ...this.chips, [event.id]: [...event.detail] } + + logger.debug('File list filter chips updated', { chips: event.detail }) + }, + }, +}) diff --git a/src/views/FilesList/FileListFilter/FileListFilter.vue b/src/views/FilesList/FileListFilter/FileListFilter.vue new file mode 100644 index 000000000..776461d3e --- /dev/null +++ b/src/views/FilesList/FileListFilter/FileListFilter.vue @@ -0,0 +1,58 @@ + + + + + diff --git a/src/views/FilesList/FileListFilter/FileListFilterModified.vue b/src/views/FilesList/FileListFilter/FileListFilterModified.vue new file mode 100644 index 000000000..7e355d864 --- /dev/null +++ b/src/views/FilesList/FileListFilter/FileListFilterModified.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/src/views/FilesList/FileListFilter/FileListFilterStatus.vue b/src/views/FilesList/FileListFilter/FileListFilterStatus.vue new file mode 100644 index 000000000..538785574 --- /dev/null +++ b/src/views/FilesList/FileListFilter/FileListFilterStatus.vue @@ -0,0 +1,136 @@ + + + + + diff --git a/src/views/FilesList/FileListFilters.vue b/src/views/FilesList/FileListFilters.vue new file mode 100644 index 000000000..48d174122 --- /dev/null +++ b/src/views/FilesList/FileListFilters.vue @@ -0,0 +1,74 @@ + + + + + diff --git a/src/views/FilesList/FilesList.vue b/src/views/FilesList/FilesList.vue new file mode 100644 index 000000000..b654ef6a2 --- /dev/null +++ b/src/views/FilesList/FilesList.vue @@ -0,0 +1,232 @@ + + + + + diff --git a/src/views/FilesList/FilesListVirtual.vue b/src/views/FilesList/FilesListVirtual.vue new file mode 100644 index 000000000..2a0e385d6 --- /dev/null +++ b/src/views/FilesList/FilesListVirtual.vue @@ -0,0 +1,57 @@ + + + + + diff --git a/src/views/FilesList/VirtualList.vue b/src/views/FilesList/VirtualList.vue new file mode 100644 index 000000000..941ddf47b --- /dev/null +++ b/src/views/FilesList/VirtualList.vue @@ -0,0 +1,13 @@ + + + diff --git a/tsconfig.json b/tsconfig.json index 4176c09e0..3d0d2e676 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -12,4 +12,4 @@ "vueCompilerOptions": { "target": 2.7, } -} \ No newline at end of file +}