2021/02/08 - [๐ฉ๐ป/Vue.js] - [Vue-todo-list] #2 ์นดํ ๊ณ ๋ฆฌ๊ฐ ์๋ Todo List ๋ง๋ค๊ธฐ
Pie chart๋ ์ด์ ํฌ์คํ ์์ ๋ค๋ค๋ Line chart์ ๋นํด ์์ฒญ ์์ฒญ ์ฌ์ด ํธ์ ์ํด ํฌ๊ฒ ๊ณ ๋ฏผํ์ง ์๊ณ import ํด์ค ๋ค ๋ฐ๋ก ์ผ๋ค.
import { Vue } from "vue-property-decorator";
import { Pie } from "vue-chartjs";
export default Vue.extend({
extends: Pie,
data: () => ({
msg: "๐จ My Pie Stats",
stats: [],
chartdata: {
labels: [],
datasets: [
{
label: [],
data: [],
backgroundColor: []
}
]
},
options: {
hoverBorderWidth: 20
}
}),
mounted() {
this.renderChart(this.chartdata, this.options);
},
created() {
this.stats = this.$store.state.categories;
const obj = this.chartdata.datasets[0];
for (const stat of this.stats) {
this.chartdata.labels.push(stat.title);
obj.label.push(stat.title);
obj.data.push(stat.value);
obj.backgroundColor.push(stat.backgroundColor);
}
}
});
ํฌ๋งท์ ๋ณด๋ฉด chart.js ๊ณต์ documnet์์ ๋ณต์ฌํด์จ ๊ตฌ์กฐ์ ๊ฑฐ์ ๋์ผํ๊ณ , datasets ๋ด๋ถ ๋ฐ์ดํฐ๋ง reactive ํ๊ฒ ์ฐ๋ํด์ฃผ๊ธฐ๋ง ํ๋ค.
renderChart() ๋ฉ์๋๊ฐ mounted์์ ์คํ๋๊ธฐ ์ ํ์ํ ๋ฐ์ดํฐ๋ค์ created() ํ ์์ ์์ฑ๋๋๋ก ํ๋ค.
ํ์ํ ๋ฐ์ดํฐ๋ category์ ๋ํ ๋ถ๋ถ์ด์์ผ๋ store์ ์ ์ฅ๋ categories๋ฅผ this.$store.state.categories๋ก ์ ๊ทผํ๋ค. todo page์์ ์นดํ ๊ณ ๋ฆฌ์ ๋ํ ์ปฌ๋ฌ๋ฅผ ๋ฐ๊ฟ ์ ์๊ฒ ํ์ผ๋ฏ๋ก, ๋ณํ๊ฐ ์๊ธด๋ค๋ฉด ๋ฐ๋ก chart ์ชฝ์์๋ ๋ฐ์๋๋ค.
๐ PieChart.js ์ปดํฌ๋ํธ์ ์ ์ฒด ์์ค ์ฝ๋๋ ์ด๊ณณ์์