feat:抽取图表公共参数 优化valuemapping display的逻辑
This commit is contained in:
65
nezha-fronted/src/components/chart/chartFormat.js
Normal file
65
nezha-fronted/src/components/chart/chartFormat.js
Normal file
@@ -0,0 +1,65 @@
|
||||
export default {
|
||||
methods: {
|
||||
pieFormatterLabel (params) {
|
||||
const self = this
|
||||
let str = '{color|'
|
||||
if (this.chartInfo.param.text === 'all') {
|
||||
str += params.data.name
|
||||
str += ' : '
|
||||
str += params.data.mapping && params.data.mapping.display ? self.handleDisplay(params.data.mapping.display, { ...params.data.labels, value: params.data.value }) : params.data.value
|
||||
}
|
||||
if (this.chartInfo.param.text === 'value') {
|
||||
str += params.data.mapping && params.data.mapping.display ? self.handleDisplay(params.data.mapping.display, { ...params.data.labels, value: params.data.value }) : params.data.value
|
||||
}
|
||||
if (this.chartInfo.param.text === 'legend') {
|
||||
str += params.data.name
|
||||
}
|
||||
if (this.chartInfo.param.text === 'none') {
|
||||
str += ''
|
||||
}
|
||||
str += '}'
|
||||
return str
|
||||
},
|
||||
handleDisplay (display, params) {
|
||||
console.log(params)
|
||||
if (/\{\{.+\}\}/.test(display)) {
|
||||
const labelValue = display.replace(/(\{\{.+?\}\})/g, function (i) {
|
||||
const label = i.substr(i.indexOf('{{') + 2, i.indexOf('}}') - i.indexOf('{{') - 2)
|
||||
console.log(label)
|
||||
let value = null
|
||||
if (params[label]) {
|
||||
value = params[label]
|
||||
}
|
||||
return value || label
|
||||
})
|
||||
return labelValue
|
||||
} else {
|
||||
return display
|
||||
}
|
||||
},
|
||||
getMinMaxFromData (originalDatas) {
|
||||
let minTime = null
|
||||
let maxTime = null
|
||||
let minValue = null
|
||||
let maxValue = null
|
||||
// 将数据提为二维数组
|
||||
let datas = []
|
||||
originalDatas.forEach((originalData, expressionIndex) => {
|
||||
originalData.forEach((data, dataIndex) => {
|
||||
datas = [...datas, ...data.values]
|
||||
})
|
||||
})
|
||||
const timeSorted = datas.sort((a, b) => {
|
||||
return a[0] - b[0]
|
||||
})
|
||||
const valueSorted = datas.sort((a, b) => {
|
||||
return a[1] - b[1]
|
||||
})
|
||||
minTime = timeSorted.length ? timeSorted[0][0] : ''
|
||||
maxTime = timeSorted.length ? timeSorted[timeSorted.length - 1][0] : ''
|
||||
minValue = valueSorted.length ? valueSorted[0][1] : ''
|
||||
maxValue = valueSorted.length ? valueSorted[valueSorted.length - 1][1] : ''
|
||||
return { minTime, maxTime, minValue, maxValue }
|
||||
},
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user