/* * 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. */ /** * This module exposes helper functions for developing extensions. */ import * as zrUtil from 'zrender/src/core/util'; import createSeriesData from '../../chart/helper/createSeriesData'; // import createGraphFromNodeEdge from './chart/helper/createGraphFromNodeEdge'; import * as axisHelper from '../../coord/axisHelper'; import {AxisModelCommonMixin} from '../../coord/axisModelCommonMixin'; import Model from '../../model/Model'; import {getLayoutRect} from '../../util/layout'; import { enableDataStack, isDimensionStacked, getStackedDimension } from '../../data/helper/dataStackHelper'; import SeriesModel from '../../model/Series'; import { AxisBaseModel } from '../../coord/AxisBaseModel'; import { getECData } from '../../util/innerStore'; import { createTextStyle as innerCreateTextStyle } from '../../label/labelStyle'; import { DisplayState, TextCommonOption } from '../../util/types'; /** * Create a multi dimension List structure from seriesModel. */ export function createList(seriesModel: SeriesModel) { return createSeriesData(null, seriesModel); } // export function createGraph(seriesModel) { // let nodes = seriesModel.get('data'); // let links = seriesModel.get('links'); // return createGraphFromNodeEdge(nodes, links, seriesModel); // } export {getLayoutRect}; export {createDimensions} from '../../data/helper/createDimensions'; export const dataStack = { isDimensionStacked: isDimensionStacked, enableDataStack: enableDataStack, getStackedDimension: getStackedDimension }; /** * Create a symbol element with given symbol configuration: shape, x, y, width, height, color * @param {string} symbolDesc * @param {number} x * @param {number} y * @param {number} w * @param {number} h * @param {string} color */ export {createSymbol} from '../../util/symbol'; /** * Create scale * @param {Array.} dataExtent * @param {Object|module:echarts/Model} option If `optoin.type` * is secified, it can only be `'value'` currently. */ export function createScale(dataExtent: number[], option: object | AxisBaseModel) { let axisModel = option; if (!(option instanceof Model)) { axisModel = new Model(option); // FIXME // Currently AxisModelCommonMixin has nothing to do with the // the requirements of `axisHelper.createScaleByModel`. For // example the methods `getCategories` and `getOrdinalMeta` // are required for `'category'` axis, and ecModel is required // for `'time'` axis. But occasionally echarts-gl happened // to only use `'value'` axis. // zrUtil.mixin(axisModel, AxisModelCommonMixin); } const scale = axisHelper.createScaleByModel(axisModel as AxisBaseModel); scale.setExtent(dataExtent[0], dataExtent[1]); axisHelper.niceScaleExtent(scale, axisModel as AxisBaseModel); return scale; } /** * Mixin common methods to axis model, * * Include methods * `getFormattedLabels() => Array.` * `getCategories() => Array.` * `getMin(origin: boolean) => number` * `getMax(origin: boolean) => number` * `getNeedCrossZero() => boolean` */ export function mixinAxisModelCommonMethods(Model: Model) { zrUtil.mixin(Model, AxisModelCommonMixin); } export {getECData}; export {enableHoverEmphasis} from '../../util/states'; export function createTextStyle( textStyleModel: Model, opts?: { // For which state this textStyle is for. state?: DisplayState } ) { opts = opts || {}; return innerCreateTextStyle(textStyleModel, null, null, opts.state !== 'normal'); }