add column chart

This commit is contained in:
jiaming 2018-12-20 18:25:19 +08:00
parent 5f7c51fc10
commit 5661b8d3ae
2 changed files with 80 additions and 0 deletions

View File

@ -0,0 +1,74 @@
<template>
<div class="column-chart">
<loading v-if="!data" />
<div class="canvas-container">
<canvas :ref="ref" />
</div>
<label-line :label="data.labelLine" :colors="drawColors" />
</div>
</template>
<script>
import colorsMixin from '../../mixins/colorsMixin.js'
import canvasMixin from '../../mixins/canvasMixin.js'
import axisMixin from '../../mixins/axisMixin.js'
export default {
name: 'ColumnChart',
mixins: [colorsMixin, canvasMixin, axisMixin],
data () {
return {
ref: `radar-chart-${(new Date()).getTime()}`,
axisType: 'column'
}
},
props: ['data', 'colors'],
methods: {
async init () {
const { initCanvas, data, draw } = this
await initCanvas()
data && draw()
},
draw () {
const { clearCanvas, initColors, initAxis, drawAxis } = this
clearCanvas()
initColors()
initAxis()
drawAxis()
}
},
mounted () {
const { init } = this
init()
}
}
</script>
<style lang="less">
.column-chart {
position: relative;
display: flex;
flex-direction: column;
.canvas-container {
flex: 1;
}
canvas {
width: 100%;
height: 100%;
}
}
</style>

View File

@ -20,12 +20,15 @@ import polylineChart from './polylineChart/index.vue'
import concentricArcChart from './concentricArcChart/index.vue'
import arcRingChart from './arcRingChart/index.vue'
import radarChart from './radarChart/index.vue'
import columnChart from './columnChart/index.vue'
import numberShow from './numberShow/index.vue'
import percentPond from './percentPond/index.vue'
import waterLevelPond from './waterLevelPond/index.vue'
import scrollBoard from './scrollBoard/index.vue'
import labelLine from './labelLine'
export default function (Vue) {
Vue.component('borderBox1', borderBox1)
Vue.component('borderBox2', borderBox2)
@ -49,9 +52,12 @@ export default function (Vue) {
Vue.component('concentricArcChart', concentricArcChart)
Vue.component('arcRingChart', arcRingChart)
Vue.component('radarChart', radarChart)
Vue.component('columnChart', columnChart)
Vue.component('numberShow', numberShow)
Vue.component('percentPond', percentPond)
Vue.component('waterLevelPond', waterLevelPond)
Vue.component('scrollBoard', scrollBoard)
Vue.component('labelLine', labelLine)
}