피벗 북(Book)
여러 피벗 테이블(시트)을 담는 Book 설정과 공통 필터, 헤더, 푸터 구성 방법입니다.
Book은 RealPivot2의 최상위 구성 단위입니다.
한 화면에 여러 피벗 페이지(시트)와 공통 UI(헤더·필터·인스펙터·탐색기·푸터)를 PivotBookConfiguration 객체로 정의합니다.
DataSet과 Cube를 준비한 후 createControl에 Book 설정을 전달하면 컨트롤 인스턴스가 생성됩니다.
const control = createControl(document, 'pivot', cm, config);
const book = control.book;config—PivotBookConfigurationcontrol.book— 런타임 Book 모델- 다시 로드할 때는
control.loadBook(cm, config)또는book.load(cm, config)를 사용합니다. - 현재 상태는 book.save()를 호출하여 동일한 형태의 설정 객체로 직렬화할 수 있습니다.
설정 키 전체 트리는 Config를, 타입 목록은 API Options를 참고하세요.
최소 구성
단일 페이지와 필드 배치만으로 간단하게 Book을 생성할 수 있습니다.
const config = {
tables: {
name: 'sales',
cube: 'sales',
title: '판매 분석',
fields: {
rows: ['국가'],
columns: ['차종'],
values: ['판매수량'],
},
},
};
createControl(document, 'pivot', cm, config);tables는 객체 하나(단일 페이지) 또는 배열(여러 페이지)을 받을 수 있습니다.
tables (페이지)
각 항목은 개별 피벗 페이지를 의미합니다.
| 속성 | 설명 |
|---|---|
name | 페이지 식별 이름 (필수). 시트 이름이며 DataSet 테이블명과 다를 수 있습니다 |
cube | 사용할 큐브 name |
title | 탭·화면에 표시할 제목 |
fields | 행·열·값·필터 필드 배치 |
fields
| 속성 | 설명 |
|---|---|
rows | 행 축 차원 |
columns | 열 축 차원 |
values | 값(측정값) |
filters | 이 페이지의 필터 필드 |
값은 필드 이름 문자열 또는 { name: '차종' } 형태 객체로 지정할 수 있습니다.
fields: {
filters: ['국가'],
rows: [{ name: '차종' }, { name: '브랜드명' }],
columns: ['판매분기', '판매월'],
values: [{ name: '판매수량', aggregate: 'sum' }],
}필드 배치·드래그 UI는 필드 구성을 참고하세요.
여러 페이지
tables: [
{
name: 'byCountry',
title: '국가별',
cube: 'sales',
fields: { rows: ['국가'], values: ['판매수량'] },
},
{
name: 'byProduct',
title: '차종별',
cube: 'sales',
fields: { rows: ['차종'], values: ['판매수량'] },
},
]페이지 전환 UI는 푸터 탭바(footer)로 표시됩니다.
테이블 공통 기본값
여러 테이블이 같은 헤더·필드바·본문 옵션을 쓸 때는 각 tables[]에 반복하지 않고 tableDefaults에 둡니다. 테이블에서 같은 키를 다시 지정하면 그 페이지만 덮어씁니다.
| 위치 | 적용 범위 |
|---|---|
header · footer · inspector · general · filterSelectors | 북 전체. 탭을 바꿔도 같다 |
tableDefaults | 모든 테이블의 기본값 |
tables[] | 해당 테이블만. 지정한 키가 tableDefaults를 덮어쓴다 |
tableDefaults에 둘 수 있는 값은 다음뿐입니다.
| 키 | 역할 |
|---|---|
rowHeader | 행 헤더 레이아웃(grid · flat · tree) 등 |
columnHeader | 열 헤더 |
rowBar / columnBar | 행·열 필드바 |
body | 본문. 크로스헤어, 행 단위 스크롤 등 |
fields · 소계·총계처럼 테이블마다 다른 구성은 tables[]에 둡니다.
const config = {
header: true,
inspector: false,
tableDefaults: {
rowHeader: { layout: 'tree', indent: 20 },
rowBar: false,
columnBar: false,
body: { crosshair: true },
},
tables: [
{
name: '기본값',
cube: 'sales',
fields: { rows: ['국가', '차종'], values: ['판매수량'] },
},
{
name: '그리드',
cube: 'sales',
fields: { rows: ['국가', '차종'], values: ['판매수량'] },
rowHeader: { layout: 'grid' },
},
],
};화면에서 탭을 바꿔 가며 비교하는 예는 공통 옵션 데모에서 확인할 수 있습니다.
공통 필터 (filterSelectors)
북 전체에 공유하는 필터 UI는 filterSelectors 로 설정합니다.
셀렉터는 큐브에 정의한 slicers를 가리키며, 종류는 button · dropdown · tree · timeline · slider 등이 있습니다.
const config = {
filterSelectors: [
{ type: 'dropdown', cube: 'sales', slicer: '차종', position: 'both' },
{ type: 'timeline', cube: 'sales', slicer: '판매날짜' },
],
tables: {
name: 'sales',
cube: 'sales',
fields: {
rows: ['국가'],
values: ['판매수량'],
},
},
};| 속성 | 설명 |
|---|---|
type | 셀렉터 UI 종류 |
cube | 대상 큐브 name |
slicer | 큐브 slicers에 등록된 이름 |
position — header | panel |
fields.filters— 해당 페이지의 필터 필드filterSelectors— 북 공통 필터 UI
자세한 동작은 필터를 참고하세요. 큐브에 slicers를 먼저 정의해야 셀렉터가 동작합니다.
화면 영역
다음 키는 객체 형태로 세부 옵션을 설정하거나, true / false 값으로 표시 여부만 지정할 수 있습니다.
| 키 | 역할 |
|---|---|
header | 상단 메뉴바 |
footer | 하단 탭바(페이지 전환) |
filterBar | 상단 공통 필터 영역 |
inspector | 필드·필터 패널 |
explorer | 선택 셀 상세(Detail / Chart / Map) |
headline | 헤드라인 패널 |
tooltip | 툴팁 |
{
header: true,
footer: true,
inspector: true,
explorer: false,
tables: { /* ... */ },
}기능 자체 on/off는 general의 enableInspector, enableExplorer 등으로도 제어할 수 있습니다.
general
북 전역 동작입니다. 자주 쓰는 항목만 요약합니다.
| 속성 | 설명 |
|---|---|
theme | 'light' | 'dark' | 'system' 등 |
readonly | true로 설정 시 피벗 구성을 변경할 수 없습니다 (단, 스크롤·접기/펼치기 등의 조작은 가능) |
undoable | Undo/Redo 사용 여부 |
exportable | 내보내기 사용 여부 |
enableInspector / enableExplorer | 인스펙터·탐색기 기능 사용 여부 |
selectMode | 'none' | 'single' | 'multiple' |
테마·스타일 상세는 테마·스타일을, 내보내기는 내보내기를 참고하세요.