Assessor_2.0/src/app/work-scope.ts

15 lines
755 B
TypeScript

/** A persisted timeslot may be backed by scanner runs, GPO assessments, or both. */
export function hasSelectedTimeslotScope(scanRunIds?: readonly string[], assessmentIds?: readonly string[]): boolean {
return Boolean(scanRunIds?.length || assessmentIds?.length);
}
/** Stable local UI scope for one client state in Work. */
export function createWorkScopeId(projectId: string, scanRunIds?: readonly string[], assessmentIds?: readonly string[]): string {
if (!scanRunIds?.length && assessmentIds?.length) {
return `${projectId}::assessments::${[...new Set(assessmentIds)].sort().join('|')}`;
}
if (!scanRunIds?.length) return projectId;
const runs = [...new Set(scanRunIds)].sort();
return `${projectId}::timeslot::${runs.join('|')}`;
}