円グラフ
Framework7には、シンプルな円グラフコンポーネントが付属しています。完全にレスポンシブなSVGチャートを生成します。
パイチャートのレイアウト
パイチャートのSVGはJavaScriptで生成されるため、HTMLのレイアウトは可能な限りシンプルになっています。
<!-- 円グラフ要素 -->
<div class="pie-chart"></div>パイチャートアプリのメソッド
次に、パイチャートを作成/初期化する必要があります。関連するアプリのメソッドを見てみましょう。
app.pieChart.create(parameters)- 円グラフのインスタンス作成
- parameters - object. パイチャートのパラメータを持つオブジェクト
メソッドは作成されたPie Chartのインスタンスを返します
app.pieChart.destroy(el)- パイチャートのインスタンスの破棄
- el - HTMLElementまたはstring(CSSセレクタを使用)またはobject。壊すべきパイチャート要素またはパイチャートインスタンスです。
app.pieChart.get(el)- HTML要素でパイチャートのインスタンスを取得
- el - HTMLElement または string (CSS Selectorを使用)。パイチャートの要素です。
メソッドは、パイチャートのインスタンスを返します。
app.pieChart.update(parameters)- 渡されたパラメータに従って、パイチャートのSVGを更新/レンダリングします。
- parameters - object. パイチャートのパラメータを持つオブジェクト
メソッドは、パイチャートのインスタンスを返します。
パイチャートのパラメータ
パイチャートを作成するために必要なパラメータの一覧を見てみましょう。
| Parameter | Type | Default | Description |
|---|---|---|---|
| el | HTMLElement string | パイチャートの要素。HTML要素、またはパイチャート要素のCSSセレクタを持つ文字列。生成されたSVGはこの要素に挿入されます。 | |
| datasets | array | [] | チャートのデータセット。配列 datasets の各オブジェクトは、以下のプロパティを持ちます。 |
| size | number | 320 | 生成されるSVG画像のサイズ (px単位) |
| tooltip | boolean | false | ホバー時にツールチップを有効にする |
| datasets | array | [] | チャートのデータセットです。datasets` 配列内の各オブジェクトには、以下のプロパティがあります。 |
| formatTooltip | function(data) | tooltip の HTML コンテンツを返す必要がある、カスタムのレンダリング関数です。受信した data オブジェクトには、次のようなプロパティがあります。 | |
| on | object | イベントハンドラーを持つオブジェクト。例えば、以下のようになります。 |
パイチャートのメソッドとプロパティ
パイチャートを作成するためには、まずメソッドを呼び出す必要があります。
var pieChart = app.pieChart.create({ /* parameters */ })その後、初期化されたインスタンス(上記の例では pieChart という変数)に、便利なメソッドとプロパティが追加されます。
| Properties | |
|---|---|
| pieChart.app | グローバルアプリのインスタンスへのリンク |
| pieChart.el | パイチャートのHTML要素 |
| pieChart.$el | パイチャートのHTML要素を持つDom7のインスタンス |
| pieChart.svgEl | パイチャートの生成されたSVG HTML要素 |
| pieChart.$svgEl | 生成されたSVG HTML要素を持つDom7のインスタンス |
| pieChart.params | 円グラフのパラメータ |
| Methods | |
| pieChart.update(parameters) | 渡されたパラメータに従って、パイチャート SVG 要素を更新/レンダリングします。パイチャートの初期化に必要なパラメータと同じパラメータを持つオブジェクトを受け取ります。更新する必要のあるパラメータのみを渡すことができます。 |
| pieChart.destroy() | パイチャートのインスタンスを破棄します。 |
| pieChart.on(event, handler) | イベントハンドラの追加 |
| pieChart.once(event, handler) | 発生後に削除されるイベントハンドラを追加します。 |
| pieChart.off(event, handler) | イベントハンドラの削除 |
| pieChart.off(event) | 指定されたイベントのハンドラをすべて削除する |
| pieChart.emit(event, ...args) | インスタンスでイベントを発生させる |
パイチャートのイベント
パイチャートでは、以下のDOMイベントがパイチャート要素で、イベントがアプリとパイチャートのインスタンスで発生します。
DOMイベント
| Event | Target | Description |
|---|---|---|
| piechart:select | Pie Chart Element<div class="pie-chart"> | イベントは、チャートのホバー時に発生します(tooltipが有効な場合)。 |
| piechart:beforedestroy | Pie Chart Element<div class="pie-chart"> | イベントは、パイチャートのインスタンスが破棄される直前に発生します。 |
アプリとパイチャートのインスタンスのイベント
パイチャートのインスタンスは、selfのインスタンスとappのインスタンスの両方でイベントを発行します。アプリのインスタンスのイベントは、同じ名前でプレフィックスが pieChart となっています。
| Event | Arguments | Target | Description |
|---|---|---|---|
| select | (pieChart, index, dataset) | pieChart | イベントは、チャートのホバーでトリガされます(tooltipが有効な場合)。 |
| pieChartSelect | (pieChart, index, dataset) | app | |
| beforeDestroy | (pieChart) | pieChart | イベントは、パイチャートのインスタンスが破棄される直前に発生します。イベントハンドラは、パイチャートのインスタンスを引数として受け取ります。 |
| pieChartBeforeDestroy | (pieChart) | app |
Examples
<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-title">Simple Pie Chart</div>
<div class="block block-strong">
<div class="pie-chart pie-chart-1"></div>
</div>
<div class="block-title">With Tooltip</div>
<div class="block block-strong">
<div class="pie-chart pie-chart-2"></div>
</div>
<div class="block-title">Custom Format Tooltip</div>
<div class="block block-strong">
<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>