From 1ba50b6a478eb33fad8c9c9340b8cb4dd3e8e531 Mon Sep 17 00:00:00 2001 From: Alexander Onnikov Date: Fri, 17 Jul 2026 15:07:49 +0700 Subject: [PATCH] fix: allow inactive members in departments Signed-off-by: Alexander Onnikov --- models/hr/src/index.ts | 19 ++++++- models/hr/src/migration.ts | 6 ++- .../src/components/DepartmentCard.svelte | 5 +- .../src/components/DepartmentStaff.svelte | 7 ++- .../src/components/Members.svelte | 9 ++-- .../src/components/RelationshipTable.svelte | 22 ++++++-- .../src/components/Table.svelte | 22 ++++++-- .../src/components/ViewOptions.svelte | 21 +++++--- server-plugins/hr-resources/src/index.ts | 54 +++++++++---------- 9 files changed, 111 insertions(+), 54 deletions(-) diff --git a/models/hr/src/index.ts b/models/hr/src/index.ts index 9dc5446f38b..dd6841ec1fb 100644 --- a/models/hr/src/index.ts +++ b/models/hr/src/index.ts @@ -404,14 +404,29 @@ export function createModel (builder: Builder): void { attachTo: hr.mixin.Staff, descriptor: view.viewlet.Table, config: [ - '', + { key: '', props: { showStatus: true } }, + 'department', { key: '$lookup.channels', label: contact.string.ContactInfo, sortingKey: ['$lookup.channels.lastMessage', 'channels'] }, 'modifiedOn' - ] + ], + viewOptions: { + groupBy: [], + orderBy: [], + other: [ + { + key: 'hideInactive', + type: 'toggle', + defaultValue: true, + actionTarget: 'query', + action: contact.function.HideInactive, + label: contact.string.HideInactive + } + ] + } }, hr.viewlet.TableMember ) diff --git a/models/hr/src/migration.ts b/models/hr/src/migration.ts index 366bd38a7a7..dc6d360aa25 100644 --- a/models/hr/src/migration.ts +++ b/models/hr/src/migration.ts @@ -136,7 +136,7 @@ async function rebuildDepartmentMembersFromStaff (client: MigrationClient): Prom const persons = await client.find(DOMAIN_CONTACT, { _class: contact.class.Person }) for (const person of persons) { const staff = client.hierarchy.asIf(person, hr.mixin.Staff) - if (staff?.department === undefined || !staff.active) { + if (staff?.department === undefined) { continue } @@ -172,6 +172,10 @@ export const hrOperation: MigrateOperation = { { state: 'rebuildDepartmentMembersFromStaff', func: rebuildDepartmentMembersFromStaff + }, + { + state: 'rebuildDepartmentMembersFromStaffIncludingInactive', + func: rebuildDepartmentMembersFromStaff } ]) }, diff --git a/plugins/hr-resources/src/components/DepartmentCard.svelte b/plugins/hr-resources/src/components/DepartmentCard.svelte index 611e8774100..ddcddf6e9ef 100644 --- a/plugins/hr-resources/src/components/DepartmentCard.svelte +++ b/plugins/hr-resources/src/components/DepartmentCard.svelte @@ -78,7 +78,8 @@ $: dragPersonId = dragPerson?._id $: members = new Set>(value.members as Ref[]) - $: values = allEmployees.filter((it) => members.has(it._id) && it._id !== dragPersonId) + $: activeMembers = allEmployees.filter((it) => it.active && members.has(it._id)) + $: values = activeMembers.filter((it) => it._id !== dragPersonId) $: dragging = value._id === dragOver?._id && dragPersonId !== undefined @@ -121,7 +122,7 @@
{value.name}
-