| /* |
| * 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(); |
| } |