ในบทความนี้ เราจะมาเรียนรู้การสร้าง pie chart อย่างง่ายด้วย Chart.js และ TypeScript กันนะครับ
เปิด command line tool แล้ว CD ไปที่ folder ที่เราจะให้เป็น root ของ project สร้าง node project อย่างง่าย และใช้ค่า configuration default ด้วยคำสั่ง
npm init -y
จากนั้นให้เราติดตั้ง node package เหล่านี้ลงไปด้วยคำสั่ง npm install
npm install --save-dev @types/chart.js
npm install --save-dev @types/node
npm install --save-dev browserify
npm install --save-dev gulp
npm install --save-dev gulp-clean
npm install --save-dev natives
npm install --save-dev run-sequence
npm install --save-dev tsify
npm install --save-dev typescript
npm install --save-dev vinyl-source-stream
npm install --save-dev chart.js
npm install --save-dev chartjs-plugin-labels
สามารถแก้ไข project name, author ได้ตามที่เราต้องการ ตัวอย่าง package.json ที่ได้
package.config
{
"name": "codesanook-examples-chart.js",
"version": "1.0.0",
"description": "code examples for codesanook.com blog",
"main": "index.js",
"scripts": {},
"author": "Aaron",
"license": "ISC",
"devDependencies": {
"@types/chart.js": "^2.7.18",
"@types/node": "^10.10.0",
"browserify": "^14.5.0",
"gulp": "^3.9.1",
"gulp-clean": "^0.4.0",
"natives": "^1.1.5",
"run-sequence": "^2.2.1",
"tsify": "^3.0.4",
"typescript": "^3.1.1",
"vinyl-source-stream": "^2.0.0",
"chart.js": "^2.7.2",
"chartjs-plugin-labels": "^1.1.0"
},
"dependencies": {
}
}
สร้าง index.html file ที่เราจะแสดง chart โดยกำหนด code ดังนี้
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Learn Chart.js</title>
</head>
<body>
<canvas id="myChart" style="max-width:500px;max-height:500px"></canvas>
<script src="dist/bundle.js"></script>
</body>
</html>
Chat จะถูกแสดงไปที่ canvas ที่ id มีค่า myChart
สร้าง folder src
สร้าง file index.ts ที่จะเป็น main file ของ project
เริ่มจาก import class และ library ที่เราต้องใช้ที่บนสุดของ file
index.ts
import { ChartConfiguration, Chart, ChartData, ChartOptions } from "chart.js";
//import chart plugin as part of bundle.js
require('chartjs-plugin-labels')
สร้างตัวแปร data สำหรับเก็บข้อมูลจำนวนผู้ชายและผู้หญิงในระบบ ใน @types/chartjs ได้ defined interface ChartData ให้เราใช้งานได้เลย
เพิ่ม code เข้าไปใน index.ts
index.ts
let data: ChartData = {
labels: [ //set label of each data set
'female',
'male',
],
datasets: [{
data: [//raw data of each set
55, //female amount
45 //male amount
],
backgroundColor: [ //set color of each data in pie chart UI, support opacity value
'rgba(255, 99, 132, 1)', //color for female
'rgba(54, 162, 235, 1)' //color for male
]
}]
};
ต่อไปเราจะสร้างตัวแปร chartOptions ไว้เก็บค่า options เพิ่มเติมให้กับ chart โดยเราจะปรับแต่งให้
index.ts
var chartOptions: ChartOptions = {
legend: {
display: true //show legend at the top of a chart
},
tooltips: {
enabled: false //not show tooltips when hover a chart
},
plugins: { //setup chartjs-plugin-labels plug in
labels: [
{
render: 'label',
position: 'outside'
},
{
render: 'value'
}
],
}
};
จากนั้นสร้าง configuration object ของ chart โดยกำหนดเป็น pie เพื่อแสดง pie chart กำหนดค่า data และ option ที่เราได้สร้างไว้
index.ts
var configuration: ChartConfiguration = {
type: 'pie',
data: data,
options: chartOptions
};
สร้างตัวแปร element และอ้างอิงถึง canvas ใน index.html สร้าง Chart object โดยส่งตัวแปร element และ configuration เข้าไป คำสั่งนี้จะแสดง Pie chart ในหน้า index.html
index.ts
let element = document.getElementById('myChart') as HTMLCanvasElement;
new Chart(element, configuration);
สร้าง gulpfile.js เพื่อเป็น build file ในการ รวม library ทุกอย่างรวมทั้ง transpile TypeScrpt เป็น file bundle.js โดยกำหนดให้ guilefile.js มี code ดังนี้
ทดสอบการแสดงผล เปิด command line tool นะครับ ถ้า Windows ก็ cmd , mac ก็ Terminal แล้ว CD ไป root ของ project ที่มี gulpfile.js อยู่ run คำสั่งต่อไปนี้
gulp compile
แล้วเปิด index.html ตัว web browser ก็จะแสดง Pie chart ขึ้นมา
ลองนำ Chart.js ไปประยุกต์ใช้กันดูนะครับ
ขอบคุณครับ