アプリケーションの構築Workshop動的スケジュール検索機能

注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

検索機能

検索機能を使うことで、ユーザーはスケジューリングワークフローで発生する特定のユニークな問題に対する解決策を素早く見つけ出し、評価することができます。

各検索機能は TypeScript 関数によってサポートされています。柔軟なインターフェースにより、ビルダーはパック、タイムスロット、またはその組み合わせを返す関数を記述することができます。さらに、検索機能は、行ベースまたはパックベースにすることができます。

行ベースの検索機能では、ユーザーは空のスペースを右クリックして、行オブジェクトと時間を関数の入力として渡す必要があります。パックベースの検索機能では、ユーザーはパックを右クリックして、オブジェクトと時間を関数の入力として渡す必要があります。

以下の画像は、パックを返す検索機能のインターフェースを示しています。

Example: search function returning pucks

以下の画像は、タイムスロットを返す検索機能のインターフェースを示しています。

Example: search function returning time slots

検索機能が実行されると、スケジューリング ガント チャートに新しい検索グループが作成され、結果は黄色で強調表示されます。検索グループは、グループヘッダーの右側にあるケアット記号(^)を選択することで折りたたんだり展開したりできます。さらに、ユーザーは Results Overview オプションを選択して、検索機能の出力が表示されるパネルを開き、検索結果を詳細に表示することができます。以下の画像で示されています。

Search Function results overview interface.

関数インターフェース

以下のタイプは、検索グループの詳細を含め、行またはパックからトリガーされた際に検索機能を記述するために必要な情報を示しています。

type IPuckSearch = (puck: ObjectReference) => ISearchResult
type IRowSearch = (rowId: string, selectedTime: Timestamp) => ISearchResult


/*
   検索関数は、時間枠、パック、または両方を返すことができます。SLOTとPUCKは、
   IHighlightでタイプとして使用されます。
*/

export enum HighlightType {
    SLOT = "SLOT",
    PUCK = "PUCK",
}


/*
   IHighlightで、一連の時間枠を返す関数に使用されます。
*/

export interface IDomain {
    start: Long;
    end: Long;
}

/*
   検索機能が実行された後にUIで強調表示されるものを決定するために使用されます
*/

export interface IHighlight {
    type: string;
    // "SLOT"に必要
    domain?: IDomain;
    containerId?: string;
    // "PUCK"に必要
    schedulableObjectPrimaryKey?: string;
    schedulableObjectTypeId?: string;
    // 任意
    comment?: string;
}

/*
   新しく作成された検索グループのタイトルと、関数が返す行を定義します。
*/
export interface IRowGroup {
    title: string;
    containerIds: string[];
    highlights: IHighlight[];
}

/*
   関数の全体的な戻り値のタイプです。
*/

export interface ISearchResult {
    rowGroup?: IRowGroup;
    sourcePuckIds?: string[];
    error?: string;
}