mirror of https://github.com/docusealco/docuseal
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.1 KiB
51 lines
1.1 KiB
export default class extends HTMLElement {
|
|
connectedCallback () {
|
|
this.chartLabels = JSON.parse(this.dataset.labels || '[]')
|
|
this.chartDatasets = JSON.parse(this.dataset.datasets || '[]')
|
|
|
|
this.initChart()
|
|
}
|
|
|
|
disconnectedCallback () {
|
|
if (this.chartInstance) {
|
|
this.chartInstance.destroy()
|
|
this.chartInstance = null
|
|
}
|
|
}
|
|
|
|
async initChart () {
|
|
const { default: Chart } = await import(/* webpackChunkName: "chartjs" */ 'chart.js/auto')
|
|
|
|
const canvas = this.querySelector('canvas')
|
|
|
|
const ctx = canvas.getContext('2d')
|
|
|
|
this.chartInstance = new Chart(ctx, {
|
|
type: 'bar',
|
|
data: {
|
|
labels: this.chartLabels,
|
|
datasets: this.chartDatasets
|
|
},
|
|
options: {
|
|
responsive: true,
|
|
maintainAspectRatio: true,
|
|
animation: false,
|
|
scales: {
|
|
y: {
|
|
beginAtZero: true,
|
|
grace: '20%',
|
|
ticks: {
|
|
precision: 0
|
|
}
|
|
}
|
|
},
|
|
plugins: {
|
|
legend: {
|
|
display: false
|
|
}
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|