| /* | |
| * 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(';'); | |
| Object.defineProperty(el, 'clientWidth', { | |
| get() { | |
| return params.width || 500; | |
| } | |
| }); | |
| Object.defineProperty(el, 'clientHeight', { | |
| get() { | |
| return params.height || 400; | |
| } | |
| }); | |
| 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; | |
| // /** | |
| // * @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(); | |
| } |