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

オブジェクトテーブル

オブジェクトテーブル ウィジェットは、オブジェクトデータを表形式で表示するために使用されます。モジュールビルダーは、オブジェクトテーブルウィジェットを設定する際に、以下の機能を使用できます。

  • 1つまたは複数のオブジェクトタイプのデータを表示します。
  • 表示する行を選択します。これには、時間系列プロパティを使用した時間系列行や、Functionを介してリアルタイムで生成された派生行も含まれます。
  • 1つまたは複数の行でソートします。
  • 行サイズと行高を設定します。
  • オントロジーマネージャーで設定された条件付きフォーマットと数値フォーマットオプションを表示します。
  • テーブル内での単一または複数選択を許可します。
  • テーブル内でセルレベルの書き戻しを可能にするためのインライン編集を許可します。
  • テーブル内で行を選択したときにWorkshopイベントをトリガーします。

以下のスクリーンショットは、設定されたオブジェクトテーブルがフライトアラートデータを表示している例を示しています。

object_table_reference_1

設定オプション

オブジェクトが画像へのURLを保存するプロパティを持っている場合、タイプクラス hubble:icon を追加して、オブジェクトタイプの設定時に選択されたアイコンの代わりに画像を表示します。この機能により、データと一緒にピクトグラムや画像を表示することができます。

以下のスクリーンショットは、新しく追加され、まだ設定されていないオブジェクトテーブルウィジェットとその初期設定パネルの初期状態を示しています。

object_table_reference_2

オブジェクトテーブルウィジェットの主な設定オプションは以下のとおりです。

  • 入力データ
    • オブジェクトセット: これはオブジェクトテーブルウィジェットへの入力変数で、オブジェクトテーブル内に表示されるデータを決定します。これにより、モジュールビルダーは新たにオブジェクトセット変数を定義するか、このWorkshopモジュール内の他の場所で作成された既存のオブジェクトセット変数を再利用することができます。
  • 行の設定
    • 表示されるプロパティ: このセクションでは、オブジェクトテーブルに表示される行を決定します。この設定オプションは、初期オブジェクトセットがポピュレートされた後に詳しく表示され、初期オブジェクトセット内で見られるプロパティタイプを示します。さらに、特別な行タイプにより、モジュールビルダーはリンクされたオブジェクト、パラメータ化されたURLリンク、時間系列データ、およびFunctionを介してリアルタイムで生成される派生行を表示できます。ビューモードのユーザーは、表示される行を自身で設定することもできます。行ヘッダーの横の矢印から行の設定を選択することで、ビューアはオブジェクトテーブルに表示する行とその順序を選択できます。時間系列データについての詳細な情報は、以下の時間系列プロパティセクションを、派生行の設定方法についての詳細な情報は、以下のFunction-backed Columnsセクションをご覧ください。

      表示される行名は、追加時にオブジェクトタイプのプロパティ名にデフォルト設定されるテキストフィールドです。 オブジェクトタイプのプロパティ名が後でオントロジーで更新された場合、オブジェクトテーブルの表示行名は自動的には変更されません。

    • インライン編集を有効にする: 有効にすると、このトグルは、オブジェクトテーブル内でセルレベルの編集を設定することを許可します。この高度な機能の設定方法については、以下の インライン編集(セルレベルの書き戻し) セクションを参照してください。

    • デフォルトのソート: この設定では、テーブルに1つ以上のデフォルトのソートを適用することができます。モジュールビルダーは、テーブル内に表示される可視のプロパティタイプと表示されない非表示のプロパティタイプの両方についてソートすることができます。ソートが適用されない場合、データはソートされません。必要に応じてソートを指定することをお勧めします。

  • 選択
    • アクティブオブジェクト: これはオブジェクトテーブルの2つの出力変数の1つで、現在アクティブ/ハイライトされているオブジェクトのオブジェクトセットを出力します。このオブジェクトセットは、現在のモジュール内の下流のウィジェットで使用することができます。
    • アクティブオブジェクトの自動選択を無効にする: デフォルトでは、テーブルの最初の行がロード時に自動的にアクティブオブジェクトとして設定されます。この設定を無効にすると、ロード時にアクティブオブジェクトが空になります。
    • 複数選択を有効にする: 有効にすると、このトグルはテーブル内で複数のオブジェクトをチェック/選択し、選択されたオブジェクト オブジェクトセット変数を経由して出力することができます。
    • 選択されたオブジェクト: これはオブジェクトテーブルの2つの出力変数の2つ目で、現在チェック/選択されているオブジェクトのオブジェクトセットを出力します。このオブジェクトセットは、現在のモジュール内の下流のウィジェットで使用することができます。注:この出力変数は、複数選択を有効にする トグルが真に設定されている場合にのみ使用され、ポピュレートされます。
    • アクティブオブジェクトの選択時に: このオプションでは、モジュールビルダーがテーブルで行を選択したときにトリガーするWorkshopイベントを設定することができます(例えば、詳細なオブジェクトビューを持つドロワーを表示させるなど)。
  • 表示 & フォーマット
    • 行ごとに表示する行数: この数値は、各テーブル行の高さを制御します。
    • 凍結する行の数: この数値は、テーブルの左側に固定され、ユーザーが右にスクロールしても常に表示される凍結行の数を決定します。
    • 複数のオブジェクトタイプを結合する: この設定は、複数のオブジェクトタイプを表示するテーブルにのみ影響します。無効にすると、各オブジェクトタイプは独自のタブ内に表示されます。有効にすると、すべてのオブジェクトタイプが単一のテーブル内に表示され、オブジェクトタイプ間で表示名とIDの両方を共有するプロパティタイプが単一の行に統合されます。注:このオプションは、インライン編集を有効にする が真に設定されている場合は利用できません。
    • 行を水平方向にフィットさせる: 有効にすると、行はテーブルの現在の幅に合わせて自動的にリサイズします。
    • 狭いヘッダーを有効にする: 有効にすると、テーブルヘッダーは50ピクセルから30ピクセルに縮小します。
    • 条件付きフォーマットがセル全体をカラーリング: 有効にすると、条件付きフォーマットがセル全体をカラーリングします。 注:条件付きフォーマットは、通常のプロパティタイプについてはオントロジーマネージャー内で、関数バックのプロパティについてはオブジェクトテーブルウィジェットの設定パネル内で設定されます。
  • シナリオ
    • データをロードするシナリオ: オブジェクトテーブルのデータをロードするシナリオを選択します。この入力は、オブジェクトテーブルに表示されるオブジェクトとその順序にも影響します。
    • シナリオと比較する: このトグルを有効にすると、データを比較するシナリオ配列変数を選択できます。これにより、テーブルのデータを配列内のシナリオの値と比較し、変更がある行で値を並べて表示します。
    • シナリオのドキュメンテーションを参照して、詳細情報を確認してください。

行の設定を保存する

行の設定を保存するには、状態保存機能と共に文字列配列変数を使用して、以下の手順を実行します。

  1. 状態保存が有効になっていることを確認します
  2. 新しい静的文字列配列変数(配列変数は空でも可)で変数バックの行表示を有効にします。
  3. 文字列配列変数をプロモートして、変数が状態保存と共に保存されるようにします。

Function-backed 行

以下のチュートリアルでは、あなたのFoundry環境に存在しない可能性のあるフライトアラートオブジェクトタイプが参照されています。以下をガイドとして使用し、あなたのFoundryインスタンスから同等のオブジェクトタイプを使用して進めてください。Functionsについて詳しく知るには、専用のFunctions documentationをご覧ください。

概要

1つまたは複数のfunction-backed行を返す関数を作成するには、以下の仕様を満たす必要があります。

  1. 関数の入力パラメーターは、ObjectSet<ObjectType> パラメーターを含む必要があります(他の入力パラメーターをオプションで含むこともできます)。この ObjectSet<ObjectType> パラメーターにより、テーブルに表示されるオブジェクトが関数に渡され、求める派生行が生成されます。なお、ObjectType[] パラメーターもここで機能しますが、このパフォーマンスの低いオプションは推奨されません。
  2. 関数の返り値の型は FunctionsMap<ObjectType, CustomType> でなければなりません。これにより、関数はオブジェクト → カスタムタイプのマップを返すことができ、このカスタムタイプには1つ以上のフィールドを含めることができます。カスタムタイプについて詳しく学ぶ。

上記の基準を満たす関数が設定および公開されると、オブジェクトテーブル設定内で「Function-backed property」行を正常に設定できます。詳細なチュートリアルについては、以下をご覧ください。

Function-backed プロパティの特徴

オブジェクトテーブルウィジェットは、Functionsを通じてリアルタイムで計算されるfunction-backedプロパティの表示をサポートしています。これにより、モジュールビルダーは、例えば以下のような行を表示するための大幅な柔軟性を得ることができます。

  • 2つ以上の他のプロパティ間の合計、差、または他の数学的操作を計算します。
  • Workshopモジュール内の他の場所でのデータ入力に基づいて更新される統計モデルの出力を示します。
  • リンクされたオブジェクトからのプロパティを表示します
  • Workshopモジュール内の他の場所でのユーザー入力に基づいて表示内容を変更します。

単一のfunction-backedプロパティを設定する

この例では、function-backedプロパティを使用して、ユーザーが Flight Alert チケットの優先度を視覚化し、作業するのを支援します。ここでは、既存のプロパティである Time of Delay (時間単位)を調査し、このプロパティから新しいfunction-backed行である Urgency を生成することを目指しています。派生した Urgency 行は、長時間の遅延(4時間以上)を「High」(高)の緊急度、中程度の遅延(2〜4時間)を「Medium」(中)の緊急度、短時間の遅延(2時間未満)を「Low」(低)の緊急度とマークします。この Urgency 派生プロパティにより、ユーザーはオブジェクトテーブルを素早くスキャンして、どのアラートを最初に行動すべきかを判断するのが容易になります。

このfunction-backedプロパティを設定するための最初のステップは、期待される入力(例えば、Flight Alert オブジェクトのオブジェクトセット)を取り込み、オブジェクトテーブルがfunction-backedプロパティに必要とする期待される FunctionsMap 出力(例えば、Flight Alert オブジェクト --> 緊急性の文字列の FunctionsMap )を返す関数を設定することです。この例では、緊急度を計算するロジックは関数自体にハードコードされています。以下に示します:

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 @Function() public flightAlertCalculateUrgency(flightAlerts: ObjectSet<FlightAlertWorkshopTutorial>): FunctionsMap<FlightAlertWorkshopTutorial, string>{ const map = new FunctionsMap<FlightAlertWorkshopTutorial, string>(); flightAlerts.all().forEach(flightAlert => { var hoursDelayed = flightAlert.timeOfDelayHours // 遅延時間が4時間を超える場合 if (hoursDelayed! > 4) { map.set(flightAlert, "High") // 高い緊急度 } // 遅延時間が2時間を超える場合 else if (hoursDelayed! > 2) { map.set(flightAlert, "Medium") // 中程度の緊急度 } // それ以外の場合 else { map.set(flightAlert, "Low") // 低い緊急度 } }); return map; }

この関数が公開されたら、Urgency という派生プロパティがワークショップ・モジュールに表示されるように設定します。まず、ワークショップ・モジュール内のオブジェクトテーブルの設定パネルで、列を追加... ボタンをクリックし、派生プロパティを追加するオプションを選択します。

object_table_reference_3

Columns リストに表示される Function-Backed Property オプションで、”fx” Functions アイコンをクリックしてから、目的の関数を選択します。この例では、flightAlertCalculateUrgency 関数を選択します。

object_table_reference_4

次に、関数のバージョンを確認し、関数に必要な入力を設定します。オブジェクトテーブルに現在表示されているオブジェクトのみを渡すように、実行時の入力を使用する を選択して、関数のパフォーマンスを最適化しましょう。また、オブジェクトセット変数(つまり、オブジェクトテーブルにバックアップされたオブジェクトセット)を渡すオプションもあります。

実行時の入力を使用する オプションでは、オブジェクトテーブルに現在表示されているオブジェクトのみが派生列関数に動的に渡され、パフォーマンスが向上します。追加の 変数入力を使用する オプションでは、代わりにオブジェクトセット全体を渡すことができます(例えば、オブジェクトテーブルにバックアップされている入力オブジェクトセット変数)、ただし、パフォーマンスが低下する可能性があります。

object_table_reference_5

最後に、Function-backed property 行セルをクリックして、この行の名前を "Urgency" のようにもっと説明的なものに変更しましょう。

object_table_reference_6

最終結果は、新しい派生 Urgency 行をその場で計算し、この貴重な追加情報をユーザーに表示するオブジェクトテーブルになります。

object_table_reference_7

複数の関数バックプロパティを設定する

次に、カスタム戻り型を使用して、複数の関数バックプロパティを生成する単一の関数を作成する、より高度な例を説明しましょう。カスタムタイプについての詳細。 単一の関数で複数の関数バックプロパティを返すことの利点は、パフォーマンスの向上と関連する派生プロパティコードの整理が明確になることです。

この例では、ObjectSet<FlightAlerts> を入力として受け取り、Departure Airport リンクをたどってリンクされた Airport オブジェクトを取得し、そのリンクされた Airport オブジェクトから 3 つのプロパティを返す関数を使用します。これにより、オブジェクトテーブルに表示されるデータがリンクされたオブジェクトタイプからの関連情報を含むようになります。

この目標を達成するために、まず、この関数内で使用するカスタムタイプを定義します。以下のようになります。

Copied!
1 2 3 4 5 6 // 連結出発空港のプロパティを表すインターフェース interface LinkedDepartureAirportProperties { airport: string; // 空港名 city: string; // 都市名 country: string; // 国名 }

次に、このカスタムタイプを使用して、AirportCity、そしてCountryの三つの関数バックエンドの行を返す下記のような関数を書きます:

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 @Function() public getColumnsFromLinkedDepartureAirport(flightAlerts: ObjectSet<FlightAlertWorkshopTutorial>): FunctionsMap<FlightAlertWorkshopTutorial, LinkedDepartureAirportProperties> { // 関連する空港をすべて取得し、iataをキーとした辞書に格納する const iataToAirport: { [iata: string]: AirportObject } = {}; flightAlerts.searchAroundDepartureAirport().all().forEach(airport => { iataToAirport[airport.iata!] = airport; }); const map = new FunctionsMap<FlightAlertWorkshopTutorial, LinkedDepartureAirportProperties>(); flightAlerts.all().forEach(alert => { // このアラートの空港を取得する const airport = iataToAirport[alert.departureAirportCode!]; // 空港が見つからない場合はスキップする if (!airport) { return; } map.set(alert, { airport: airport.airport!, city: airport.city!, country: airport.country!, }); }); return map; }

上記の関数が公開されると、Workshop内で派生行を追加するために使用できます。以下のスクリーンショットは、Flight Alertオブジェクトを含むオブジェクトテーブルウィジェットの設定例を示しています。新しいFunction-backed property行がテーブルに追加されるところです。

derived_columns_configuration_1

行リストに表示される新しい行で、fxアイコンをクリックして、派生行をバックアップする関数を選択します。この例では、このチュートリアルの前に定義された getColumnsFromLinkedDepartureAirport 関数を選択します。

derived_columns_configuration_2

次に、選択した関数への入力パラメーターを設定します。この例では、関数は flightAlerts と呼ばれる Flight Alert オブジェクトのオブジェクトセットを単一の入力パラメーターとして受け取ります。現在オブジェクトテーブルに表示されているオブジェクトを関数に渡すために、Use a runtime input オプションを選択しましょう。

Use a runtime inputオプションは、オブジェクトテーブルに現在表示されているオブジェクトのみ(オブジェクトセット全体ではなく)を動的に派生列関数に渡し、パフォーマンスを向上させます。追加のUse a variable inputオプションでは、代わりにオブジェクトセット全体の変数(オブジェクトテーブルをバックアップする入力オブジェクトセット変数など)を渡すことができますが、パフォーマンスが低下する可能性があります。

derived_columns_configuration_3

上記の手順が完了すると、関数は正常に実行され、Object Tableに予想される3つの行が表示されます。Departure AirportDeparture CityDeparture Country。ここで終了することもできますし、列の表示名や列の順序を編集して、アプリケーションでの列の表示方法を改善することもできます。

derived_columns_configuration_4

タイムシリーズプロパティ

タイムシリーズプロパティタイムシリーズ変換によって生成されたデータを含む、オブジェクトテーブルで通常のプロパティと一緒に表示できます。タイムシリーズプロパティは、タイムスタンプ付きの値の履歴を格納するオブジェクトプロパティです。詳細については、Workshopのタイムシリーズプロパティ を参照してください。

以下の例では、Countryオブジェクトには、国の名前を格納する従来の文字列プロパティNameと、国で観察された新型コロナウイルス感染症(COVID-19)の新規症例の日次履歴を格納するタイムシリーズプロパティ New Cases があります。オブジェクトテーブルは、左側の最初の2つの列でこれらの2つのプロパティを表示し、New Casesプロパティを使用してタイムシリーズ変換から派生した3つのタイムシリーズ、Case AccelerationWeekly CasesTotal Casesを表示します。各タイムシリーズ列は、タイムシリーズの最新の観測値を左に、タイムシリーズの履歴を可視化するスパークラインを右に表示します。

time_dependent_properties_object_table

オブジェクトテーブルでタイムシリーズプロパティ列を設定する方法を説明するために、Weekly Cases列の設定を説明します。画面の右側のパネルは、Weekly Cases列の設定の上部と下部で、設定と結果の参照として同じ画面に表示されます。

weekly_cases_example

タイムシリーズ変換

まず、タイムシリーズ変換を使用して、週刊のCOVID-19症例負荷のタイムシリーズを生成する必要があります。タイムシリーズ変換は、入力タイムシリーズデータに対して数学的操作を実行して、新しい出力タイムシリーズを生成します。詳細については、Workshopのタイムシリーズプロパティ を参照してください。

ここでは、集計変換を使用して、必要なタイムシリーズを作成できます。Add transformボタンをクリックすると、変換設定が開き、必要なタイムシリーズを生成するための設定ができます。

object_table_transform_step

タイムシリーズサマリザー

次に、タイムシリーズサマリザー(赤いボックス)を使用して、列に表示される数値を生成します。タイムシリーズサマリザーは、タイムシリーズデータのサマリー統計を構成するもので、タイムシリーズの状態を反映する値です。ここでは、表示したい値を生成するために、単一の値サマリザーを使用します。これは、最後の週平均症例数です。詳細については、Workshopのタイムシリーズプロパティ を参照してください。

次に、value formatting(青いボックス)を設定します。これは、Format Numberヘッダーの下にあり、conditional formatting(緑のボックス)を設定します。これは、Conditional Formattingヘッダーの下にあります。これらは、この値の表示方法をスタイル化します。値のフォーマットは、値の数字の表示方法を制御し、条件付きフォーマットは、値に基づいたルールシステムを使用して表示色を変更します。この場合、コンパクト表記を使用し、週平均COVID-19症例数が100を超える場合は赤で表示します。詳細については、Workshopのフォーマット を参照してください。

object_table_summarizer_step

スパークライン

最後に、週平均症例のタイムシリーズの履歴を表示するスパークラインの可視化を設定できます。

time rangeセレクター(赤いボックス)を使用すると、タイムシリーズを表示する時間ウィンドウを指定できます。詳細については、Workshopのタイムシリーズプロパティ を参照してください。

また、conditional formatting(青いボックス)を追加して、Conditional Formattingヘッダーの下で、値に基づいたルールシステムを使用してスパークラインの色を変更できます。詳細については、Workshopのフォーマット を参照してください。

最後に、baseline(緑のボックス)を設定して、スパークラインの解釈を補助できます。詳細については、Workshopのタイムシリーズプロパティ を参照してください。

object_table_sparkline_step

インライン編集(セルレベルの書き戻し)

インライン編集の編集オプションは、オントロジーで設定されたアクションによって定義されます。アクションに関する詳細は、アクションチュートリアル を参照してください。さらなるインライン編集の検討事項については、アクションインライン編集ドキュメント を参照してください。

概要

インライン編集を有効にすると、モジュールのユーザーがオブジェクトテーブル内に表示されるセルレベルのデータを変更し、これらの編集をオブジェクトデータに保存できます。編集オプションは、以下の基準を満たすオントロジーで設定されたアクションによって定義されます。

  • アクションは、「オブジェクトを変更する」ルールを1つだけ使用するか、関数でバックアップされるべきです。
  • アクション内のすべての変更プロパティは、「パラメーターから」(「静的値として」や「オブジェクトパラメーターのプロパティから」ではなく)定義されている必要があります。
  • プロパティパラメータは、単一のプリミティブ型(例:ブール型、整数型、文字列型など、オブジェクト参照や配列ではない)である必要があります。
  • パラメータの表示オプションは、「非表示」に設定されていないことが望ましい(各パラメータは、テーブル内の表示列と連動しています)。

追加の注意事項:

  • パラメータがユーザーが選択できる列挙値を定義している場合、そのオプションはセル内のドロップダウンに表示され、ユーザーがそのパラメータを変更する際に遵守されます。
  • パラメータやアクションに検証基準がある場合(例えば、特定の数値パラメータが1から10の間でなければならない場合など)、それらの検証基準が適用されます。
  • インライン編集中にパラメータの表示オプションは遵守されません(例えば、テキスト入力とテキストエリア)。
  • 設定が容易なように、アクションパラメータIDは、テーブル内に表示されるプロパティIDと一致する必要があります。これにより、アクションパラメータが自動的にテーブル列にマッピングされます。
  • 一貫した表示のために、マルチパスユーザーパラメータは、オントロジー内のマルチパス値フォーマットを使用して列/プロパティタイプにマップする必要があります。値フォーマットに関する詳細は、オントロジードキュメント を参照してください。

インライン編集の設定と使用

オブジェクトテーブルウィジェットの設定時に、Enable inline editing の切り替えが Column configuration セクションの Displayed properties リストの下に表示されます。この切り替えを true に設定すると、Enable inline editing が有効になり、表示されるオブジェクトタイプを変更するために、オントロジー内で既に設定されたアクションを選択するように求められます。以下の例では、Flight Alert: Inline Editing アクションを使用してインライン編集が有効になっています。アクションピッカーの下には、表示されるドロップダウンを介してアクションパラメータがテーブル列にマッピングされています。

object_table_inline_editing_1

上記が設定されると、ユーザーはテーブルフッターに表示される Edit table ボタンをクリックすることで編集モードに入ることができます。編集モードに入ると、ユーザーはアクションパラメータにマッピングされた任意の変更可能な列を編集できます。関数でバックアップされていないアクションの場合は、一度に最大20行まで、関数でバックアップされているアクションの場合は一度に最大200行までの編集をステージングできます。ステージングされた編集は、Undo button アンドゥボタン(以下のスクリーンショットのテーブルの一番左の列に表示されている)をクリックすることで元に戻すことができます。

object_table_inline_editing_2