Vue와의 통합
DHTMLX Pivot은 일반 컴포넌트로서 Vue와 통합됩니다. 완전한 작동 설정 예시는 GitHub의 Vue Pivot 데모를 참고하세요.
프로젝트 생성
시작하기 전에 Node.js를 설치하세요.
다음 명령어는 공식 Vue 프로젝트 스캐폴딩 도구를 실행합니다:
npm create vue@latest
이 명령어는 create-vue를 설치하고 실행합니다. 자세한 내용은 Vue.js 빠른 시작을 참고하세요.
프로젝트 이름을 my-vue-pivot-app으로 지정하세요.
의존성 설치
새 프로젝트 디렉터리로 이동합니다:
cd my-vue-pivot-app
패키지 매니저로 의존성을 설치하고 개발 서버를 시작합니다:
- yarn 사용 시:
yarn
yarn start # 또는: yarn dev
- npm 사용 시:
npm install
npm run dev
앱은 로컬 포트(예: http://localhost:3000)에서 실행됩니다.
Pivot 생성
프로젝트에 Pivot 패키지를 추가한 다음 Pivot을 Vue 컴포넌트로 래핑합니다.
1단계. 패키지 설치
Pivot 평가판 패키지를 다운로드하고 README의 단계를 따르세요. Pivot 평가판 패키지는 30일간 유효합니다.
2단계. 컴포넌트 생성
Pivot을 마운트하는 Vue 컴포넌트를 생성합니다. src/components/Pivot.vue 파일을 새로 추가하세요.
소스 파일 가져오기
src/components/Pivot.vue를 열고 Pivot 소스 파일을 가져옵니다. 가져오기 경로는 패키지 에디션에 따라 다릅니다:
- PRO 버전 (로컬 폴더에서 설치한 경우):
<script>
import { Pivot } from 'dhx-pivot-package';
import 'dhx-pivot-package/dist/pivot.css';
</script>
패키지가 압축된 에셋을 제공하는 경우 pivot.css 대신 pivot.min.css를 가져옵니다.
- 평 가판 버전:
<script>
import { Pivot } from '@dhx/trial-pivot';
import '@dhx/trial-pivot/dist/pivot.css';
</script>
이 튜토리얼에서는 Pivot 평가판을 사용합니다.
컨테이너 설정 및 Pivot 마운트
페이지에 Pivot을 표시하려면 컨테이너 div를 추가한 다음 생성자를 사용하여 mounted 훅에서 Pivot을 초기화합니다. unmounted 훅에서 Pivot을 제거합니다.
다음 코드 스니펫은 최소한의 Pivot Vue 컴포넌트를 정의합니다:
<script>
import { Pivot } from "@dhx/trial-pivot";
import "@dhx/trial-pivot/dist/pivot.css";
export default {
mounted() {
// Pivot 컴포넌트를 초기화합니다
this.table = new Pivot(this.$refs.container, {});
},
unmounted() {
this.table.destructor(); // 언마운트 시 Pivot을 제거합니다
}
};
</script>
<template>
<div ref="container" class="widget"></div>
</template>
스타일 추가
Pivot을 올바르게 렌더링하려면 프로젝트의 메인 CSS 파일에 다음 스타일을 추가합니다:
/* 초기 페이지 스타일 */
html,
body,
#app { /* #app 루트 컨테이너 사용 */
height: 100%;
padding: 0;
margin: 0;
}
/* Pivot 컨테이너 스타일 */
.widget {
width: 100%;
height: 100%;
}
데이터 로드
Pivot에 데이터를 공급하려면 데이터셋을 준비합니다. src/data.js를 생성하고 데이터와 필드 메타데이터를 내보냅니다:
export function getData() {
const dataset = [
{
"cogs": 51,
"date": "10/1/2018",
"inventory_margin": 503,
"margin": 71,
"market_size": "Major Market",
"market": "Central",
"marketing": 46,
"product_line": "Leaves",
"product_type": "Herbal Tea",
"product": "Lemon",
"profit": -5,
"sales": 122,
"state": "Colorado",
"expenses": 76,
"type": "Decaf"
},
{
"cogs": 52,
"date": "10/1/2018",
"inventory_margin": 405,
"margin": 71,
"market_size": "Major Market",
"market": "Central",
"marketing": 17,
"product_line": "Leaves",
"product_type": "Herbal Tea",
"product": "Mint",
"profit": 26,
"sales": 123,
"state": "Colorado",
"expenses": 45,
"type": "Decaf"
}, // 다른 데이터 항목
];
const fields = [
{
"id": "cogs",
"label": "Cogs",
"type": "number"
},
{
"id": "date",
"label": "Date",
"type": "date"
}, // 다른 필드
];
return { dataset, fields };
};
src/App.vue를 열고 데이터를 가져온 다음 data() 옵션을 통해 노출합니다. 그런 다음 값을 새 <Pivot/> 컴포넌트에 props로 전달합니다:
<script>
import Pivot from "./components/Pivot.vue";
import { getData } from "./data";
export default {
components: { Pivot },
data() {
const { fields, dataset } = getData();
return {
fields,
dataset
};
}
};
</script>
<template>
<Pivot :fields="fields" :dataset="dataset" />
</template>
src/components/Pivot.vue를 열고 들어오는 props를 선언한 다음 Pivot 구성 객체에 적용합니다:
<script>
import { Pivot } from "@dhx/trial-pivot";
import "@dhx/trial-pivot/dist/pivot.css";
export default {
props: ["fields", "dataset"],
mounted() {
this.table = new Pivot(this.$refs.container, {
fields: this.fields,
data: this.dataset,
config: {
rows: ["state", "product_type"],
columns: ["product_line", "type"],
values: [
{
field: "profit",
method: "sum"
}, // 다른 값
]
},
// 다른 구성 속성
});
},
unmounted() {
this.table.destructor();
}
};
</script>
<template>
<div ref="container" class="widget"></div>
</template>
이제 컴포넌트를 사용할 준비가 되었습니다. 마운트 시 Pivot은 제공된 데이터로 렌더링됩니다. 구성 속성의 전체 목록은 Pivot API 문서를 참고하세요.
이벤트 처리
Pivot에서 사용자 동작이 발생하면 구독할 수 있는 이벤트가 발생합니다. 이벤트의 전체 목록은 이벤트 개요를 참고하세요.
다음 코드 스니펫은 mounted를 open-filter 이벤트 리스너로 확장하여 사용자가 필터를 열 때 필드 ID를 로그에 기록합니다:
<script>
// ...
export default {
// ...
mounted() {
this.table = new Pivot(this.$refs.container, {
fields: this.fields,
data: this.dataset,
config: {
rows: ["state", "product_type"],
columns: ["product_line", "type"],
values: [
{
field: "profit",
method: "sum"
}, // 다른 값
]
},
// 다른 구성 속성
});
this.table.api.on("open-filter", (ev) => {
console.log("필터가 활성화된 필드 ID:", ev.id);
});
}
// ...
}
</script>
// ...
앱을 시작하면 페이지에서 Pivot이 데이터를 렌더링하는 것을 확인할 수 있습니다.

이제 Pivot이 Vue와 통합되었습니다. 프로젝트 요구 사항에 맞게 구성을 사용자 정의하세요. 최종 예제는 GitHub의 vue-pivot-demo를 참고하세요.