TypeScript 4.x + React 17 + ag-Grid 환경에서 2단 헤더 구조로 구성한 예제
TypeScript 4.x + React 17 + ag-Grid 환경에서 Scenario, Process (Target, No Start, Success, Failed, Error), Comparison (Target, Success, Failed) 항목을 2단 헤더 구조로 구성한 예제를 아래에 제공합니다.
아래 예제는 다음을 포함합니다:
ag-Grid 2단(header group) 구조 설정
React 17, TypeScript 환경
Scenario, Process, Comparison 3개의 그룹 컬럼
// App.tsx
import React from "react";
import { AgGridReact } from "ag-grid-react";
import "ag-grid-community/styles/ag-grid.css";
import "ag-grid-community/styles/ag-theme-alpine.css";
import { ColDef, ColGroupDef } from "ag-grid-community";
const App: React.FC = () => {
const columnDefs: (ColDef | ColGroupDef)[] = [
{
headerName: "Scenario",
children: [
{ headerName: "Scenario", field: "scenario", width: 150 }
],
},
{
headerName: "Process",
children: [
{ headerName: "Target", field: "processTarget", width: 120 },
{ headerName: "No Start", field: "processNoStart", width: 120 },
{ headerName: "Success", field: "processSuccess", width: 120 },
{ headerName: "Failed", field: "processFailed", width: 120 },
{ headerName: "Error", field: "processError", width: 120 },
],
},
{
headerName: "Comparison",
children: [
{ headerName: "Target", field: "comparisonTarget", width: 120 },
{ headerName: "Success", field: "comparisonSuccess", width: 120 },
{ headerName: "Failed", field: "comparisonFailed", width: 120 },
],
},
];
const rowData = [
{
scenario: "Scenario A",
processTarget: 100,
processNoStart: 10,
processSuccess: 80,
processFailed: 5,
processError: 5,
comparisonTarget: 100,
comparisonSuccess: 75,
comparisonFailed: 25,
},
{
scenario: "Scenario B",
processTarget: 200,
processNoStart: 20,
processSuccess: 160,
processFailed: 10,
processError: 10,
comparisonTarget: 200,
comparisonSuccess: 150,
comparisonFailed: 50,
},
];
return (
<div className="ag-theme-alpine" style={{ height: 400, width: "100%" }}>
<AgGridReact
columnDefs={columnDefs}
rowData={rowData}
domLayout="autoHeight"
/>
</div>
);
};
export default App;