From 1ceec126f002f4e59f60354690e7034b9585cdfe Mon Sep 17 00:00:00 2001 From: Vyacheslav Tumanov Date: Tue, 6 Jun 2023 16:13:24 +0500 Subject: [PATCH] UBER-252: mode int URL in MyLeads/MyApplications (#3347) Signed-off-by: Vyacheslav Tumanov --- models/lead/src/index.ts | 7 +++ models/recruit/src/index.ts | 7 ++- models/tracker/src/index.ts | 2 +- .../src/components/MyLeads.svelte | 45 +++++++++---------- .../src/components/AssignedTasks.svelte | 43 +++++++++--------- 5 files changed, 57 insertions(+), 47 deletions(-) diff --git a/models/lead/src/index.ts b/models/lead/src/index.ts index 4d55908a10..7ca02be152 100644 --- a/models/lead/src/index.ts +++ b/models/lead/src/index.ts @@ -130,6 +130,13 @@ export function createModel (builder: Builder): void { label: lead.string.MyLeads, icon: lead.icon.Lead, component: lead.component.MyLeads, + componentProps: { + config: [ + ['assigned', view.string.Assigned, {}], + ['created', view.string.Created, {}], + ['subscribed', view.string.Subscribed, {}] + ] + }, position: 'top' }, { diff --git a/models/recruit/src/index.ts b/models/recruit/src/index.ts index 0768571773..b11bdaf696 100644 --- a/models/recruit/src/index.ts +++ b/models/recruit/src/index.ts @@ -336,7 +336,12 @@ export function createModel (builder: Builder): void { position: 'event', componentProps: { labelTasks: recruit.string.Applications, - _class: recruit.class.Applicant + _class: recruit.class.Applicant, + config: [ + ['assigned', view.string.Assigned, {}], + ['created', view.string.Created, {}], + ['subscribed', view.string.Subscribed, {}] + ] } }, { diff --git a/models/tracker/src/index.ts b/models/tracker/src/index.ts index aa7f7f38f7..89d063f976 100644 --- a/models/tracker/src/index.ts +++ b/models/tracker/src/index.ts @@ -1095,7 +1095,7 @@ export function createModel (builder: Builder): void { componentProps: { config: [ ['assigned', view.string.Assigned, {}], - ['created', view.string.Created, { value: 2 }], + ['created', view.string.Created, {}], ['subscribed', view.string.Subscribed, {}] ] } diff --git a/plugins/lead-resources/src/components/MyLeads.svelte b/plugins/lead-resources/src/components/MyLeads.svelte index 133fc6dcca..483eb4ac83 100644 --- a/plugins/lead-resources/src/components/MyLeads.svelte +++ b/plugins/lead-resources/src/components/MyLeads.svelte @@ -16,7 +16,7 @@ import { EmployeeAccount } from '@hcengineering/contact' import { AttachedDoc, Class, DocumentQuery, getCurrentAccount, Ref } from '@hcengineering/core' import { createQuery, getClient } from '@hcengineering/presentation' - import task, { Task } from '@hcengineering/task' + import task from '@hcengineering/task' import { IModeSelector, Label, resolvedLocationStore, SearchEdit, ModeSelector, Loading } from '@hcengineering/ui' import { FilterButton, @@ -26,26 +26,29 @@ viewOptionStore } from '@hcengineering/view-resources' import { IntlString } from '@hcengineering/platform' - import ViewletSettingButton from '@hcengineering/view-resources/src/components/ViewletSettingButton.svelte' import view, { Viewlet, ViewletPreference } from '@hcengineering/view' - import { onDestroy } from 'svelte' - import FilterBar from '@hcengineering/view-resources/src/components/filter/FilterBar.svelte' + import { createEventDispatcher, onDestroy } from 'svelte' + import { FilterBar, ViewletSettingButton } from '@hcengineering/view-resources' import lead from '../plugin' import { Lead } from '@hcengineering/lead' export let _class: Ref> = lead.class.Lead export let labelTasks = lead.string.MyLeads + export let config: [string, IntlString, object][] = [] let search = '' + const dispatch = createEventDispatcher() const currentUser = getCurrentAccount() as EmployeeAccount const assigned = { assignee: currentUser.employee } const created = { createdBy: currentUser._id } - let subscribed = { _id: { $in: [] as Ref[] } } + let subscribed = { _id: { $in: [] as Ref[] } } + let mode: string | undefined = undefined + let baseQuery: DocumentQuery | undefined = undefined + let modeSelectorProps: IModeSelector | undefined = undefined + + $: queries = { assigned, created, subscribed } + $: mode = $resolvedLocationStore.query?.mode ?? undefined - $: baseQuery = updateBaseQuery(mode, { assigned, created, subscribed }) - function updateBaseQuery (mode: string, queries: { [key: string]: DocumentQuery }) { - return { ...queries[mode] } - } let searchQuery: DocumentQuery = { ...baseQuery } function updateSearchQuery (search: string): void { searchQuery = search === '' ? { ...baseQuery } : { ...baseQuery, $search: search } @@ -69,21 +72,17 @@ ) } $: if (mode === 'subscribed') getSubscribed() - const config: [string, IntlString, object][] = [ - ['assigned', view.string.Assigned, {}], - ['created', view.string.Created, {}], - ['subscribed', view.string.Subscribed, {}] - ] - let [[mode]] = config - function handleChangeMode (newMode: string) { - if (newMode === mode) return - mode = newMode + $: if (mode === undefined || queries[mode] === undefined) { + ;[[mode]] = config + } + $: if (mode !== undefined) { + baseQuery = { ...queries[mode] } + modeSelectorProps = { + config, + mode, + onChange: (newMode: string) => dispatch('action', { mode: newMode }) + } } - $: modeSelectorProps = { - config, - mode, - onChange: handleChangeMode - } as IModeSelector let viewlet: Viewlet | undefined let loading = true diff --git a/plugins/task-resources/src/components/AssignedTasks.svelte b/plugins/task-resources/src/components/AssignedTasks.svelte index 9ce8337b46..a6e1a9cbd2 100644 --- a/plugins/task-resources/src/components/AssignedTasks.svelte +++ b/plugins/task-resources/src/components/AssignedTasks.svelte @@ -38,25 +38,28 @@ } from '@hcengineering/view-resources' import task from '../plugin' import { IntlString } from '@hcengineering/platform' - import ViewletSettingButton from '@hcengineering/view-resources/src/components/ViewletSettingButton.svelte' import view, { Viewlet, ViewletPreference } from '@hcengineering/view' - import { onDestroy } from 'svelte' - import FilterBar from '@hcengineering/view-resources/src/components/filter/FilterBar.svelte' + import { createEventDispatcher, onDestroy } from 'svelte' + import { FilterBar, ViewletSettingButton } from '@hcengineering/view-resources' export let _class: Ref> = task.class.Task export let labelTasks = task.string.Tasks + export let config: [string, IntlString, object][] = [] let search = '' + const dispatch = createEventDispatcher() const currentUser = getCurrentAccount() as EmployeeAccount const assigned = { assignee: currentUser.employee } const created = { createdBy: currentUser._id } let subscribed = { _id: { $in: [] as Ref[] } } + let mode: string | undefined = undefined + let baseQuery: DocumentQuery | undefined = undefined + let modeSelectorProps: IModeSelector | undefined = undefined - $: baseQuery = updateBaseQuery(mode, { assigned, created, subscribed }) - function updateBaseQuery (mode: string, queries: { [key: string]: DocumentQuery }) { - return { ...queries[mode] } - } - let searchQuery: DocumentQuery = { ...baseQuery } + $: queries = { assigned, created, subscribed } + $: mode = $resolvedLocationStore.query?.mode ?? undefined + + let searchQuery: DocumentQuery = { baseQuery } function updateSearchQuery (search: string): void { searchQuery = search === '' ? { ...baseQuery } : { ...baseQuery, $search: search } } @@ -110,21 +113,17 @@ ) } $: if (mode === 'subscribed') getSubscribed() - const config: [string, IntlString, object][] = [ - ['assigned', view.string.Assigned, {}], - ['created', view.string.Created, {}], - ['subscribed', view.string.Subscribed, {}] - ] - let [[mode]] = config - function handleChangeMode (newMode: string) { - if (newMode === mode) return - mode = newMode + $: if (mode === undefined || queries[mode as keyof typeof queries] === undefined) { + ;[[mode]] = config + } + $: if (mode !== undefined) { + baseQuery = { ...queries[mode as keyof typeof queries] } + modeSelectorProps = { + config, + mode, + onChange: (newMode: string) => dispatch('action', { mode: newMode }) + } } - $: modeSelectorProps = { - config, - mode, - onChange: handleChangeMode - } as IModeSelector $: updateResultQuery(search, documentIds, doneStates) let viewlets: WithLookup[] | undefined