가이드
피벗 북(Book)

피벗 북(Book)

여러 피벗 테이블(시트)을 담는 Book 설정과 공통 필터, 헤더, 푸터 구성 방법입니다.

Book은 RealPivot2의 최상위 구성 단위입니다.
한 화면에 여러 피벗 페이지(시트)와 공통 UI(헤더·필터·인스펙터·탐색기·푸터)를 PivotBookConfiguration 객체로 정의합니다.

DataSet과 Cube를 준비한 후 createControl에 Book 설정을 전달하면 컨트롤 인스턴스가 생성됩니다.

const control = createControl(document, 'pivot', cm, config);
const book = control.book;
  • configPivotBookConfiguration
  • control.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에 등록된 이름
positionheaderpanel
  • 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는 generalenableInspector, enableExplorer 등으로도 제어할 수 있습니다.

general

북 전역 동작입니다. 자주 쓰는 항목만 요약합니다.

속성설명
theme'light' | 'dark' | 'system'
readonlytrue로 설정 시 피벗 구성을 변경할 수 없습니다 (단, 스크롤·접기/펼치기 등의 조작은 가능)
undoableUndo/Redo 사용 여부
exportable내보내기 사용 여부
enableInspector / enableExplorer인스펙터·탐색기 기능 사용 여부
selectMode'none' | 'single' | 'multiple'

테마·스타일 상세는 테마·스타일을, 내보내기는 내보내기를 참고하세요.

See Also