/** * Echart图表工具类 * @author cls * @date 2019-05-16 */ // import _ from "lodash"; import minBy from "lodash/fp/minBy"; import maxBy from "lodash/fp/maxBy"; const _ = { minBy, maxBy } /** * 转换成系列数据 * @param {*} datas 预转换数据包[{},{}] * @param {*} groupByField string 分组字段名 * @param {*} calcField string 计算字段名 */ export function convertSeriesData(datas, groupByField, calcField) { let seriesDatas = []; datas.forEach(recd => { let pieItem = { name: recd[groupByField], value: recd[calcField], } seriesDatas.push({ ...recd, ...pieItem }) }); return seriesDatas } const visualMaps = { _blue: { show: false, min: 0, max: 100, calculable: true, inRange: { color: ["#C6E2FF", "#409EFF"] }, textStyle: { color: "#fff" } }, _yellow: { show: false, min: 0, max: 100, calculable: true, inRange: { color: ["#C6E2FF", "#E6A23C"] }, textStyle: { color: "#fff" } } } /** * 返回单色,根据值显示颜色深浅 * @param {*} datas * @param {*} calcField * @param {*} schemeId * @param {*} option */ export function visualMap(datas, calcField, schemeId, option) { let retu = visualMaps._blue; if (schemeId && visualMaps[schemeId]) { retu = visualMaps[schemeId] } if (datas && datas.length > 0 && calcField) { let minRecd = _.minBy(datas, calcField); let maxRecd = _.maxBy(datas, calcField); if (minRecd) { retu.min = minRecd[calcField] } if (maxRecd) { retu.max = maxRecd[calcField] } } return { ...retu, ...option } } /** * showdoc * @catalog JS工具类/ChartUtil * @title 动态加载脚本到页面 * @description 根据传入脚本url地址,动态加载脚本 * @method static * @url import { autoLoadScript } from '@birt/funclib/ChartUtil.js' * @param url 必选 string 脚本地址 */ export function autoLoadScript(url) { var script = document.createElement("script"); script.type = "text/javascript"; script.src = url; document.body.appendChild(script); }