15 lines
755 B
TypeScript
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('|')}`;
|
|
}
|