| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- import Chart from 'chart.js'
- export function generateChart (chartId, chartType) {
- return {
- render: function (createElement) {
- return createElement(
- 'div', {
- style: this.styles,
- class: this.cssClasses
- },
- [
- createElement(
- 'canvas', {
- attrs: {
- id: this.chartId,
- width: this.width,
- height: this.height
- },
- ref: 'canvas'
- }
- )
- ]
- )
- },
- props: {
- chartId: {
- default: chartId,
- type: String
- },
- width: {
- default: 400,
- type: Number
- },
- height: {
- default: 400,
- type: Number
- },
- cssClasses: {
- type: String,
- default: ''
- },
- styles: {
- type: Object
- },
- plugins: {
- type: Array,
- default () {
- return []
- }
- }
- },
- data () {
- return {
- _chart: null,
- _plugins: this.plugins
- }
- },
- methods: {
- addPlugin (plugin) {
- this.$data._plugins.push(plugin)
- },
- generateLegend () {
- if (this.$data._chart) {
- return this.$data._chart.generateLegend()
- }
- },
- renderChart (data, options) {
- if (this.$data._chart) this.$data._chart.destroy()
- this.$data._chart = new Chart(
- this.$refs.canvas.getContext('2d'), {
- type: chartType,
- data: data,
- options: options,
- plugins: this.$data._plugins
- }
- )
- }
- },
- beforeDestroy () {
- if (this.$data._chart) {
- this.$data._chart.destroy()
- }
- }
- }
- }
- export const Bar = generateChart('bar-chart', 'bar')
- export const HorizontalBar = generateChart('horizontalbar-chart', 'horizontalBar')
- export const Doughnut = generateChart('doughnut-chart', 'doughnut')
- export const Line = generateChart('line-chart', 'line')
- export const Pie = generateChart('pie-chart', 'pie')
- export const PolarArea = generateChart('polar-chart', 'polarArea')
- export const Radar = generateChart('radar-chart', 'radar')
- export const Bubble = generateChart('bubble-chart', 'bubble')
- export const Scatter = generateChart('scatter-chart', 'scatter')
- export default {
- Bar,
- HorizontalBar,
- Doughnut,
- Line,
- Pie,
- PolarArea,
- Radar,
- Bubble,
- Scatter
- }
|