長條圖 - Pie Chart
1
| <div id="pie-chart" class="chart"></div>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
| import toPixel from '@superlanding/topixel'
import Theme from '../../assets/js/models/Theme'
export default function bindPieCharts() {
const { PieChart } = window.beyond
const dom = document.getElementById('pie-chart')
if (! dom) {
return () => {}
}
const onMouseOver = (mousePos, res) => {
if (res) {
chartMenu.innerHTML = `
<div>${res.label}: ${res.value}</div>
`
chartMenu.style.left = toPixel(mousePos.x)
chartMenu.style.top = toPixel(mousePos.y + 20)
chartMenu.style.display = 'block'
}
else {
chartMenu.style.display = 'none'
}
}
const chartMenu = document.getElementById('chart-menu')
const theme = Theme.get()
const b = new PieChart(dom, {
theme,
onPieMouseOver: onMouseOver,
onLabelMouseOver: onMouseOver
})
b.setData([
{ label: '1 個月內', value: 20 },
{ label: '3 個月內', value: 50 },
{ label: '6 個月內', value: 30 }
])
const handleThemeChange = () => {
const theme = Theme.get()
b.setTheme({ theme })
b.refresh()
}
document.addEventListener('beyond-theme-change', handleThemeChange)
return function unbindPieCharts() {
document.removeEventListener('beyond-theme-change', handleThemeChange)
b.destroy()
}
}
|
Pie Chart
constructor
名稱 |
型別 |
說明 |
預設值 |
dom |
HTMLElement |
需要設定成 PieChart 的元素 |
|
options |
object |
選項 |
{} |
options.labelVisible |
boolean |
要不要顯示標籤 |
true |
options.height |
integer |
圖表的高 |
dom.offsetHeight |
options.width |
integer |
圖表的寬 |
dom.offsetWidth |
options.padding |
integer |
圖表到邊界的距離 |
20 |
options.bg |
string |
圖表的背景顏色 |
'#fff' |
options.styles |
array |
圓餅圖的色彩樣式 |
['#5469d4', '#7c54d4', '#a254d4'] |
options.onPieMouseOver |
function |
當滑鼠接近圓餅圖時的事件 ( 通常用來顯示 tooltip ),回傳 mousePos ( 在視窗上的座標 ) 與 res ( pie 的資料,res 有可能是 undefined,這時隱藏 tooltip 即可 ) |
|
options.onLabelMouseOver |
function |
當滑鼠接近文字標籤的事件 ( 通常用來顯示 tooltip ),回傳 mousePos ( 在視窗上的座標 ) 與 res ( pie 的資料,res 有可能是 undefined,這時隱藏 tooltip 即可 ) |
|
setData
名稱 |
型別 |
說明 |
data |
array |
要設定的圓餅圖資料陣列 |
refresh
重畫圖表 (如果 canvas 外框寬高有變的話,可以用此方法重畫)
destroy
移除 PieChart 產生的 dom 元素與 event listeners