React Tree Grid 集計
React Tree Grid の Ignite UI for React 集計機能は、グループ フッターとして列ごとのレベルで機能します。React IgrTreeGrid 集計は、列内のデータ タイプに応じて、あるいは IgrTreeGrid
にカスタム テンプレートを実装することによって、定義済みのデフォルト集計項目を使用して別のコンテナの列情報を表示できます。
React Tree Grid 集計概要の例
[!Note] 列の集計は列値すべての関数ですが、フィルタリングが適用された場合、列の集計はフィルターされた結果値の関数になります。
IgrTreeGrid
集計を列ごとに有効にして必要な列のみアクティブ化できます。IgrTreeGrid
集計は、列のデータ型に基づいてデフォルト集計の定義済みセットを提供します。
string
および boolean
dataType
の場合、以下の関数が利用できます:
- Count
number
、currency
、および percent
データ型の場合、以下の関数を使用できます。
- Count
- Min
- Max
- Average
- Sum
date
データ型の場合、以下の関数が利用できます:
- Count
- Earliest
- Latest
すべての利用可能な列データ型は、公式の列タイプトピックにあります。
hasSummary
プロパティを true に設定すると IgrTreeGrid
集計が列レベルで有効になります。各列の集計は列のデータ型に基づいて解決されます。IgrTreeGrid
のデフォルトの列データ型は string
のため、number
または date
固有の集計を適用するには、dataType
プロパティを number
または date
に設定します。集計値は、グリッドの locale
および列 pipeArgs
に従ってローカライズされて表示されます。
<IgrTreeGrid autoGenerate="false" height="800px" width="800px">
<IgrColumn field="ID" header="Order ID">
</IgrColumn>
<IgrColumn field="Name" header="Order Product" hasSummary="true">
</IgrColumn>
<IgrColumn field="Units" header="Units" editable="true" dataType="number" hasSummary="true">
</IgrColumn>
</IgrTreeGrid>
特定の列や列のリストを有効または無効にする他の方法として IgrTreeGrid
のパブリック メソッド enableSummaries
/disableSummaries
を使用する方法があります。
function enableSummary() {
treeGridRef.current.enableSummaries([
{fieldName: 'Name'},
{fieldName: 'Units'}
]);
}
function disableSummary() {
treeGridRef.current.disableSummaries(['Units']);
}
<IgrTreeGrid autoGenerate="false" data={this.ordersTreeData} ref={this.treeGridRef} id="treeGrid" primaryKey="ID">
<IgrColumn field="ID" header="Order ID"></IgrColumn>
<IgrColumn field="Name" header="Order Product" hasSummary="true"></IgrColumn>
<IgrColumn field="Units" header="Units" editable="true" dataType="Number" hasSummary="true"></IgrColumn>
</IgrTreeGrid>
<button onClick={enableSummary}>Enable Summary</button>
<button onClick={disableSummary}>Disable Summary </button>
集計テンプレート
Summary
は、列の集計の結果をコンテキストとして提供する列の集計を対象としています。
function summaryTemplate(ctx: IgrSummaryTemplateContext) {
return (
<>
<span>My custom summary template</span>
<span>{ctx.dataContext.implicit[0].label} - {ctx.dataContext.implicit[0].summaryResult}</span>
</>
);
}
<IgrColumn hasSummary="true" summaryTemplate={summaryTemplate}></IgrColumn>
デフォルトの集計が定義されている場合、集計領域の高さは、集計の数が最も多い列とグリッドの --ig-size
に応じてデザインにより計算されます。summaryRowHeight
入力プロパティを使用して、デフォルト値をオーバーライドします。引数として数値が必要であり、falsy の値を設定すると、グリッド フッターのデフォルトのサイズ設定動作がトリガーされます。
集計のフォーマット
デフォルトでは、組み込みの集計オペランドによって生成される集計結果は、グリッド locale
および列 pipeArgs
に従ってローカライズおよびフォーマットされます。カスタム オペランドを使用する場合、locale
と pipeArgs
は適用されません。集計結果のデフォルトの外観を変更する場合は、summaryFormatter
プロパティを使用してフォーマットできます。
public summaryFormatter(
summary: IgrSummaryResult,
summaryOperand: IgrSummaryOperand
): string {
const result = summary.summaryResult;
if (summary.key !== "count" && result !== null && result !== undefined) {
const format = new Intl.DateTimeFormat("en", { year: "numeric" });
return format.format(new Date(result));
}
return result;
}
<IgrColumn hasSummary="true" summaryFormatter={this.summaryFormatter}></IgrColumn>
子集計
IgrTreeGrid
はルート ノードの集計と各ネストされた子ノード レベルの区別をサポートします。集計は summaryCalculationMode
プロパティを使用して設定できます。子レベル集計は、summaryPosition
を使用して子ノードの前または後に表示できます。これら 2 つのプロパティに加えて、IgrTreeGrid
は、参照するグループ行が縮小されたときに集計行が表示されたままであるかどうかを決定できる showSummaryOnCollapse
プロパティを公開します。
以下は使用できる summaryCalculationMode
プロパティの値です:
RootLevelOnly
- ルート レベルのノードのみ集計が計算されます。ChildLevelsOnly
- 子レベルのみ集計が計算されます。RootAndChildLevels
- ルートと子レベルの両方の集計が計算されます。これがデフォルト値です。
以下は使用できる summaryPosition
プロパティの値です。
Top
- 集計行は子行のリストの前に表示されます。Bottom
- 集計行は子行のリストの後に表示されます。これがデフォルト値です。
showSummaryOnCollapse
プロパティはブール値です。デフォルト値は false に設定されています。これは、親行が縮小されたときに集計行が非表示になることを意味します。プロパティが true に設定されている場合、親行が縮小されたときに、集計行は表示されたままになります。
[!Note]
summaryPosition
プロパティは子レベルの集計のみに適用します。ルート レベルの集計は、IgrTreeGrid
の下に常に固定されます。
キーボード ナビゲーション
集計行は、以下のキーボード操作でナビゲーションできます。
- 上矢印 - 1 つ上のセルへ移動。
- 下矢印 - 1 つ下のセルへ移動。
- 左矢印 - 1 つ左のセルへ移動。
- 右矢印 - 1 つ右のセルへ移動。
- CTRL + 左矢印 または HOME - 左端のセルへ移動。
- CTRL + 右矢印 または END - 右端のセルへ移動。
スタイル設定
定義済みのテーマに加えて、利用可能な CSS プロパティのいくつかを設定することで、グリッドをさらにカスタマイズできます。 一部の色を変更したい場合は、最初にグリッドのクラスを設定する必要があります。
<IgrTreeGrid className="grid">
</IgrTreeGrid>
次に、そのクラスに関連する CSS プロパティを設定します。
.grid {
--ig-grid-summary-background-color:#e0f3ff;
--ig-grid-summary-focus-background-color: rgba( #94d1f7, .3 );
--ig-grid-summary-label-color: rgb(228, 27, 117);
--ig-grid-summary-result-color: black;
}
デモ
API リファレンス
その他のリソース
コミュニティに参加して新しいアイデアをご提案ください。