From 194a4f3adb6b924500a4e9b651b5fa8deb275c3c Mon Sep 17 00:00:00 2001 From: Jeff Sieu Date: Sun, 11 Oct 2020 12:52:18 +0800 Subject: [PATCH] Add search bar for collections (#1260) Co-authored-by: Liyas Thomas --- components/collections/collection.vue | 8 ++-- components/collections/folder.vue | 7 ++-- components/collections/index.vue | 54 ++++++++++++++++++++++++++- 3 files changed, 62 insertions(+), 7 deletions(-) diff --git a/components/collections/collection.vue b/components/collections/collection.vue index e305ec421..6d13ee782 100644 --- a/components/collections/collection.vue +++ b/components/collections/collection.vue @@ -2,8 +2,8 @@
@@ -44,7 +44,7 @@
-
+
  • @@ -105,6 +106,7 @@ export default { collectionIndex: Number, collection: Object, doc: Boolean, + isFiltered: Boolean, }, data() { return { diff --git a/components/collections/folder.vue b/components/collections/folder.vue index 27de5a3ed..6b07a1e76 100644 --- a/components/collections/folder.vue +++ b/components/collections/folder.vue @@ -3,8 +3,8 @@
    @@ -30,7 +30,7 @@
    -
    +
    • +
      + + +
        -
      • +
      +
        +
      • + +
      • +
      @@ -110,6 +122,7 @@ export default { editingFolderIndex: undefined, editingRequest: undefined, editingRequestIndex: undefined, + filterText: "", } }, computed: { @@ -118,6 +131,45 @@ export default { ? fb.currentCollections : this.$store.state.postwoman.collections }, + filteredCollections() { + const collections = + fb.currentUser !== null ? fb.currentCollections : this.$store.state.postwoman.collections + + if (!this.filterText) return collections + + const filterText = this.filterText.toLowerCase() + const filteredCollections = [] + + for (let collection of collections) { + const filteredRequests = [] + const filteredFolders = [] + for (let request of collection.requests) { + console.log(request) + if (request.name.toLowerCase().includes(filterText)) filteredRequests.push(request) + } + for (let folder of collection.folders) { + const filteredFolderRequests = [] + for (let request of folder.requests) { + if (request.name.toLowerCase().includes(filterText)) + filteredFolderRequests.push(request) + } + if (filteredFolderRequests.length > 0) { + const filteredFolder = Object.assign({}, folder) + filteredFolder.requests = filteredFolderRequests + filteredFolders.push(filteredFolder) + } + } + + if (filteredRequests.length + filteredFolders.length > 0) { + const filteredCollection = Object.assign({}, collection) + filteredCollection.requests = filteredRequests + filteredCollection.folders = filteredFolders + filteredCollections.push(filteredCollection) + } + } + + return filteredCollections + }, }, async mounted() { this._keyListener = function (e) {