12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- import type { DataSource } from "../types";
- import { defaultsDeep } from "lodash-es";
- import { containerDefaultConfig, chartDefaultConfig } from "../config";
- import { EChartsOption } from "echarts";
- import { PropType } from "vue";
- import { DataSourceType } from "../chartEnum";
- /**
- * 获取容器组件属性
- * @param {Record<string, any>} config - 传入属性
- * @returns {Record<string, any>} - 返回与默认配置合并后的属性
- */
- export function getNormalizedContainer(config: Record<string, any>) {
- return defaultsDeep(config, containerDefaultConfig);
- }
- /**
- * 获取图表组件属性
- * @param {Record<string, any>} config - 传入属性
- * @returns {Record<string, any>} - 返回与默认配置合并后的属性
- */
- export function getNormalizedChart(config: EChartsOption) {
- return defaultsDeep(config, chartDefaultConfig);
- }
- // 图表组件数据来源prop
- export const dataSource = {
- type: Object as PropType<DataSource>,
- default: () => ({
- sourceType: DataSourceType.STATIC,
- data: [],
- url: "",
- method: "GET",
- params: {},
- headers: {},
- refreshTime: 0,
- dataProcess: () => [],
- }),
- }
- /**
- * 执行动态js
- * @param code 代码
- * @param param 参数
- * @returns promise
- */
- export const cllJsCode = (code: string, param: string): Promise<any> => {
-
- return new Promise((resove, reject) => {
- // 生成一份new webwork
- const blob = new Blob([`
- self.onmessage = function(e) {
- self.postMessage((${code}).call(null, e.data));
- }
- `], { type: 'application/javascript' });
- const worker = new Worker(URL.createObjectURL(blob));
- // 向webwork发送消息
- worker.postMessage(JSON.parse(param));
- worker.onmessage = (e) => {
- worker.terminate();
- resove(e.data);
- }
- worker.onerror = (e) => {
- worker.terminate();
- reject(e);
- }
- });
- }
|