diff --git a/Services/client/src/components/FileSearched.vue b/Services/client/src/components/FileSearched.vue index 1453ec3..10a73c6 100644 --- a/Services/client/src/components/FileSearched.vue +++ b/Services/client/src/components/FileSearched.vue @@ -4,13 +4,19 @@ import { useSearchDataStore } from '@/stores/searched-data' import { useFileInfoStore } from '@/stores/file-info-data' import FileIcon from '@/components/FileIcon.vue' import type { QTableProps } from 'quasar' +import { onMounted, ref, watch } from 'vue' defineProps<{ viewMode: 'view_list' | 'view_module' }>() const { foundFile } = storeToRefs(useSearchDataStore()) -const { getFileInfo, getSize, getType, getFileNameFormat } = useFileInfoStore() +const { getFileInfo, getSize, getType } = useFileInfoStore() +const keywordList = ref([]) +const categoryList = ref([]) +const selectKeyword = ref([]) +const selectCategory = ref([]) +const filterFoundFile = ref() const columns: QTableProps['columns'] = [ { name: 'name', @@ -46,12 +52,81 @@ const columns: QTableProps['columns'] = [ style: 'width: 20px', }, ] + +function filterSearch() { + function updateList() { + keywordList.value = [] + categoryList.value = [] + foundFile.value.forEach((obj) => { + obj.keyword.forEach((keyword) => { + if (!keywordList.value.includes(keyword)) { + keywordList.value.push(keyword) + } + }) + obj.category.forEach((category) => { + if (!categoryList.value.includes(category)) { + categoryList.value.push(category) + } + }) + }) + } + + function filterArray() { + if (!(selectKeyword.value.length || selectCategory.value.length)) { + filterFoundFile.value = foundFile.value + } else { + filterFoundFile.value = foundFile.value.filter( + (entry) => + entry.keyword.some((kw) => selectKeyword.value.includes(kw)) || + entry.category.some((kw) => selectCategory.value.includes(kw)), + ) + } + } + updateList() + filterArray() +} + +watch( + [ + () => foundFile.value, + () => selectKeyword.value, + () => selectCategory.value, + ], + filterSearch, +) + +onMounted(() => { + filterSearch() +})