Files
OpenOPC/opc/plugins/office_ui/frontend_src/lib/workItemIdentity.ts
T
2026-07-01 17:56:31 +08:00

33 lines
1.0 KiB
TypeScript

import type { EmployeeAssignment } from '../types/kanban'
type WorkItemIdentity = {
workItemRoleId?: string
workItemRoleName?: string
employeeAssignment?: EmployeeAssignment
}
export function humanizeWorkItemRoleId(value?: string): string {
const normalized = (value ?? '').trim()
if (!normalized) return ''
return normalized
.replace(/[_-]+/g, ' ')
.replace(/\b\w/g, (char) => char.toUpperCase())
}
export function getWorkItemRoleLabel(identity: WorkItemIdentity): string {
const explicit = (identity.workItemRoleName ?? '').trim()
if (explicit) return explicit
return humanizeWorkItemRoleId(identity.workItemRoleId)
}
export function getWorkItemEmployeeLabel(identity: WorkItemIdentity): string {
return (identity.employeeAssignment?.name ?? '').trim()
}
export function getWorkItemAssignmentLabel(identity: WorkItemIdentity): string {
const role = getWorkItemRoleLabel(identity)
const employee = getWorkItemEmployeeLabel(identity)
if (role && employee) return `${role} · ${employee}`
return role || employee
}