123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184 |
- /*
- * <<
- * Davinci
- * ==
- * Copyright (C) 2016 - 2017 EDP
- * ==
- * Licensed 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.
- * >>
- */
- import { IChartProps } from '../../components/Chart'
- import { decodeMetricName } from '../../components/util'
- import { EChartOption } from 'echarts'
- import { getFormattedValue } from '../../components/Config/Format'
- export default function (chartProps: IChartProps, drillOptions?: any) {
- const {
- width,
- height,
- data,
- cols,
- metrics,
- chartStyles
- } = chartProps
- const {
- axis,
- splitLine,
- gauge
- } = chartStyles
- const {
- radius,
- splitNumber,
- startAngle,
- endAngle,
- clockwise,
- prefix,
- suffix,
- showTitle,
- titleFontFamily,
- titleFontSize,
- titleColor,
- titleOffsetLeft,
- titleOffsetTop,
- showDetail,
- detailFontFamily,
- detailFontSize,
- detailColor,
- detailOffsetLeft,
- detailOffsetTop,
- showPointer,
- pointerLength,
- pointerWidth,
- customPointerColor,
- pointerColor,
- pointerBorderStyle,
- pointerBorderWidth,
- pointerBorderColor,
- axisLineSize,
- axisLineColor,
- showAxisTick,
- showAxisLabel,
- axisLabelDistance,
- axisLabelFontFamily,
- axisLabelFontSize,
- axisLabelColor,
- showSplitLine,
- splitLineLength,
- splitLineSize,
- splitLineStyle,
- splitLineColor
- } = gauge
- const max = gauge.max || 100
- let seriesObj = {}
- const seriesArr = []
- metrics.forEach((m) => {
- const decodedMetricName = decodeMetricName(m.name)
- seriesObj = {
- type: 'gauge',
- splitNumber,
- startAngle,
- endAngle,
- clockwise,
- max,
- radius: radius ? `${radius}%` : '75%',
- title: {
- show: showTitle,
- fontFamily: titleFontFamily,
- fontSize: titleFontSize,
- color: titleColor,
- offsetCenter: [
- titleOffsetLeft ? `${titleOffsetLeft}%` : 0,
- titleOffsetTop ? `${titleOffsetTop}%` : 0
- ]
- },
- detail: {
- show: showDetail,
- fontFamily: detailFontFamily,
- fontSize: detailFontSize,
- color: detailColor,
- offsetCenter: [
- detailOffsetLeft ? `${detailOffsetLeft}%` : 0,
- detailOffsetTop ? `${detailOffsetTop}%` : 0
- ],
- formatter: (value) => `${prefix}${getFormattedValue(Number(value) * 100 / max, m.format)}${suffix}`,
- // rich: {},
- // width: 240,
- // height: 240,
- // borderRadius: 120,
- // lineHeight: 240,
- // backgroundColor: '#05354a'
- },
- // animationDuration: 1000,
- // animationDurationUpdate: 1000,
- data: [{
- value: data.length ? data[0][`${m.agg}(${decodedMetricName})`] : 0,
- name: m.field.alias || decodedMetricName
- }],
- axisLine: {
- lineStyle: {
- width: axisLineSize,
- color: [
- [data.length ? data[0][`${m.agg}(${decodedMetricName})`] / max : 0, axisLineColor],
- [1, '#ddd']
- ]
- }
- },
- axisTick: {
- show: showAxisTick
- },
- axisLabel: {
- show: showAxisLabel,
- distance: axisLabelDistance,
- fontSize: axisLabelFontSize,
- fontFamily: axisLabelFontFamily,
- color: axisLabelColor
- },
- splitLine: {
- show: showSplitLine,
- length: splitLineLength,
- lineStyle: {
- color: splitLineColor,
- width: splitLineSize,
- type: splitLineStyle
- }
- },
- pointer: {
- show: showPointer,
- length: pointerLength ? `${pointerLength}%` : 0,
- width: pointerWidth
- },
- itemStyle: {
- color: customPointerColor ? pointerColor : 'auto',
- borderType: pointerBorderStyle,
- borderWidth: pointerBorderWidth,
- borderColor: pointerBorderColor
- }
- }
- seriesArr.push(seriesObj)
- })
- const tooltip: EChartOption.Tooltip = {
- trigger: 'item',
- formatter: '{b}: {c}'
- }
- return {
- tooltip,
- series: seriesArr
- }
- }
|