From 87300f0e0185a5998adce451a9709e9b5f690ea7 Mon Sep 17 00:00:00 2001 From: Dominik Pschenitschni Date: Mon, 24 Oct 2022 15:51:50 +0200 Subject: [PATCH] feat: reset gantt filter --- package.json | 1 + pnpm-lock.yaml | 3 ++- src/composables/useRouteFilters.ts | 12 ++++++++++++ src/views/list/ListGantt.vue | 8 ++++++++ src/views/list/helpers/useGanttFilters.ts | 9 +++++++++ 5 files changed, 32 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index a3b1f099f..06d96d378 100644 --- a/package.json +++ b/package.json @@ -41,6 +41,7 @@ "dayjs": "^1.11.5", "dompurify": "2.4.0", "easymde": "2.18.0", + "fast-deep-equal": "^3.1.3", "flatpickr": "4.6.13", "flexsearch": "0.7.21", "floating-vue": "2.0.0-beta.20", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7b4812cb0..41571fdcc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -49,6 +49,7 @@ specifiers: eslint: 8.24.0 eslint-plugin-vue: 9.6.0 express: 4.18.1 + fast-deep-equal: ^3.1.3 flatpickr: 4.6.13 flexsearch: 0.7.21 floating-vue: 2.0.0-beta.20 @@ -111,6 +112,7 @@ dependencies: dayjs: 1.11.5 dompurify: 2.4.0 easymde: 2.18.0 + fast-deep-equal: 3.1.3 flatpickr: 4.6.13 flexsearch: 0.7.21 floating-vue: 2.0.0-beta.20_vue@3.2.41 @@ -6567,7 +6569,6 @@ packages: /fast-deep-equal/3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: true /fast-diff/1.2.0: resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==} diff --git a/src/composables/useRouteFilters.ts b/src/composables/useRouteFilters.ts index dc25ad012..0959ab59b 100644 --- a/src/composables/useRouteFilters.ts +++ b/src/composables/useRouteFilters.ts @@ -1,11 +1,13 @@ import {computed, ref, watch, type Ref} from 'vue' import {useRouter, type RouteLocationNormalized, type RouteLocationRaw} from 'vue-router' import cloneDeep from 'lodash.clonedeep' +import equal from 'fast-deep-equal/es6' export type Filters = Record export function useRouteFilters( route: Ref, + getDefaultFilters: (route: RouteLocationNormalized) => CurrentFilters, routeToFilters: (route: RouteLocationNormalized) => CurrentFilters, filtersToRoute: (filters: CurrentFilters) => RouteLocationRaw, ) { @@ -37,7 +39,17 @@ export function useRouteFilters( {flush: 'post'}, ) + const hasDefaultFilters = computed(() => { + return equal(filters.value, getDefaultFilters(route.value)) + }) + + function setDefaultFilters() { + filters.value = getDefaultFilters(route.value) + } + return { filters, + hasDefaultFilters, + setDefaultFilters, } } \ No newline at end of file diff --git a/src/views/list/ListGantt.vue b/src/views/list/ListGantt.vue index 362beb685..b032f74bb 100644 --- a/src/views/list/ListGantt.vue +++ b/src/views/list/ListGantt.vue @@ -16,6 +16,12 @@ /> +
+ +
+ Reset +
+
{{ $t('list.gantt.showTasksWithoutDates') }} @@ -74,6 +80,8 @@ const canWrite = computed(() => baseStore.currentList.maxRight > RIGHTS.READ) const {route} = toRefs(props) const { filters, + hasDefaultFilters, + setDefaultFilters, tasks, isLoading, addTask, diff --git a/src/views/list/helpers/useGanttFilters.ts b/src/views/list/helpers/useGanttFilters.ts index 86f63cd13..dabfdba5e 100644 --- a/src/views/list/helpers/useGanttFilters.ts +++ b/src/views/list/helpers/useGanttFilters.ts @@ -47,6 +47,10 @@ function ganttRouteToFilters(route: Partial): GanttFilt } } +function ganttGetDefaultFilters(route: Partial): GanttFilters { + return ganttRouteToFilters({params: {listId: route.params?.listId as string}}) +} + // FIXME: use zod for this function ganttFiltersToRoute(filters: GanttFilters): RouteLocationRaw { let query: Record = {} @@ -88,9 +92,12 @@ export type UseGanttFiltersReturn = ReturnType & ReturnT export function useGanttFilters(route: Ref): UseGanttFiltersReturn { const { filters, + hasDefaultFilters, + setDefaultFilters, } = useRouteFilters( route, ganttRouteToFilters, + ganttGetDefaultFilters, ganttFiltersToRoute ) @@ -105,6 +112,8 @@ export function useGanttFilters(route: Ref): UseGanttFi return { filters, + hasDefaultFilters, + setDefaultFilters, tasks, loadTasks,