注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
オブジェクトテーブル ウィジェットは、オブジェクトデータを表形式で表示するために使用されます。モジュールビルダーは、オブジェクトテーブルウィジェットを設定する際に、以下の機能を使用できます。
以下のスクリーンショットは、設定されたオブジェクトテーブルがフライトアラートデータを表示している例を示しています。
オブジェクトが画像へのURLを保存するプロパティを持っている場合、タイプクラス hubble:icon
を追加して、オブジェクトタイプの設定時に選択されたアイコンの代わりに画像を表示します。この機能により、データと一緒にピクトグラムや画像を表示することができます。
以下のスクリーンショットは、新しく追加され、まだ設定されていないオブジェクトテーブルウィジェットとその初期設定パネルの初期状態を示しています。
オブジェクトテーブルウィジェットの主な設定オプションは以下のとおりです。
表示されるプロパティ: このセクションでは、オブジェクトテーブルに表示される行を決定します。この設定オプションは、初期オブジェクトセットがポピュレートされた後に詳しく表示され、初期オブジェクトセット内で見られるプロパティタイプを示します。さらに、特別な行タイプにより、モジュールビルダーはリンクされたオブジェクト、パラメータ化されたURLリンク、時間系列データ、およびFunctionを介してリアルタイムで生成される派生行を表示できます。ビューモードのユーザーは、表示される行を自身で設定することもできます。行ヘッダーの横の矢印から行の設定を選択することで、ビューアはオブジェクトテーブルに表示する行とその順序を選択できます。時間系列データについての詳細な情報は、以下の時間系列プロパティセクションを、派生行の設定方法についての詳細な情報は、以下のFunction-backed Columnsセクションをご覧ください。
表示される行名は、追加時にオブジェクトタイプのプロパティ名にデフォルト設定されるテキストフィールドです。 オブジェクトタイプのプロパティ名が後でオントロジーで更新された場合、オブジェクトテーブルの表示行名は自動的には変更されません。
インライン編集を有効にする: 有効にすると、このトグルは、オブジェクトテーブル内でセルレベルの編集を設定することを許可します。この高度な機能の設定方法については、以下の インライン編集(セルレベルの書き戻し) セクションを参照してください。
デフォルトのソート: この設定では、テーブルに1つ以上のデフォルトのソートを適用することができます。モジュールビルダーは、テーブル内に表示される可視のプロパティタイプと表示されない非表示のプロパティタイプの両方についてソートすることができます。ソートが適用されない場合、データはソートされません。必要に応じてソートを指定することをお勧めします。
行の設定を保存するには、状態保存機能と共に文字列配列変数を使用して、以下の手順を実行します。
以下のチュートリアルでは、あなたのFoundry環境に存在しない可能性のあるフライトアラートオブジェクトタイプが参照されています。以下をガイドとして使用し、あなたのFoundryインスタンスから同等のオブジェクトタイプを使用して進めてください。Functionsについて詳しく知るには、専用のFunctions documentationをご覧ください。
1つまたは複数のfunction-backed行を返す関数を作成するには、以下の仕様を満たす必要があります。
ObjectSet<ObjectType>
パラメーターを含む必要があります(他の入力パラメーターをオプションで含むこともできます)。この ObjectSet<ObjectType>
パラメーターにより、テーブルに表示されるオブジェクトが関数に渡され、求める派生行が生成されます。なお、ObjectType[]
パラメーターもここで機能しますが、このパフォーマンスの低いオプションは推奨されません。FunctionsMap<ObjectType, CustomType>
でなければなりません。これにより、関数はオブジェクト → カスタムタイプのマップを返すことができ、このカスタムタイプには1つ以上のフィールドを含めることができます。カスタムタイプについて詳しく学ぶ。上記の基準を満たす関数が設定および公開されると、オブジェクトテーブル設定内で「Function-backed property」行を正常に設定できます。詳細なチュートリアルについては、以下をご覧ください。
オブジェクトテーブルウィジェットは、Functionsを通じてリアルタイムで計算される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
という派生プロパティがワークショップ・モジュールに表示されるように設定します。まず、ワークショップ・モジュール内のオブジェクトテーブルの設定パネルで、列を追加... ボタンをクリックし、派生プロパティを追加するオプションを選択します。
Columns リストに表示される Function-Backed Property オプションで、”fx” Functions アイコンをクリックしてから、目的の関数を選択します。この例では、flightAlertCalculateUrgency 関数を選択します。
次に、関数のバージョンを確認し、関数に必要な入力を設定します。オブジェクトテーブルに現在表示されているオブジェクトのみを渡すように、実行時の入力を使用する を選択して、関数のパフォーマンスを最適化しましょう。また、オブジェクトセット変数(つまり、オブジェクトテーブルにバックアップされたオブジェクトセット)を渡すオプションもあります。
実行時の入力を使用する オプションでは、オブジェクトテーブルに現在表示されているオブジェクトのみが派生列関数に動的に渡され、パフォーマンスが向上します。追加の 変数入力を使用する オプションでは、代わりにオブジェクトセット全体を渡すことができます(例えば、オブジェクトテーブルにバックアップされている入力オブジェクトセット変数)、ただし、パフォーマンスが低下する可能性があります。
最後に、Function-backed property 行セルをクリックして、この行の名前を "Urgency" のようにもっと説明的なものに変更しましょう。
最終結果は、新しい派生 Urgency 行をその場で計算し、この貴重な追加情報をユーザーに表示するオブジェクトテーブルになります。
次に、カスタム戻り型を使用して、複数の関数バックプロパティを生成する単一の関数を作成する、より高度な例を説明しましょう。カスタムタイプについての詳細。 単一の関数で複数の関数バックプロパティを返すことの利点は、パフォーマンスの向上と関連する派生プロパティコードの整理が明確になることです。
この例では、ObjectSet<FlightAlerts>
を入力として受け取り、Departure Airport
リンクをたどってリンクされた Airport
オブジェクトを取得し、そのリンクされた Airport
オブジェクトから 3 つのプロパティを返す関数を使用します。これにより、オブジェクトテーブルに表示されるデータがリンクされたオブジェクトタイプからの関連情報を含むようになります。
この目標を達成するために、まず、この関数内で使用するカスタムタイプを定義します。以下のようになります。
Copied!1 2 3 4 5 6
// 連結出発空港のプロパティを表すインターフェース interface LinkedDepartureAirportProperties { airport: string; // 空港名 city: string; // 都市名 country: string; // 国名 }
次に、このカスタムタイプを使用して、Airport
、City
、そして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
行がテーブルに追加されるところです。
行リストに表示される新しい行で、fxアイコンをクリックして、派生行をバックアップする関数を選択します。この例では、このチュートリアルの前に定義された getColumnsFromLinkedDepartureAirport
関数を選択します。
次に、選択した関数への入力パラメーターを設定します。この例では、関数は flightAlerts
と呼ばれる Flight Alert オブジェクトのオブジェクトセットを単一の入力パラメーターとして受け取ります。現在オブジェクトテーブルに表示されているオブジェクトを関数に渡すために、Use a runtime input オプションを選択しましょう。
Use a runtime inputオプションは、オブジェクトテーブルに現在表示されているオブジェクトのみ(オブジェクトセット全体ではなく)を動的に派生列関数に渡し、パフォーマンスを向上させます。追加のUse a variable inputオプションでは、代わりにオブジェクトセット全体の変数(オブジェクトテーブルをバックアップする入力オブジェクトセット変数など)を渡すことができますが、パフォーマンスが低下する可能性があります。
上記の手順が完了すると、関数は正常に実行され、Object Tableに予想される3つの行が表示されます。Departure Airport
、Departure City
、Departure Country
。ここで終了することもできますし、列の表示名や列の順序を編集して、アプリケーションでの列の表示方法を改善することもできます。
タイムシリーズプロパティ、タイムシリーズ変換によって生成されたデータを含む、オブジェクトテーブルで通常のプロパティと一緒に表示できます。タイムシリーズプロパティは、タイムスタンプ付きの値の履歴を格納するオブジェクトプロパティです。詳細については、Workshopのタイムシリーズプロパティ を参照してください。
以下の例では、Country
オブジェクトには、国の名前を格納する従来の文字列プロパティName
と、国で観察された新型コロナウイルス感染症(COVID-19)の新規症例の日次履歴を格納するタイムシリーズプロパティ New Cases
があります。オブジェクトテーブルは、左側の最初の2つの列でこれらの2つのプロパティを表示し、New Cases
プロパティを使用してタイムシリーズ変換から派生した3つのタイムシリーズ、Case Acceleration
、Weekly Cases
、Total Cases
を表示します。各タイムシリーズ列は、タイムシリーズの最新の観測値を左に、タイムシリーズの履歴を可視化するスパークラインを右に表示します。
オブジェクトテーブルでタイムシリーズプロパティ列を設定する方法を説明するために、Weekly Cases
列の設定を説明します。画面の右側のパネルは、Weekly Cases
列の設定の上部と下部で、設定と結果の参照として同じ画面に表示されます。
まず、タイムシリーズ変換を使用して、週刊のCOVID-19症例負荷のタイムシリーズを生成する必要があります。タイムシリーズ変換は、入力タイムシリーズデータに対して数学的操作を実行して、新しい出力タイムシリーズを生成します。詳細については、Workshopのタイムシリーズプロパティ を参照してください。
ここでは、集計変換を使用して、必要なタイムシリーズを作成できます。Add transform
ボタンをクリックすると、変換設定が開き、必要なタイムシリーズを生成するための設定ができます。
次に、タイムシリーズサマリザー(赤いボックス)を使用して、列に表示される数値を生成します。タイムシリーズサマリザーは、タイムシリーズデータのサマリー統計を構成するもので、タイムシリーズの状態を反映する値です。ここでは、表示したい値を生成するために、単一の値サマリザーを使用します。これは、最後の週平均症例数です。詳細については、Workshopのタイムシリーズプロパティ を参照してください。
次に、value formatting(青いボックス)を設定します。これは、Format Numberヘッダーの下にあり、conditional formatting(緑のボックス)を設定します。これは、Conditional Formattingヘッダーの下にあります。これらは、この値の表示方法をスタイル化します。値のフォーマットは、値の数字の表示方法を制御し、条件付きフォーマットは、値に基づいたルールシステムを使用して表示色を変更します。この場合、コンパクト表記を使用し、週平均COVID-19症例数が100を超える場合は赤で表示します。詳細については、Workshopのフォーマット を参照してください。
最後に、週平均症例のタイムシリーズの履歴を表示するスパークラインの可視化を設定できます。
time rangeセレクター(赤いボックス)を使用すると、タイムシリーズを表示する時間ウィンドウを指定できます。詳細については、Workshopのタイムシリーズプロパティ を参照してください。
また、conditional formatting(青いボックス)を追加して、Conditional Formattingヘッダーの下で、値に基づいたルールシステムを使用してスパークラインの色を変更できます。詳細については、Workshopのフォーマット を参照してください。
最後に、baseline(緑のボックス)を設定して、スパークラインの解釈を補助できます。詳細については、Workshopのタイムシリーズプロパティ を参照してください。
インライン編集の編集オプションは、オントロジーで設定されたアクションによって定義されます。アクションに関する詳細は、アクションチュートリアル を参照してください。さらなるインライン編集の検討事項については、アクションインライン編集ドキュメント を参照してください。
インライン編集を有効にすると、モジュールのユーザーがオブジェクトテーブル内に表示されるセルレベルのデータを変更し、これらの編集をオブジェクトデータに保存できます。編集オプションは、以下の基準を満たすオントロジーで設定されたアクションによって定義されます。
追加の注意事項:
オブジェクトテーブルウィジェットの設定時に、Enable inline editing の切り替えが Column configuration セクションの Displayed properties リストの下に表示されます。この切り替えを true に設定すると、Enable inline editing が有効になり、表示されるオブジェクトタイプを変更するために、オントロジー内で既に設定されたアクションを選択するように求められます。以下の例では、Flight Alert: Inline Editing アクションを使用してインライン編集が有効になっています。アクションピッカーの下には、表示されるドロップダウンを介してアクションパラメータがテーブル列にマッピングされています。
上記が設定されると、ユーザーはテーブルフッターに表示される Edit table ボタンをクリックすることで編集モードに入ることができます。編集モードに入ると、ユーザーはアクションパラメータにマッピングされた任意の変更可能な列を編集できます。関数でバックアップされていないアクションの場合は、一度に最大20行まで、関数でバックアップされているアクションの場合は一度に最大200行までの編集をステージングできます。ステージングされた編集は、 アンドゥボタン(以下のスクリーンショットのテーブルの一番左の列に表示されている)をクリックすることで元に戻すことができます。