From 73584e8ced70bb9112e90b94e1a746c4b928e88b Mon Sep 17 00:00:00 2001 From: Laila Los <44241786+ElectronicBlueberry@users.noreply.github.com> Date: Fri, 30 Sep 2022 13:10:19 +0200 Subject: [PATCH 01/58] initial commit --- .../History/Content/ContentItem.vue | 12 +- client/src/components/Tags/model.js | 111 ++++++------- .../TagsMultiselect/StatelessTags.vue | 150 ++++++++++++++++++ client/src/components/TagsMultiselect/Tag.vue | 61 +++++++ .../src/components/TagsMultiselect/Tags.vue | 21 +++ client/src/composables/user.js | 36 ++++- 6 files changed, 326 insertions(+), 65 deletions(-) create mode 100644 client/src/components/TagsMultiselect/StatelessTags.vue create mode 100644 client/src/components/TagsMultiselect/Tag.vue create mode 100644 client/src/components/TagsMultiselect/Tags.vue diff --git a/client/src/components/History/Content/ContentItem.vue b/client/src/components/History/Content/ContentItem.vue index 0ff44351494..d4b3d44335c 100644 --- a/client/src/components/History/Content/ContentItem.vue +++ b/client/src/components/History/Content/ContentItem.vue @@ -90,14 +90,15 @@ :collection-type="item.collection_type" :element-count="item.element_count" :elements-datatypes="item.elements_datatypes" /> - + @input="onTags" /--> + diff --git a/client/src/components/TagsMultiselect/Tag.vue b/client/src/components/TagsMultiselect/Tag.vue new file mode 100644 index 00000000000..6813051e633 --- /dev/null +++ b/client/src/components/TagsMultiselect/Tag.vue @@ -0,0 +1,61 @@ + + + + + + + diff --git a/client/src/components/TagsMultiselect/Tags.vue b/client/src/components/TagsMultiselect/Tags.vue new file mode 100644 index 00000000000..82b70bcada0 --- /dev/null +++ b/client/src/components/TagsMultiselect/Tags.vue @@ -0,0 +1,21 @@ + + + diff --git a/client/src/composables/user.js b/client/src/composables/user.js index 0910ec0ff7c..c2de2a48fb8 100644 --- a/client/src/composables/user.js +++ b/client/src/composables/user.js @@ -1,4 +1,4 @@ -import { computed, onMounted, inject } from "vue"; +import { computed, onMounted, inject, watch, ref } from "vue"; /** * composable user store wrapper @@ -18,3 +18,37 @@ export function useCurrentUser() { return { currentUser, addFavoriteTool, removeFavoriteTool }; } + +// temporarily stores tags which have not yet been fetched from the backend +const localTags = ref([]); + +/** + * Keeps tracks of the tags the current user has used. + */ +export function useUserTags() { + const { currentUser } = useCurrentUser(); + + watch( + () => currentUser.value, + (user) => { + // reset local tags if user reloads + if (user) { + localTags.value = []; + } + } + ); + + const userTags = computed(() => { + if (currentUser.value) { + return [...currentUser.value.tags_used, ...localTags.value]; + } else { + return localTags.value; + } + }); + + const addLocalTag = (tag) => { + localTags.value.push(tag); + }; + + return { userTags, addLocalTag }; +} From f8deaa0b2cbbfc897333d2a6ac101228f6b08f8f Mon Sep 17 00:00:00 2001 From: Laila Los <44241786+ElectronicBlueberry@users.noreply.github.com> Date: Fri, 30 Sep 2022 15:06:48 +0200 Subject: [PATCH 02/58] make tag model immutable --- client/src/components/Tags/model.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/client/src/components/Tags/model.js b/client/src/components/Tags/model.js index eb2f633a8f7..2521c727fe0 100644 --- a/client/src/components/Tags/model.js +++ b/client/src/components/Tags/model.js @@ -48,6 +48,8 @@ export class TagModel { this.styles += `border-color: ${darker};`; this.valid = VALID_TAG_RE.test(this.text); + + Object.freeze(this); } equals(otherTag) { From 11778ba2d526f526e74412f0d20f48cb764bc66f Mon Sep 17 00:00:00 2001 From: Laila Los <44241786+ElectronicBlueberry@users.noreply.github.com> Date: Thu, 20 Oct 2022 12:46:46 +0200 Subject: [PATCH 03/58] style options dropdown --- .../TagsMultiselect/StatelessTags.vue | 56 ++++++++++++++++++- 1 file changed, 53 insertions(+), 3 deletions(-) diff --git a/client/src/components/TagsMultiselect/StatelessTags.vue b/client/src/components/TagsMultiselect/StatelessTags.vue index 69b72fc53cf..d03fef7200c 100644 --- a/client/src/components/TagsMultiselect/StatelessTags.vue +++ b/client/src/components/TagsMultiselect/StatelessTags.vue @@ -42,9 +42,9 @@ function openMultiselect() {