UNPKG

@dfsj/echarts

Version:

专业的水文曲线组件或构造函数以及通用的echart二次封装图表

184 lines (180 loc) 6.4 kB
/** * * @dfsj/echarts: 专业的水文曲线组件或构造函数以及通用的echart二次封装图表 * 版本: v3.7.0-alpha.5 * 作者:yangbo <1747837358@qq.com> * 日期:2025-11-21 13:30:34 * * */ import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray'; import assign from '../../utils/assign.js'; import config, { CATEGORY } from '../../config.js'; import { toIndices } from '../../utils/render.js'; import { ensure, complexMinMaxIndex, minimum, maximum } from '../../utils/tools.js'; import def from './default.js'; import { constant } from '@dfsj/utils'; import { useECharts } from '../../hooks/useECharts.js'; import { useTable } from '../../view/useTable.js'; import { useStatistic } from '../../view/useStatistic.js'; function useComplexHydrology(chartRef) { var _useECharts = useECharts(chartRef), setOptions = _useECharts.setOptions, echarts = _useECharts.echarts, getInstance = _useECharts.getInstance, container = _useECharts.container; var _useTable = useTable(), props = _useTable.props, toggleTable = _useTable.toggleTable; props.container = container; var _useStatistic = useStatistic(), statisticProps = _useStatistic.props, toggleStatistic = _useStatistic.toggleStatistic; console.log('---C', constant); var assemble = function assemble(value, options) { var chart = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : getInstance(); var optioned = assign({}, def, options); if (value != null) { var _optioned$series; props.value = value; props.chart = chart; statisticProps.chart = chart; statisticProps.value = value; var counter = 0; var axis = optioned.yAxis; var yAxisCodes = [axis[0].$layout | axis[1].$layout, axis[2].$layout | axis[3].$layout]; optioned.dataset.source = value.source; optioned.series = value.dimensions.filter(function (e, i) { return i > 0 && typeof e != 'string'; }).map(function (e, i) { var yAxisIndex = optioned.yAxis.findIndex(function (v) { return v.$layout & e.code; }); var xAxisIndex = yAxisCodes.findIndex(function (v) { return v & e.code; }); var series = optioned.$series.find(function (s) { return s.$code & e.code; }); var encode = { x: 0, y: i + 1 }; var color = !!(e.code & CATEGORY.RAINFALL) ? config.rainfallColor[counter++] : undefined; return assign({ yAxisIndex: yAxisIndex, xAxisIndex: xAxisIndex, color: color, encode: encode, name: e.name, selected: e.selected, visible: true }, series); }); var indices = toIndices(value, optioned, yAxisCodes); if (indices !== null && indices !== void 0 && indices.length) (_optioned$series = optioned.series).push.apply(_optioned$series, _toConsumableArray(indices)); var marks = toMarks(value, optioned); if (marks !== null && marks !== void 0 && marks.length) { optioned.series.push(assign({ data: marks }, config.mark.series)); } optioned.legend.data = optioned.series.map(function (e) { return { name: e.name, textStyle: { color: e.color } }; }); optioned.legend.selected = optioned.series.reduce(function (p, v) { return p[v.name] = v.selected != null ? v.selected : true, p; }, {}); } return optioned; }; var toMarks = function toMarks(value, optioned) { var _value$areas; var areas = ((_value$areas = value.areas) === null || _value$areas === void 0 ? void 0 : _value$areas.map(function (e) { return assign({ shape: 'rect', value: e.time, gridIndex: [0, 1], itemStyle: { fill: e.back || config.areaColor[e.type] } }, config.mark.shape.rect); })) || constant.EMPTY_ARRAY; var splits = ensure(value.split).reduce(function (accept, split) { var _optioned$splitFormat, _optioned$splitFormat2, _optioned$markOffset; return accept.concat([assign({ shape: 'line', value: split, gridIndex: [0], xAxisIndex: 0, yAxisIndex: 0 }, config.mark.shape.line), assign({ shape: 'line', value: split, gridIndex: [1], xAxisIndex: 1, yAxisIndex: 2 }, config.mark.shape.line), assign({ shape: 'text', value: split, gridIndex: [1], xAxisIndex: 1, yAxisIndex: 2, label: { text: (_optioned$splitFormat = optioned === null || optioned === void 0 || (_optioned$splitFormat2 = optioned.splitFormat) === null || _optioned$splitFormat2 === void 0 ? void 0 : _optioned$splitFormat2.call(optioned, split)) !== null && _optioned$splitFormat !== void 0 ? _optioned$splitFormat : split, offset: (_optioned$markOffset = optioned === null || optioned === void 0 ? void 0 : optioned.markOffset) !== null && _optioned$markOffset !== void 0 ? _optioned$markOffset : [0, '-7%'] } }, config.mark.shape.text)]); }, []); return areas.concat(splits); }; var createOptions = function createOptions(data) { if (data == null) return null; var flo = complexMinMaxIndex(data, CATEGORY.FLOW); return { yAxis: [{ layout: CATEGORY.RAINFALL, name: '降雨量(mm)', min: 0, max: function max(v) { return Math.round(v.max + (v.max - v.min) * 0.1); } }, { layout: CATEGORY.SWC, name: '土壤含水量(%)', min: 0, max: function max(v) { return Math.round(v.max + (v.max - v.min) * 0.1); } }, { layout: CATEGORY.FLOW, name: '流量(m³/s)', min: function min(v) { return minimum(v, flo); }, max: function max(v) { return maximum(v, flo); } }, { layout: '', name: '' }] }; }; return { setOptions: setOptions, echarts: echarts, getInstance: getInstance, container: container, createOptions: createOptions, assemble: assemble, toggleTable: toggleTable, toggleStatistic: toggleStatistic }; } export { useComplexHydrology };