From a9d3446ce30dff5024f1bd3afd0e7098a574f947 Mon Sep 17 00:00:00 2001 From: kolaente Date: Thu, 3 Jun 2021 22:23:04 +0200 Subject: [PATCH] Preload labels and use locally stored in vuex --- src/components/home/contentAuth.vue | 7 ++ src/components/list/partials/filters.vue | 62 +++++------ src/components/tasks/partials/editLabels.vue | 58 ++++------ src/store/index.js | 2 + src/store/modules/labels.js | 100 +++++++++++++++++ src/views/labels/ListLabels.vue | 50 ++------- src/views/labels/NewLabel.vue | 27 ++--- src/views/list/views/List.vue | 110 ++++++++++++------- 8 files changed, 246 insertions(+), 170 deletions(-) create mode 100644 src/store/modules/labels.js diff --git a/src/components/home/contentAuth.vue b/src/components/home/contentAuth.vue index cee4fadbd..576d77bf0 100644 --- a/src/components/home/contentAuth.vue +++ b/src/components/home/contentAuth.vue @@ -55,6 +55,7 @@ export default { }, created() { this.renewTokenOnFocus() + this.loadLabels() }, computed: mapState({ namespaces(state) { @@ -126,6 +127,12 @@ export default { showKeyboardShortcuts() { this.$store.commit(KEYBOARD_SHORTCUTS_ACTIVE, true) }, + loadLabels() { + this.$store.dispatch('labels/loadAllLabels') + .catch(e => { + this.error(e, this) + }) + }, }, } diff --git a/src/components/list/partials/filters.vue b/src/components/list/partials/filters.vue index 478c4f0b2..a28f339e6 100644 --- a/src/components/list/partials/filters.vue +++ b/src/components/list/partials/filters.vue @@ -131,7 +131,6 @@
({ - altFormat: 'j M Y H:i', - altInput: true, - dateFormat: 'Y-m-d H:i', - enableTime: true, - time_24hr: true, - mode: 'range', - locale: { - firstDayOfWeek: state.auth.settings.weekStart, - }, - }) - }), + computed: { + foundLabels() { + const labels = (Object.values(this.$store.state.labels.labels).filter(l => { + return l.title.toLowerCase().includes(this.labelQuery.toLowerCase()) + }) ?? []) + + return differenceWith(labels, this.labels, (first, second) => { + return first.id === second.id + }) + }, + ...mapState({ + flatPickerConfig: state => ({ + altFormat: 'j M Y H:i', + altInput: true, + dateFormat: 'Y-m-d H:i', + enableTime: true, + time_24hr: true, + mode: 'range', + locale: { + firstDayOfWeek: state.auth.settings.weekStart, + }, + }), + }), + }, methods: { change() { this.$emit('input', this.params) @@ -566,25 +573,8 @@ export default { this.$set(this.filters, filterName, ids.join(',')) this.setSingleValueFilter(filterName, filterName, '', 'in') }, - clearLabels() { - this.$set(this, 'foundLabels', []) - }, findLabels(query) { - - if (query === '') { - this.clearLabels() - } - - this.labelService.getAll({}, {s: query}) - .then(response => { - // Filter the results to not include labels already selected - this.$set(this, 'foundLabels', differenceWith(response, this.labels, (first, second) => { - return first.id === second.id - })) - }) - .catch(e => { - this.error(e, this) - }) + this.labelQuery = query }, addLabel() { this.$nextTick(() => { diff --git a/src/components/tasks/partials/editLabels.vue b/src/components/tasks/partials/editLabels.vue index daf3271ba..a40f2113e 100644 --- a/src/components/tasks/partials/editLabels.vue +++ b/src/components/tasks/partials/editLabels.vue @@ -1,6 +1,6 @@