From 7a3ba7d4fd2af0b5782cda1d2eba03a4d35c77b3 Mon Sep 17 00:00:00 2001 From: sushuang Date: Sun, 12 Nov 2017 16:57:17 +0800 Subject: [PATCH] Avoid inject. --- extension-src/dataTool/index.js | 14 ++++--- src/config.js | 12 +++--- src/coord/geo/geoCreator.js | 54 ++----------------------- src/echarts.js | 71 ++++++++++++++++++++------------- src/export.js | 1 + 5 files changed, 64 insertions(+), 88 deletions(-) diff --git a/extension-src/dataTool/index.js b/extension-src/dataTool/index.js index 107b22703..a8639b0ca 100644 --- a/extension-src/dataTool/index.js +++ b/extension-src/dataTool/index.js @@ -8,8 +8,12 @@ export {gexf}; export {prepareBoxplotData}; -echarts.$inject.dataTool({ - version: version, - gexf: gexf, - prepareBoxplotData: prepareBoxplotData -}); +// For backward compatibility, where the namespace `dataTool` will +// be mounted on `echarts` is the extension `dataTool` is imported. +// But the old version of echarts do not have `dataTool` namespace, +// so check it before mounting. +if (echarts.dataTool) { + echarts.dataTool.version = version; + echarts.dataTool.gexf = gexf; + echarts.dataTool.prepareBoxplotData = prepareBoxplotData; +} diff --git a/src/config.js b/src/config.js index f810a767a..bca3a0f57 100644 --- a/src/config.js +++ b/src/config.js @@ -4,19 +4,19 @@ // declaration is behind of the using position (for example in `Model.extent`, // And tools like rollup can not analysis the dependency if not import). -var __DEV__; +var dev; // In browser if (typeof window !== 'undefined') { - __DEV__ = window.__DEV__; + dev = window.__DEV__; } // In node else if (typeof global !== 'undefined') { - __DEV__ = global.__DEV__; + dev = global.__DEV__; } -if (typeof __DEV__ === 'undefined') { - __DEV__ = true; +if (typeof dev === 'undefined') { + dev = true; } -export {__DEV__}; +export var __DEV__ = dev; diff --git a/src/coord/geo/geoCreator.js b/src/coord/geo/geoCreator.js index ec6272144..f5043798a 100644 --- a/src/coord/geo/geoCreator.js +++ b/src/coord/geo/geoCreator.js @@ -4,16 +4,13 @@ import * as zrUtil from 'zrender/src/core/util'; import Geo from './Geo'; import * as layout from '../../util/layout'; import * as numberUtil from '../../util/number'; -import parseGeoJson from './parseGeoJson'; - -var mapDataStores = {}; /** * Resize method bound to the geo * @param {module:echarts/coord/geo/GeoModel|module:echarts/chart/map/MapModel} geoModel * @param {module:echarts/ExtensionAPI} api */ -function resizeGeo (geoModel, api) { +function resizeGeo(geoModel, api) { var boundingCoords = geoModel.get('boundingCoords'); if (boundingCoords != null) { @@ -123,7 +120,7 @@ var geoCreator = { // FIXME Create each time may be slow ecModel.eachComponent('geo', function (geoModel, idx) { var name = geoModel.get('map'); - var mapData = mapDataStores[name]; + var mapData = echarts.getMap(name); if (__DEV__) { if (!mapData) { mapNotExistsError(name); @@ -168,7 +165,7 @@ var geoCreator = { }); zrUtil.each(mapModelGroupBySeries, function (mapSeries, mapType) { - var mapData = mapDataStores[mapType]; + var mapData = echarts.getMap(mapType); if (__DEV__) { if (!mapData) { mapNotExistsError(mapSeries[0].get('map')); @@ -203,44 +200,6 @@ var geoCreator = { return geoList; }, - /** - * @param {string} mapName - * @param {Object|string} geoJson - * @param {Object} [specialAreas] - * - * @example - * $.get('USA.json', function (geoJson) { - * echarts.registerMap('USA', geoJson); - * // Or - * echarts.registerMap('USA', { - * geoJson: geoJson, - * specialAreas: {} - * }) - * }); - */ - registerMap: function (mapName, geoJson, specialAreas) { - if (geoJson.geoJson && !geoJson.features) { - specialAreas = geoJson.specialAreas; - geoJson = geoJson.geoJson; - } - if (typeof geoJson === 'string') { - geoJson = (typeof JSON !== 'undefined' && JSON.parse) - ? JSON.parse(geoJson) : (new Function('return (' + geoJson + ');'))(); - } - mapDataStores[mapName] = { - geoJson: geoJson, - specialAreas: specialAreas - }; - }, - - /** - * @param {string} mapName - * @return {Object} - */ - getMap: function (mapName) { - return mapDataStores[mapName]; - }, - /** * Fill given regions array * @param {Array.} originRegionArr @@ -283,11 +242,6 @@ var geoCreator = { } }; -// Inject methods into echarts -echarts.$inject.registerMap(geoCreator.registerMap); -echarts.$inject.getMap(geoCreator.getMap); -echarts.$inject.parseGeoJSON(parseGeoJson); - echarts.registerCoordinateSystem('geo', geoCreator); -export default geoCreator; \ No newline at end of file +export default geoCreator; diff --git a/src/echarts.js b/src/echarts.js index 0012191ba..67c356434 100644 --- a/src/echarts.js +++ b/src/echarts.js @@ -1544,7 +1544,6 @@ var themeStorage = {}; */ var loadingEffects = {}; - var instances = {}; var connectedGroups = {}; @@ -1552,6 +1551,8 @@ var idBase = new Date() - 0; var groupIdBase = new Date() - 0; var DOM_ATTRIBUTE_KEY = '_echarts_instance_'; +var mapDataStores = {}; + function enableConnect(chart) { var STATUS_PENDING = 0; var STATUS_UPDATING = 1; @@ -1961,7 +1962,45 @@ export function extendChartView(opts/*, superClass*/) { * }); */ export function setCanvasCreator(creator) { - zrUtil.$inject.createCanvas(creator); + zrUtil.$override('createCanvas', creator); +} + +/** + * @param {string} mapName + * @param {Object|string} geoJson + * @param {Object} [specialAreas] + * + * @example + * $.get('USA.json', function (geoJson) { + * echarts.registerMap('USA', geoJson); + * // Or + * echarts.registerMap('USA', { + * geoJson: geoJson, + * specialAreas: {} + * }) + * }); + */ +export function registerMap(mapName, geoJson, specialAreas) { + if (geoJson.geoJson && !geoJson.features) { + specialAreas = geoJson.specialAreas; + geoJson = geoJson.geoJson; + } + if (typeof geoJson === 'string') { + geoJson = (typeof JSON !== 'undefined' && JSON.parse) + ? JSON.parse(geoJson) : (new Function('return (' + geoJson + ');'))(); + } + mapDataStores[mapName] = { + geoJson: geoJson, + specialAreas: specialAreas + }; +} + +/** + * @param {string} mapName + * @return {Object} + */ +export function getMap(mapName) { + return mapDataStores[mapName]; } registerVisual(PRIORITY_VISUAL_GLOBAL, seriesColor); @@ -1983,28 +2022,6 @@ registerAction({ }, zrUtil.noop); -// -------- -// Exports -// -------- - -export var registerMap; -export var getMap; -export var parseGeoJSON; -export var dataTool; - -// FIXME -export var $inject = { - registerMap: function (f) { - registerMap = f; /* ESM2CJS_REPLACE exports.registerMap = f; */ - }, - getMap: function (f) { - getMap = f; /* ESM2CJS_REPLACE exports.getMap = f; */ - }, - parseGeoJSON: function (f) { - parseGeoJSON = f; /* ESM2CJS_REPLACE exports.parseGeoJSON = f; */ - }, - dataTool: function (f) { - dataTool = f; /* ESM2CJS_REPLACE exports.dataTool = f; */ - } -}; - +// For backward compatibility, where the namespace `dataTool` will +// be mounted on `echarts` is the extension `dataTool` is imported. +export var dataTool = {}; diff --git a/src/export.js b/src/export.js index 16cb5370b..1d1f50dc9 100644 --- a/src/export.js +++ b/src/export.js @@ -27,6 +27,7 @@ export {matrix}; export {vector}; export {colorTool as color}; export {default as env} from 'zrender/src/core/env'; +export {default as parseGeoJson} from './coord/geo/parseGeoJson'; var ecUtil = {}; zrUtil.each([ -- GitLab