圓餅圖
Framework7 附帶簡單的圓餅圖元件。它會產生美觀且完全回應式的 SVG 圖表。
圓餅圖版面
由於圓餅圖 SVG 是由 JavaScript 產生的,因此其 HTML 版面盡可能簡單
<!-- Pie chart element -->
<div class="pie-chart"></div>
圓餅圖應用程式方法
現在我們需要建立/初始化圓餅圖。讓我們看看相關的應用程式方法來使用它
app.pieChart.create(參數)- 建立圓餅圖實例
- 參數 - 物件。包含圓餅圖參數的物件
方法傳回已建立的圓餅圖實例
app.pieChart.destroy(el)- 銷毀圓餅圖實例
- el - HTMLElement 或 字串(含 CSS 選擇器)或 物件。要銷毀的圓餅圖元素或圓餅圖實例。
app.pieChart.get(el)- 透過 HTML 元素取得圓餅圖實例
- el - HTMLElement 或 字串(含 CSS 選擇器)。圓餅圖元素。
方法傳回圓餅圖實例
app.pieChart.update(參數)- 根據傳遞的參數更新/重新渲染圓餅圖 SVG
- 參數 - 物件。包含圓餅圖參數的物件
方法傳回圓餅圖實例
圓餅圖參數
現在讓我們看看建立圓餅圖所需的可用參數清單
參數 | 類型 | 預設 | 描述 |
---|---|---|---|
el | HTMLElement 字串 | 圓餅圖元素。HTMLElement 或包含圓餅圖元素 CSS 選擇器的字串。產生的 SVG 將插入此元素 | |
資料集 | 陣列 | [] | 圖表資料集。資料集 陣列中的每個物件都有下列屬性
|
大小 | 數字 | 320 | 產生的 SVG 影像大小(以像素為單位) |
工具提示 | 布林值 | 假 | 在滑鼠移入時啟用工具提示 |
資料集 | 陣列 | [] | 圖表資料集。資料集 陣列中的每個物件都有下列屬性
|
formatTooltip | 函數(資料) | 自訂的渲染函數,必須傳回工具提示的 HTML 內容。收到的 資料 物件具有下列屬性
| |
on | 物件 | 具有事件處理常式的物件。例如
|
圓餅圖方法和屬性
因此,若要建立圓餅圖,我們必須呼叫
var pieChart = app.pieChart.create({ /* parameters */ })
之後,我們會取得其初始化的執行個體(如上例中的 pieChart
變數),並具有有用的方法和屬性
屬性 | |
---|---|
pieChart.app | 連結至全域應用程式執行個體 |
pieChart.el | 圓餅圖 HTML 元素 |
pieChart.$el | 具有圓餅圖 HTML 元素的 Dom7 執行個體 |
pieChart.svgEl | 圓餅圖產生的 SVG HTML 元素 |
pieChart.$svgEl | 具有產生的 SVG HTML 元素的 Dom7 執行個體 |
pieChart.params | 圓餅圖參數 |
方法 | |
pieChart.update(參數) | 根據傳遞的參數更新/重新渲染圓餅圖 SVG 元素。它接受一個物件,其中包含圓餅圖初始化所需的相同參數。您只能傳遞需要更新的參數,例如
|
pieChart.destroy() | 銷毀圓餅圖執行個體 |
pieChart.on(事件, 處理常式) | 新增事件處理常式 |
pieChart.once(事件, 處理常式) | 新增事件處理常式,在觸發後將會移除 |
pieChart.off(事件, 處理常式) | 移除事件處理常式 |
pieChart.off(事件) | 移除指定事件的所有處理常式 |
pieChart.emit(事件, ...引數) | 在執行個體上觸發事件 |
圓餅圖事件
圓餅圖會在圓餅圖元素上觸發下列 DOM 事件,以及在應用程式和圓餅圖執行個體上觸發事件
DOM 事件
事件 | 目標 | 描述 |
---|---|---|
piechart:select | 圓餅圖元素<div class="pie-chart"> | 當滑鼠移入圖表時,將觸發事件(當啟用工具提示時) |
piechart:beforedestroy | 圓餅圖元素<div class="pie-chart"> | 在圓餅圖執行個體即將被銷毀之前,將觸發事件 |
應用程式和圓餅圖執行個體事件
圓餅圖執行個體會在自身執行個體和應用程式執行個體上發出事件。應用程式執行個體事件具有相同的名稱,但字首為 pieChart
。
事件 | 引數 | 目標 | 描述 |
---|---|---|---|
選取 | (pieChart, 索引, 資料集) | pieChart | 當滑鼠移入圖表時,將觸發事件(當啟用工具提示時) |
pieChartSelect | (pieChart, 索引, 資料集) | 應用程式 | |
beforeDestroy | (圓餅圖) | pieChart | 事件會在圓餅圖執行個體被銷毀之前觸發。事件處理常式會將圓餅圖執行個體當作參數接收 |
pieChartBeforeDestroy | (圓餅圖) | 應用程式 |
範例
pie-chart.html
<template>
<div class="page">
<div class="navbar">
<div class="navbar-bg"></div>
<div class="navbar-inner">
<div class="title">Pie Chart</div>
</div>
</div>
<div class="page-content">
<div class="block block-strong-ios block-outline-ios">
<p>Framework7 comes with simple to use and fully responsive Pie Chart component.</p>
<p>Pie Chart generates SVG layout which makes it also compatible with SSR (server side rendering).</p>
</div>
<div class="block-title">Simple Pie Chart</div>
<div class="block block-strong-ios block-outline-ios">
<div class="pie-chart pie-chart-1"></div>
</div>
<div class="block-title">With Tooltip</div>
<div class="block block-strong-ios block-outline-ios">
<div class="pie-chart pie-chart-2"></div>
</div>
<div class="block-title">Custom Format Tooltip</div>
<div class="block block-strong-ios block-outline-ios">
<div class="pie-chart pie-chart-3"></div>
</div>
</div>
</div>
</template>
<script>
export default (props, { $f7, $onMounted, $onBeforeUnmount }) => {
let pieSimple;
let pieTooltip;
let pieCustomTooltip;
$onMounted(() => {
pieSimple = $f7.pieChart.create({
el: '.pie-chart-1',
datasets: [
{
value: 100,
color: '#f00',
},
{
value: 200,
color: '#0f0',
},
{
value: 300,
color: '#00f',
},
]
});
pieTooltip = $f7.pieChart.create({
el: '.pie-chart-2',
tooltip: true,
datasets: [
{
label: 'JavaScript',
value: 150,
color: '#ff0',
},
{
label: 'Vue.js',
value: 150,
color: '#0f0',
},
{
label: 'TypeScript',
value: 400,
color: '#00f',
},
]
})
pieCustomTooltip = $f7.pieChart.create({
el: '.pie-chart-3',
tooltip: true,
datasets: [
{
label: 'JavaScript',
value: 1000,
color: '#ff0',
},
{
label: 'Vue.js',
value: 100,
color: '#0f0',
},
{
label: 'TypeScript',
value: 200,
color: '#00f',
},
],
formatTooltip(data) {
const { value, label, color } = data;
return `You have <span style="color: ${color}">${value} points</span> for ${label}`;
}
})
})
$onBeforeUnmount(() => {
pieSimple.destroy();
pieTooltip.destroy();
pieCustomTooltip.destroy();
})
return $render;
}
</script>