본문으로 건너뛰기

AUIPivot

이 컨트롤은 무엇인가요?

AUIPivot.jsAUIGrid와 같은 벤더가 제공하는 피벗 테이블 전용 컨트롤입니다. syn.uicontrols.$auipivot 싱글턴 객체로 노출되며, 행/열/값/필터 필드를 드래그로 배치해서 다차원 집계 리포트를 만드는 데 특화되어 있습니다. 예전에는 WebGrid 폴더에 함께 있었지만 지금은 AUIPivot 폴더로 분리되었습니다.

AUIGrid와 같은 계열이지만, CRUD 그리드가 아니라 "행/열/값/필터 필드를 드래그로 배치하는 피벗 리포트" 전용 컨트롤이라는 점이 다릅니다. /lib/auigrid/dist/AUIGrid.js 벤더 스크립트가 필요합니다.

언제 사용하나요?

  • 여러 값의 합계/평균 등을 행·열로 교차 집계해야 할 때(예: 지역별×분기별 매출 합계)
  • 사용자가 행/열/값 필드를 직접 드래그해서 리포트 구성을 바꿔야 할 때
  • 단순 목록/편집 그리드가 필요하다면 AUIGrid를 사용하세요. AUIPivot은 피벗 리포트 전용입니다.

빠른 시작

syn.loader.js에는 auipivot(→ syn_auipivot) 자동주입 케이스가 없으므로, AUIGrid와 같은 AUIGrid 벤더 스크립트를 pageLoadFiles 훅으로 직접 로드해야 합니다.

<syn_auipivot id="pvtSales" syn-options="{ height: 400 }"></syn_auipivot>
<script>
function pageLoadFiles(styleFiles, jsFiles, templateFiles) {
window.afterLoadFiles = [];
afterLoadFiles.push('/lib/auigrid/dist/AUIGridLicense.js');
afterLoadFiles.push('/lib/auigrid/dist/AUIGrid.js');
afterLoadFiles.push('/uicontrols/AUIPivot/AUIPivot.css');
afterLoadFiles.push('/uicontrols/AUIPivot/AUIPivot.js');
}
</script>
<script src="/js/syn.loader.js"></script>
'use strict';
let $samplePage = {
hook: {
pageLoad() {
syn.uicontrols.$auipivot.setValue('pvtSales', [
{ Region: '서울', Model: 'A', Total: 1000 },
{ Region: '부산', Model: 'B', Total: 800 }
]);
}
}
}

예제 실행하기

example/ 폴더의 HTML 파일을 handstack의 wwwroot 정적 서버(rdy 프로젝트) 경로 아래에 두고 브라우저로 열면 바로 동작을 확인할 수 있습니다.

  • auipivotbasic.html / .js : $auipivot 기본 피벗 리포트 구성(행/열/값 필드 배치)

각 예제는 화면 하단 로그 영역(syn.$l.eventLog 출력)에서 이벤트 발생 순서와 전달값을 확인할 수 있습니다.

더 알아보기

  • API 상세는 같은 폴더의 API.md를 참고하세요.
  • 실제 소스: wwwroot/uicontrols/AUIPivot/AUIPivot.js, AUIPivot.css
  • 로더 자동주입 정의 없음 — pageLoadFiles 훅으로 수동 주입 필요(위 "빠른 시작" 참고)
  • AUIPivot 벤더 공식 문서: https://www.auisoft.net/documentation/auipivot/

실전 예제 페이지

/uicontrols/AUIPivot/example/ 경로의 예제를 아래 iframe에서 바로 확인할 수 있습니다.

auipivotbasic.html

소스와 로드 파일

항목내용
컨트롤AUIPivot
전역 별칭syn.uicontrols.$auipivot
소스uicontrols/AUIPivot/AUIPivot.js
스타일uicontrols/AUIPivot/AUIPivot.css

API 참조

싱글턴 객체: syn.uicontrols.$auipivot 소스 파일: wwwroot/uicontrols/AUIPivot/AUIPivot.js, wwwroot/uicontrols/AUIPivot/AUIPivot.css 내부 라이브러리: AUIPivot(AUIGrid와 같은 벤더의 피벗 전용 제품, /lib/auigrid/dist/AUIGrid.js 필요)

마크업

<syn_auipivot id="pvtSales" syn-options="{
height: 400,
layout: {
rowFields: ['Region', 'Model'],
columnFields: ['DateQuarter'],
valueFields: [{ dataField: 'Total', operation: 'SUM', formatString: '#,##0' }],
fieldAlias: { Region: '판매 지역', Model: '상품명', Total: '매출액', DateQuarter: '분기' }
}
}" syn-events="['cellClick', 'sorting']"></syn_auipivot>
  • controlLoadlayout(rowFields/columnFields/valueFields/filterFields/fieldAlias/dateTypeField)을 읽어 AUIPivot.setRowFields/setColumnFields/setValueFields/setFilterFields/setFieldAlias/setDateTypeField를 순서대로 호출해 초기 배치를 구성합니다.
  • layout을 지정하지 않으면 소스에 내장된 예시 레이아웃(Region/Name/Model × DateQuarter/DateMonth × Total/Count 합계)이 기본값으로 사용됩니다.

Options (pivotOptions)

속성기본값설명
layoutType'tree'행 레이블 표시 방식
showFooterfalse하단 합계 영역
showGrandTotalColumntrue총합계 열 표시
showRowNumColumntrue행 번호 컬럼
showSummaryColumn / showSummaryRowtrue요약 열/행
enableSorting / enableMultipleSortingtrue정렬/다중 정렬 허용
enableClipboardtrue클립보드 복사
useContextMenu / useContextHeaderMenufalse컨텍스트 메뉴
useHeatmapfalse히트맵 색상 표시(defaultHeatmapColors: ['#FFFFFF', '#4374D9'])
movableFieldPanel / resizableFieldPaneltrue필드 패널(행/열/값/필터 배치 UI) 이동/리사이즈 허용
defaultFormatString'###0.#####'값 필드 기본 표시 형식
headerHeight / rowHeight / footerHeight24 / 24 / 30크기
width / heightNaN(자동)전체 크기

메서드

syn.uicontrols.$auipivot.<메서드명>(elID, ...) 형태로 호출합니다.

메서드설명
getValue(elID, requestType, metaColumns) / setValue(elID, value)공통 인터페이스(원본 소스 데이터 조회/설정)
clear(elID, isControlLoad)피벗 초기화
setRowFields(elID, fields) / setColumnFields(elID, fields) / setValueFields(elID, fields) / setFilterFields(elID, fields)행/열/값/필터 필드 배치
getRowFields(elID) / getColumnFields(elID) / getValueFields(elID) / getFilterFields(elID)현재 필드 배치 조회
setFieldAlias(elID, aliasObj) / getFieldAlias(elID)필드 표시명(별칭)
setDateTypeField(elID, dateField)날짜 자동 분해(년/분기/월 등) 대상 필드 지정
setDisplayOrderRules(elID, rules) / getDisplayOrderRules(elID)필드값 표시 순서 규칙
setSorting(elID, sortingInfo, onlyLastDepthSorting) / clearSortingAll(elID)정렬
setFilterCache(elID, cache) / getFilterCache(elID) / clearFilterAll(elID)필터 상태
setGridData(elID, data) / getSourceData(elID) / getPivotData(elID)원본/피벗 데이터 조회·설정
getCellDetailList(elID, rowIndex, columnIndex) / getDimensionValues(elID, rowIndex, columnIndex)특정 셀을 구성하는 원본 행 상세 조회
getFooterData(elID)합계행 데이터 조회
expandAll(elID) / collapseAll(elID) / expandAllColumns(elID) / collapseAllColumns(elID) / showItemsOnDepth(elID, depth)트리 펼치기/접기
exportFile(elID, options)내보내기
resize(elID, width, height)크기 재조정
showPivotPanel(elID) / hidePivotPanel(elID) / createPivotPanel(elID, panelPID) / destroyPivotPanel(elID)필드 배치 패널 표시/숨김/생성/제거
setHeatmapColors(elID, dateField, operation, colors) / changeHeatmapColors(elID, dateField, operation, colors)히트맵 색상 지정
bind(elID, type, func) / unbind(elID, type)이벤트 수동 바인딩/해제(원본 AUIPivot.bind/unbind 래퍼)
updatePivot(elID)피벗 재계산/재렌더링

이벤트 (syn-events)

syn-events 배열에 아래 이름을 넣으면 AUIPivot.bind(gridID, 이벤트명, ...)로 자동 연결됩니다. 핸들러 이름은 {elID}_{이벤트명} 규칙입니다.

이벤트명핸들러 시그니처
cellClick(elID, rowIndex, columnIndex, dataField, value, item, type, headerText)
cellDoubleClick(elID, rowIndex, columnIndex, dataField, value, item, type, headerText)
columnStateChange(elID, property, dataField, headerText, depth, isBranch, oldValue, currentValue, type)
contextMenu(elID, target, dataField, headerText, columnIndex, rowIndex, depth, item, pageX, pageY, type) → 반환값으로 메뉴 항목 제어 가능
footerClick / footerDoubleClick(elID, footerIndex, footerText, footerValue, pageX, pageY, type)
headerClickAUIPivot 원본 이벤트 객체 기반
hScrollChange / vScrollChange스크롤 변경 시
pivotBegin / pivotComplete피벗 재계산 시작/완료 시
pivotPanelHide / pivotPanelShow필드 배치 패널 숨김/표시 시
sorting정렬 변경 시
treeOpenChange트리 노드 펼침/접힘 상태 변경 시

핸들러 등록 예:

let $samplePage = {
event: {
pvtSales_cellClick(elID, rowIndex, columnIndex, dataField, value) {
syn.$l.eventLog('pvtSales_cellClick', '{0}:{1}'.format(dataField, value));
}
}
}

참고