@dfsj/echarts
Version:
专业的水文曲线组件或构造函数以及通用的echart二次封装图表
200 lines (196 loc) • 5.09 kB
JavaScript
/**
*
* @dfsj/echarts: 专业的水文曲线组件或构造函数以及通用的echart二次封装图表
* 版本: v3.7.0-alpha.5
* 作者:yangbo <1747837358@qq.com>
* 日期:2025-11-21 13:30:34
*
*
*/
import _defineProperty from '@babel/runtime/helpers/defineProperty';
import groupBy from 'lodash-es/groupBy';
import { to } from '../../utils/tools.js';
import assign from '../../utils/assign.js';
import config, { CATEGORY, axis, options } from '../../config.js';
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function tooltipByMulti(items) {
var buf = ["<article class='tooltip'>"];
var grouped = groupBy(items, 'axisIndex');
Object.keys(grouped).forEach(function (id) {
buf.push('<fieldset>');
buf.push("<legend>".concat(grouped[id][0].axisValueLabel, "</legend>"));
grouped[id].forEach(function (e) {
buf.push("<li>".concat(e.marker, "<i>").concat(e.seriesName, "</i><i>").concat(to(e.value[e.encode.y[0]]), "</i></li>"));
});
buf.push('</fieldset>');
});
buf.push('</article>');
return buf.join('');
}
var def = assign({}, options, {
$indices: [],
$series: [{
$code: CATEGORY.RAINFALL,
z: 5,
type: 'bar',
barCategoryGap: '0',
barWidth: '100%',
barGap: '-100%',
large: true,
itemStyle: {
color: null
},
markPoint: {
data: [{
type: 'max',
symbolSize: 2,
label: {
offset: [0, 12],
color: 'inherit',
fontWeight: 'bold',
fontSize: 14,
formatter: function formatter(e) {
return to(e.value);
}
}
}]
}
}, {
$code: ~CATEGORY.RAINFALL,
z: 5,
type: 'line',
smooth: true,
large: true,
emphasis: {
itemStyle: {
opacity: 0.8
}
},
itemStyle: {
opacity: 0
},
markPoint: {
data: [{
type: 'max',
symbolSize: 2,
label: {
offset: [0, -7],
color: 'inherit',
fontWeight: 'bold',
fontSize: 14,
formatter: function formatter(e) {
return to(e.value);
}
}
}]
}
}],
color: config.color,
tooltip: {
formatter: tooltipByMulti,
trigger: 'axis',
axisPointer: {
type: 'cross'
}
},
axisPointer: {
link: {
xAxisIndex: 'all'
}
},
grid: [{
top: 50,
left: 80,
right: 80,
bottom: '66%'
}, {
left: 80,
right: 80,
bottom: 50,
top: '36%'
}],
legend: {
show: true,
top: 10
},
dataZoom: [{
show: true,
type: 'slider',
brushSelect: false,
handleIcon: config.icon.zoom,
handleSize: '60%',
xAxisIndex: [0, 1],
realtime: true,
throttle: 30,
bottom: 10,
height: 20
}, {
type: 'inside',
realtime: true,
xAxisIndex: [0, 1]
}],
xAxis: [_objectSpread(_objectSpread({}, axis), {}, {
show: false,
type: 'category',
gridIndex: 0,
boundaryGap: false,
axisLine: {
onZero: true
},
position: 'top'
}), _objectSpread(_objectSpread({}, axis), {}, {
type: 'category',
gridIndex: 1,
boundaryGap: false,
axisLine: {
onZero: false
},
nameGap: 50
})],
yAxis: [_objectSpread(_objectSpread({}, axis), {}, {
$layout: CATEGORY.RAINFALL,
type: 'value',
nameLocation: 'middle',
gridIndex: 0,
nameGap: 50,
inverse: true,
min: 0,
max: function max(v) {
return to(v.max + (v.max - v.min) * 0.1);
}
}), _objectSpread(_objectSpread({}, axis), {}, {
$layout: CATEGORY.SWC,
type: 'value',
nameLocation: 'middle',
gridIndex: 0,
nameGap: 50,
min: 0,
max: 100
}), _objectSpread(_objectSpread({}, axis), {}, {
$layout: CATEGORY.STAGE,
type: 'value',
nameLocation: 'middle',
gridIndex: 1,
nameGap: 50,
min: function min(v) {
return to(v.min - (v.max - v.min) * 0.1);
},
max: function max(v) {
return to(v.max + (v.max - v.min) * 0.1);
}
}), _objectSpread(_objectSpread({}, axis), {}, {
$layout: CATEGORY.FLOW,
type: 'value',
nameLocation: 'middle',
gridIndex: 1,
nameGap: 50,
min: function min(v) {
return to(Math.max(v.min - (v.max - v.min) * 0.1, 0));
},
max: function max(v) {
return to(Math.min(v.max + (v.max - v.min) * 0.1, Infinity));
}
})]
});
export { def as default };