현재 상태를 고려하는 일정 검색 함수
Search Function은 특정 일정 문제에 맞는 후보 객체, 시간 슬롯 또는 둘을 반환하는 TypeScript 함수입니다. 행의 빈 영역을 오른쪽 클릭하면 자원 행과 선택 시각을 입력으로 사용하고, 일정 블록을 오른쪽 클릭하면 해당 객체를 기준으로 검색합니다.
정적인 Suggestion Function과 달리 검색 실행은 활성 시나리오에 적용한 변경을 포함한 현재 상태를 고려합니다.
결과 표시
객체를 반환하면 추천한 일정 블록을 강조합니다.
시간 슬롯을 반환하면 후보 시간 범위를 강조합니다.
실행 후에는 노란색으로 강조한 새 검색 그룹이 생깁니다. 그룹 헤더 오른쪽의 꺾쇠로 접거나 펼치고 Results Overview에서 자세한 결과를 확인할 수 있습니다.
함수의 입력
행 검색은 rowId: string과 selectedTime: Timestamp를 받습니다. 블록 검색은 실제 일정 객체 참조를 받습니다. 게시할 함수에서는 프로젝트에 가져온 구체 온톨로지 객체 유형을 입력 자료형으로 사용해야 합니다.
반환 자료형
import { Long, Timestamp } from "@foundry/functions-api";
export enum HighlightType {
SLOT = "SLOT",
PUCK = "PUCK"
}
export interface IDomain {
start: Long;
end: Long;
}
export interface IHighlight {
type: string;
domain?: IDomain;
containerId?: string;
schedulableObjectPrimaryKey?: string;
schedulableObjectTypeId?: string;
comment?: string;
}
export interface IRowGroup {
title: string;
containerIds: string[];
highlights: IHighlight[];
}
export interface ISearchResult {
rowGroup?: IRowGroup;
sourcePuckIds?: string[];
error?: string;
}
export type IPuckSearch<TScheduleObject> = (puck: TScheduleObject) => ISearchResult;
export type IRowSearch = (rowId: string, selectedTime: Timestamp) => ISearchResult;
시간 슬롯인 SLOT에는 Long형 시간 경계의 domain과 대상 행을 나타내는 containerId가 필요합니다. 일정 객체인 PUCK에는 schedulableObjectPrimaryKey와 schedulableObjectTypeId가 필요합니다. comment는 선택적인 설명입니다.
rowGroup은 새 검색 그룹의 제목, 행 ID 목록과 강조 항목을 담습니다. sourcePuckIds에는 원천 일정 블록 ID 목록을, error에는 오류 정보를 반환할 수 있습니다. 한 결과의 highlights에 SLOT과 PUCK을 함께 넣을 수 있습니다.
위젯의 Search Results Output은 함수가 객체를 반환할 때만 채워집니다. 슬롯만 반환하는 검색의 결과를 객체 집합 출력으로 간주하면 안 됩니다.