Skip to content

Commit

Permalink
Merge pull request #89 from icefoganalytics/issue-85/search-box-popul…
Browse files Browse the repository at this point in the history
…ate-with-dashboard-keyword

Search Box Populate With Dashboard Keyword
  • Loading branch information
klondikemarlen authored Apr 2, 2024
2 parents 254d24e + 7b9fd5e commit 1151dee
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 11 deletions.
33 changes: 25 additions & 8 deletions web/src/components/datasets/DatasetsTable.vue
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,13 @@
cols="12"
md="4"
>
<v-text-field
model-value="click clear to remove search query ..."
prepend-inner-icon="mdi-magnify"
label="TODO: Search"
<TagsAutocomplete
:model-value="tagNames"
label="Search"
variant="outlined"
clearable
hide-details
persistent-clear
readonly
@update:model-value="updateWithTagNamesFilterQuery"
@click:clear="clearSearchQuery"
/>
</v-col>
Expand Down Expand Up @@ -88,8 +86,8 @@

<script lang="ts" setup>
import { computed, ref, watch } from "vue"
import { useRoute, useRouter } from "vue-router"
import { compact, isNil } from "lodash"
import { useRoute, useRouter, type LocationQueryValue } from "vue-router"
import { cloneDeep, compact, isNil } from "lodash"
import { useI18n } from "vue-i18n"
import acronymize from "@/utils/acronymize"
Expand All @@ -99,6 +97,8 @@ import useDatasets from "@/use/use-datasets"
import ColumnRouterLink from "@/components/datasets/datasets-table/ColumnRouterLink.vue"
import RequestAccessButton from "@/components/datasets/datasets-table/RequestAccessButton.vue"
import SubscribeToDatasetButton from "@/components/datasets/datasets-table/SubscribeToDatasetButton.vue"
import TagsAutocomplete from "@/components/tags/TagsAutocomplete.vue"
import { DatasetsFilters } from "@/api/datasets-api"
type Tag = {
id: number
Expand Down Expand Up @@ -132,6 +132,7 @@ const router = useRouter()
const itemsPerPage = ref(parseInt(route.query.perPage as string) || 10)
const page = ref(parseInt(route.query.page as string) || 1)
const tagNames = computed(() => (route.query.filters as unknown as DatasetsFilters)?.withTagNames)
function updatePage(newPage: number) {
if (isLoading.value) return
Expand Down Expand Up @@ -163,6 +164,22 @@ const datasetsQuery = computed(() => ({
}))
const { datasets, isLoading, totalCount, fetch: refresh } = useDatasets(datasetsQuery)
function updateWithTagNamesFilterQuery(newTagNames: string[]) {
const query = cloneDeep(route.query)
if (isNil(query.filters)) {
query.filters = {
withTagNames: newTagNames,
} as unknown as LocationQueryValue
} else {
;(query.filters as DatasetsFilters).withTagNames = newTagNames
}
router.push({
query,
})
}
function clearSearchQuery() {
router.push({ query: { ...route.query, filters: undefined } })
}
Expand Down
4 changes: 3 additions & 1 deletion web/src/components/tags/TagsAutocomplete.vue
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,9 @@ const props = withDefaults(
}
)
const emit = defineEmits(["update:modelValue"])
const emit = defineEmits<{
"update:modelValue": [tagNames: string[]]
}>()
const selectedTagNames = ref<string[]>(props.modelValue)
Expand Down
4 changes: 2 additions & 2 deletions web/src/use/use-datasets.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { type Ref, reactive, toRefs, ref, unref, watch } from "vue"

import datasetsApi, { type Dataset } from "@/api/datasets-api"
import datasetsApi, { type Dataset, type DatasetsFilters } from "@/api/datasets-api"

export { type Dataset }
export { type Dataset, type DatasetsFilters }

export function useDatasets(
options: Ref<{
Expand Down

0 comments on commit 1151dee

Please sign in to comment.