blob: ae23689047703b69eddfa862fb405fd316a5a285 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import { init, EChartsType } from '../../../src/echarts.all';
import {
curry as zrUtilCurry,
bind as zrUtilBind,
extend as zrUtilExtend
} from 'zrender/src/core/util';
import { ComponentMainType } from '../../../src/util/types';
import Group from 'zrender/src/graphic/Group';
import Element from 'zrender/src/Element';
import GlobalModel from '../../../src/model/Global';
export function createChart(params?: {
width?: number,
height?: number,
theme?: Parameters<typeof init>[1],
opts?: Parameters<typeof init>[2]
}): EChartsType {
params = params || {};
const el = document.createElement('div');
el.style.cssText = [
'visibility:hidden',
'width:' + (params.width || '500') + 'px',
'height:' + (params.height || '400') + 'px',
'position:absolute',
'bottom:0',
'right:0'
].join(';');
const chart = init(el, params.theme, params.opts);
return chart;
};
export function removeChart(chart: EChartsType): void {
chart.dispose();
};
export const extend = zrUtilExtend;
export function g(id: string): HTMLElement {
return document.getElementById(id);
}
export function removeEl(el: HTMLElement): void {
const parent = parentEl(el);
parent && parent.removeChild(el);
}
export function parentEl(el: HTMLElement): HTMLElement {
//parentElement for ie.
return el.parentElement || el.parentNode as HTMLElement;
}
export function getHeadEl(): HTMLElement {
return document.head
|| document.getElementsByTagName('head')[0]
|| document.documentElement;
}
export const curry = zrUtilCurry;
export const bind = zrUtilBind;
export function isValueFinite(val: unknown): boolean {
return val != null && val !== '' && isFinite(val as number);
}
// /**
// * @public
// * @param {Array.<string>} deps
// * @param {Array.<Function>} testFnList
// * @param {Function} done All done callback.
// */
// export function resetAMDLoaderEachTest(deps, testFnList, done) {
// const i = -1;
// next();
// function next() {
// i++;
// if (testFnList.length <= i) {
// done();
// return;
// }
// utHelper.resetAMDLoader(function () {
// global.require(deps, function () {
// testFnList[i].apply(null, arguments);
// next();
// });
// });
// }
// };
export function getGraphicElements(
chartOrGroup: EChartsType | Group,
mainType: ComponentMainType,
index?: number
): Element[] {
if ((chartOrGroup as Group).type === 'group') {
return (chartOrGroup as Group).children();
}
else {
const viewGroup = getViewGroup(chartOrGroup as EChartsType, mainType, index);
if (viewGroup) {
const list: Element[] = [viewGroup];
viewGroup.traverse(function (el: Element) {
list.push(el);
});
return list;
}
else {
return [];
}
}
}
export function getViewGroup(
chart: EChartsType,
mainType: ComponentMainType,
index?: number
): Group {
const component = getECModel(chart).getComponent(mainType, index);
return component ? chart[
mainType === 'series' ? '_chartsMap' : '_componentsMap'
][component.__viewId].group : null;
}
export function getECModel(chart: EChartsType): GlobalModel {
// @ts-ignore
return chart.getModel();
}