From 173d0fe6253e96be266350a43adb0adaef44d696 Mon Sep 17 00:00:00 2001 From: Ruslan Bayandinov <45530296+wazsone@users.noreply.github.com> Date: Thu, 27 Apr 2023 20:53:53 +0400 Subject: [PATCH] [TSK-1268] Add date filter (#3094) Signed-off-by: Ruslan Bayandinov --- models/tracker/src/index.ts | 4 + .../src/components/filter/DateFilter.svelte | 150 ++++++++++++++++++ plugins/view-resources/src/index.ts | 2 + plugins/view-resources/src/plugin.ts | 1 + 4 files changed, 157 insertions(+) create mode 100644 plugins/view-resources/src/components/filter/DateFilter.svelte diff --git a/models/tracker/src/index.ts b/models/tracker/src/index.ts index fe6990fc8b..204bdabe80 100644 --- a/models/tracker/src/index.ts +++ b/models/tracker/src/index.ts @@ -907,6 +907,10 @@ export function createModel (builder: Builder): void { component: view.component.ValueFilter }) + builder.mixin(core.class.TypeDate, core.class.Class, view.mixin.AttributeFilter, { + component: view.component.DateFilter + }) + builder.mixin(tracker.class.TypeIssuePriority, core.class.Class, view.mixin.AttributePresenter, { presenter: tracker.component.PriorityRefPresenter }) diff --git a/plugins/view-resources/src/components/filter/DateFilter.svelte b/plugins/view-resources/src/components/filter/DateFilter.svelte new file mode 100644 index 0000000000..fb100c8154 --- /dev/null +++ b/plugins/view-resources/src/components/filter/DateFilter.svelte @@ -0,0 +1,150 @@ + + + +
dispatch('changeContent')}> +
+
+ {#await promise then attribute} + {#if objectsPromise} + + {:else} + {#each Array.from(values.keys()) as value} + {@const realValue = [...(realValues.get(value) ?? [])][0]} + + {/each} + {/if} + {/await} +
+
+
diff --git a/plugins/view-resources/src/index.ts b/plugins/view-resources/src/index.ts index 8e62e2263f..40e3ae5cf3 100644 --- a/plugins/view-resources/src/index.ts +++ b/plugins/view-resources/src/index.ts @@ -37,6 +37,7 @@ import FilterBar from './components/filter/FilterBar.svelte' import FilterTypePopup from './components/filter/FilterTypePopup.svelte' import ObjectFilter from './components/filter/ObjectFilter.svelte' import TimestampFilter from './components/filter/TimestampFilter.svelte' +import DateFilter from './components/filter/DateFilter.svelte' import ValueFilter from './components/filter/ValueFilter.svelte' import HTMLEditor from './components/HTMLEditor.svelte' import HTMLPresenter from './components/HTMLPresenter.svelte' @@ -167,6 +168,7 @@ export default async (): Promise => ({ ClassPresenter, ClassRefPresenter, ObjectFilter, + DateFilter, ValueFilter, TimestampFilter, TableBrowser, diff --git a/plugins/view-resources/src/plugin.ts b/plugins/view-resources/src/plugin.ts index 08b08ce4fd..9c22387482 100644 --- a/plugins/view-resources/src/plugin.ts +++ b/plugins/view-resources/src/plugin.ts @@ -21,6 +21,7 @@ import view, { SortFunc, viewId } from '@hcengineering/view' export default mergeIds(viewId, view, { component: { ObjectFilter: '' as AnyComponent, + DateFilter: '' as AnyComponent, ValueFilter: '' as AnyComponent, TimestampFilter: '' as AnyComponent, FilterTypePopup: '' as AnyComponent,