diff --git a/models/recruit/src/index.ts b/models/recruit/src/index.ts index f60f031f9f..761c262bd9 100644 --- a/models/recruit/src/index.ts +++ b/models/recruit/src/index.ts @@ -619,7 +619,6 @@ export function createModel (builder: Builder): void { space: recruit.class.Vacancy } ], - assignee: contact.class.Employee, _id: { related: [tracker.class.Issue, 'relations._id'] } diff --git a/models/tracker/src/index.ts b/models/tracker/src/index.ts index 7f4a5c600e..9336918377 100644 --- a/models/tracker/src/index.ts +++ b/models/tracker/src/index.ts @@ -595,7 +595,7 @@ export function createModel (builder: Builder): void { props: { listProps: { key: 'modified', fixed: 'left' } } }, { - key: '$lookup.assignee', + key: 'assignee', presenter: tracker.component.AssigneePresenter, props: { defaultClass: contact.class.Employee, shouldShowLabel: false } } @@ -675,7 +675,7 @@ export function createModel (builder: Builder): void { props: { listProps: { fixed: 'right', optional: true } } }, { - key: '$lookup.assignee', + key: 'assignee', presenter: tracker.component.AssigneePresenter, props: { defaultClass: contact.class.Employee, shouldShowLabel: false } } @@ -726,7 +726,7 @@ export function createModel (builder: Builder): void { props: { listProps: { fixed: 'right' } } }, { - key: '$lookup.assignee', + key: 'assignee', presenter: tracker.component.AssigneePresenter, props: { defaultClass: contact.class.Employee, shouldShowLabel: false } } @@ -1783,7 +1783,7 @@ export function createModel (builder: Builder): void { { key: '', presenter: tracker.component.SprintDatePresenter, props: { field: 'startDate' } }, { key: '', presenter: tracker.component.SprintDatePresenter, props: { field: 'targetDate' } }, { - key: '$lookup.lead', + key: 'lead', presenter: tracker.component.SprintLeadPresenter, props: { _class: tracker.class.Sprint, diff --git a/packages/kanban/src/components/Kanban.svelte b/packages/kanban/src/components/Kanban.svelte index 7261fea82e..3876af7b30 100644 --- a/packages/kanban/src/components/Kanban.svelte +++ b/packages/kanban/src/components/Kanban.svelte @@ -325,6 +325,7 @@ > export let state: CategoryType + export let index: number export let cardDragOver: (evt: CardDragEvent, object: Item) => void export let cardDrop: (evt: CardDragEvent, object: Item) => void @@ -53,7 +55,20 @@ let limit = 50 - $: limitedObjects = stateObjects.slice(0, limit) + let limitedObjects: DocWithRank[] = [] + let loading = false + + function nop (op: () => void, timeout: number) { + op() + } + + $: { + loading = true + ;(limitedObjects.length > 0 ? nop : setTimeout)(() => { + limitedObjects = stateObjects.slice(0, limit) + loading = false + }, index * 2) + } {#each limitedObjects as object, i (object._id)} @@ -88,19 +103,23 @@ {/each} {#if stateObjects.length > limitedObjects.length}
-
- - {limitedObjects.length}/{stateObjects.length} - -
+ {#if loading} + + {:else} +
+ + {limitedObjects.length}/{stateObjects.length} + +
+ {/if}
{/if} diff --git a/packages/ui/src/components/Scroller.svelte b/packages/ui/src/components/Scroller.svelte index 4ffe043876..efa0e7fb17 100644 --- a/packages/ui/src/components/Scroller.svelte +++ b/packages/ui/src/components/Scroller.svelte @@ -392,6 +392,9 @@ } delayCall(() => { + if (divBox === undefined) { + return + } const tempEls = divBox.querySelectorAll('.categoryHeader') observer = new IntersectionObserver(checkIntersection, { root: null, rootMargin: '0px', threshold: 0.1 }) tempEls.forEach((el) => observer.observe(el)) diff --git a/plugins/contact-resources/src/components/Avatar.svelte b/plugins/contact-resources/src/components/Avatar.svelte index 873c657a7a..d84e61ffa6 100644 --- a/plugins/contact-resources/src/components/Avatar.svelte +++ b/plugins/contact-resources/src/components/Avatar.svelte @@ -101,8 +101,12 @@ bind:this={imageElement} on:load={(data) => { if (imageElement !== undefined) { - accentColor = imageToColor(imageElement) - dispatch('accent-color', accentColor) + try { + accentColor = imageToColor(imageElement) + dispatch('accent-color', accentColor) + } catch (err) { + // Ignore + } } }} /> @@ -114,8 +118,12 @@ bind:this={imageElement} on:load={(data) => { if (imageElement !== undefined) { - accentColor = imageToColor(imageElement) - dispatch('accent-color', accentColor) + try { + accentColor = imageToColor(imageElement) + dispatch('accent-color', accentColor) + } catch (err) { + // ignore + } } }} /> diff --git a/plugins/contact-resources/src/components/EmployeePresenter.svelte b/plugins/contact-resources/src/components/EmployeePresenter.svelte index 1d5948e9cc..104f8e2ce2 100644 --- a/plugins/contact-resources/src/components/EmployeePresenter.svelte +++ b/plugins/contact-resources/src/components/EmployeePresenter.svelte @@ -1,13 +1,13 @@ diff --git a/plugins/recruit-resources/src/components/KanbanCard.svelte b/plugins/recruit-resources/src/components/KanbanCard.svelte index eca5233b7b..d471a6d2d7 100644 --- a/plugins/recruit-resources/src/components/KanbanCard.svelte +++ b/plugins/recruit-resources/src/components/KanbanCard.svelte @@ -68,7 +68,7 @@
{#if !dragged}
- +
{/if}
@@ -76,6 +76,7 @@
@@ -89,7 +90,7 @@
- +
| Employee | null | undefined export let issueId: Ref export let defaultClass: Ref> | undefined = undefined export let currentSpace: Ref | undefined = undefined @@ -33,13 +33,15 @@ export let defaultName: IntlString | undefined = undefined export let placeholderLabel: IntlString | undefined = undefined + $: employeeValue = typeof value === 'string' ? $employeeByIdStore.get(value) : value + const client = getClient() let presenter: AttributeModel | undefined - $: if (value || defaultClass) { - if (value) { - getObjectPresenter(client, value._class, { key: '' }).then((p) => { + $: if (employeeValue || defaultClass) { + if (employeeValue) { + getObjectPresenter(client, employeeValue._class, { key: '' }).then((p) => { presenter = p }) } else if (defaultClass) { @@ -84,12 +86,12 @@ UsersPopup, { _class: contact.class.Employee, - selected: value?._id, + selected: employeeValue?._id, docQuery: { active: true }, allowDeselect: true, - placeholder: task.string.AssignThisTask + placeholder: placeholderLabel ?? presenter?.label ?? task.string.AssignThisTask }, eventToHTMLElement(event), handleAssigneeChanged @@ -108,7 +110,7 @@ shouldShowName={shouldShowLabel} onEmployeeEdit={handleAssigneeEditorOpened} tooltipLabels={{ - personLabel: value ? getName(value) : undefined, + personLabel: employeeValue ? getEmbeddedLabel(getName(employeeValue)) : undefined, placeholderLabel: placeholderLabel ?? presenter.label }} /> diff --git a/plugins/task-resources/src/components/kanban/KanbanView.svelte b/plugins/task-resources/src/components/kanban/KanbanView.svelte index c1228698a3..3f9dcded54 100644 --- a/plugins/task-resources/src/components/kanban/KanbanView.svelte +++ b/plugins/task-resources/src/components/kanban/KanbanView.svelte @@ -14,7 +14,6 @@ // limitations under the License. -->