MiniChart.vue 2.4 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
<!--
  - Licensed to the Apache Software Foundation (ASF) under one or more
  - contributor license agreements.  See the NOTICE file distributed with
  - this work for additional information regarding copyright ownership.
  - The ASF licenses this file to You under the Apache License, Version 2.0
  - (the "License"); you may not use this file except in compliance with
  - the License.  You may obtain a copy of the License at
  -
  -     http://www.apache.org/licenses/LICENSE-2.0
  -
  - Unless required by applicable law or agreed to in writing, software
  - distributed under the License is distributed on an "AS IS" BASIS,
  - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  - See the License for the specific language governing permissions and
  - limitations under the License.
  -->

<template>
      <div class="layout row ma-0 align-center justify-space-between">
        <div class="text-box">
          <div class="subheading pb-2">{{title}} </div>
          <span class="grey--text">{{subTitle}} <v-icon small :color="iconColor">{{icon}}</v-icon></span>
        </div>
        <div class="chart">
          <e-chart id="hello"
            :path-option="computeChartOption"
            height="68px"
            width="100%"
          >
          </e-chart>
        </div>
      </div>
</template>

<script>
  import EChart from '@/util/echart'
  export default {
    components: {
      EChart
    },
    props: {
      title: String,
      subTitle: String,
      icon: String,
      iconColor: {
        type: String,
        default: 'success'
      },
      type: String,
      chartColor: String,
      data: Array
    },
    data () {
      return {
        defaultOption: [
          ['dataset.source', this.data],
          ['xAxis.show', false],
          ['yAxis.show', false],
          ['color', [this.chartColor]]
        ]
      }
    },

    computed: {
      computeChartOption () {
        switch (this.type) {
          case 'bar':
            this.defaultOption.push(['series[0].type', 'bar'])
            break
          case 'area':
            this.defaultOption.push(['series[0].type', 'line'])
            this.defaultOption.push(['series[0].areaStyle', {}])
            break
          default:
            break
        }
        return this.defaultOption
      }
    },

    watch: {
      data (curVal, oldVal) {
        return this.defaultOption
      }
    }
  }
</script>

<style scoped>

</style>