From b4badd0c5397560ea079c0a1f49f824aa86b0b99 Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Mon, 23 Apr 2018 10:35:00 -0600 Subject: [PATCH 1/2] Move ScaleLineUnits to ScaleLine control module --- src/ol/control/ScaleLine.js | 58 +++++++++++++++++++------------- src/ol/control/ScaleLineUnits.js | 16 --------- 2 files changed, 35 insertions(+), 39 deletions(-) delete mode 100644 src/ol/control/ScaleLineUnits.js diff --git a/src/ol/control/ScaleLine.js b/src/ol/control/ScaleLine.js index d9f7bc89dc..12bb252d79 100644 --- a/src/ol/control/ScaleLine.js +++ b/src/ol/control/ScaleLine.js @@ -5,17 +5,29 @@ import {inherits} from '../index.js'; import {getChangeEventType} from '../Object.js'; import {assert} from '../asserts.js'; import Control from '../control/Control.js'; -import ScaleLineUnits from '../control/ScaleLineUnits.js'; import {CLASS_UNSELECTABLE} from '../css.js'; import {listen} from '../events.js'; import {getPointResolution, METERS_PER_UNIT} from '../proj.js'; -import Units from '../proj/Units.js'; +import ProjUnits from '../proj/Units.js'; /** * @type {string} */ -const UNITS = 'units'; +const UNITS_PROP = 'units'; + +/** + * Units for the scale line. Supported values are `'degrees'`, `'imperial'`, + * `'nautical'`, `'metric'`, `'us'`. + * @enum {string} + */ +export const Units = { + DEGREES: 'degrees', + IMPERIAL: 'imperial', + NAUTICAL: 'nautical', + METRIC: 'metric', + US: 'us' +}; /** @@ -33,7 +45,7 @@ const LEADING_DIGITS = [1, 2, 5]; * should be re-rendered. This is called in a `requestAnimationFrame` callback. * @property {Element|string} [target] Specify a target if you want the control * to be rendered outside of the map's viewport. - * @property {module:ol/control/ScaleLineUnits~ScaleLineUnits|string} [units='metric'] Units. + * @property {module:ol/control/ScaleLine~Units|string} [units='metric'] Units. */ @@ -110,11 +122,11 @@ const ScaleLine = function(opt_options) { }); listen( - this, getChangeEventType(UNITS), + this, getChangeEventType(UNITS_PROP), this.handleUnitsChanged_, this); - this.setUnits(/** @type {module:ol/control/ScaleLineUnits~ScaleLineUnits} */ (options.units) || - ScaleLineUnits.METRIC); + this.setUnits(/** @type {module:ol/control/ScaleLine~Units} */ (options.units) || + Units.METRIC); }; @@ -123,13 +135,13 @@ inherits(ScaleLine, Control); /** * Return the units to use in the scale line. - * @return {module:ol/control/ScaleLineUnits~ScaleLineUnits|undefined} The units + * @return {module:ol/control/ScaleLine~Units|undefined} The units * to use in the scale line. * @observable * @api */ ScaleLine.prototype.getUnits = function() { - return /** @type {module:ol/control/ScaleLineUnits~ScaleLineUnits|undefined} */ (this.get(UNITS)); + return /** @type {module:ol/control/ScaleLine~Units|undefined} */ (this.get(UNITS_PROP)); }; @@ -160,12 +172,12 @@ ScaleLine.prototype.handleUnitsChanged_ = function() { /** * Set the units to use in the scale line. - * @param {module:ol/control/ScaleLineUnits~ScaleLineUnits} units The units to use in the scale line. + * @param {module:ol/control/ScaleLine~Units} units The units to use in the scale line. * @observable * @api */ ScaleLine.prototype.setUnits = function(units) { - this.set(UNITS, units); + this.set(UNITS_PROP, units); }; @@ -186,21 +198,21 @@ ScaleLine.prototype.updateElement_ = function() { const center = viewState.center; const projection = viewState.projection; const units = this.getUnits(); - const pointResolutionUnits = units == ScaleLineUnits.DEGREES ? - Units.DEGREES : - Units.METERS; + const pointResolutionUnits = units == Units.DEGREES ? + ProjUnits.DEGREES : + ProjUnits.METERS; let pointResolution = getPointResolution(projection, viewState.resolution, center, pointResolutionUnits); - if (projection.getUnits() != Units.DEGREES && projection.getMetersPerUnit() - && pointResolutionUnits == Units.METERS) { + if (projection.getUnits() != ProjUnits.DEGREES && projection.getMetersPerUnit() + && pointResolutionUnits == ProjUnits.METERS) { pointResolution *= projection.getMetersPerUnit(); } let nominalCount = this.minWidth_ * pointResolution; let suffix = ''; - if (units == ScaleLineUnits.DEGREES) { - const metersPerDegree = METERS_PER_UNIT[Units.DEGREES]; - if (projection.getUnits() == Units.DEGREES) { + if (units == Units.DEGREES) { + const metersPerDegree = METERS_PER_UNIT[ProjUnits.DEGREES]; + if (projection.getUnits() == ProjUnits.DEGREES) { nominalCount *= metersPerDegree; } else { pointResolution /= metersPerDegree; @@ -214,7 +226,7 @@ ScaleLine.prototype.updateElement_ = function() { } else { suffix = '\u00b0'; // degrees } - } else if (units == ScaleLineUnits.IMPERIAL) { + } else if (units == Units.IMPERIAL) { if (nominalCount < 0.9144) { suffix = 'in'; pointResolution /= 0.0254; @@ -225,10 +237,10 @@ ScaleLine.prototype.updateElement_ = function() { suffix = 'mi'; pointResolution /= 1609.344; } - } else if (units == ScaleLineUnits.NAUTICAL) { + } else if (units == Units.NAUTICAL) { pointResolution /= 1852; suffix = 'nm'; - } else if (units == ScaleLineUnits.METRIC) { + } else if (units == Units.METRIC) { if (nominalCount < 0.001) { suffix = 'μm'; pointResolution *= 1000000; @@ -241,7 +253,7 @@ ScaleLine.prototype.updateElement_ = function() { suffix = 'km'; pointResolution /= 1000; } - } else if (units == ScaleLineUnits.US) { + } else if (units == Units.US) { if (nominalCount < 0.9144) { suffix = 'in'; pointResolution *= 39.37; diff --git a/src/ol/control/ScaleLineUnits.js b/src/ol/control/ScaleLineUnits.js deleted file mode 100644 index 5f43f5c937..0000000000 --- a/src/ol/control/ScaleLineUnits.js +++ /dev/null @@ -1,16 +0,0 @@ -/** - * @module ol/control/ScaleLineUnits - */ - -/** - * Units for the scale line. Supported values are `'degrees'`, `'imperial'`, - * `'nautical'`, `'metric'`, `'us'`. - * @enum {string} - */ -export default { - DEGREES: 'degrees', - IMPERIAL: 'imperial', - NAUTICAL: 'nautical', - METRIC: 'metric', - US: 'us' -}; From 497cb1dc44ca91dedf993f152457a88c2cc2588e Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Mon, 23 Apr 2018 10:42:21 -0600 Subject: [PATCH 2/2] Re-export controls from ol/controls --- examples/attributions.js | 3 +-- examples/custom-controls.js | 3 +-- examples/epsg-4326.js | 3 +-- examples/full-screen-drag-rotate-and-zoom.js | 3 +-- examples/full-screen-source.js | 3 +-- examples/full-screen.js | 3 +-- examples/navigation-controls.js | 3 +-- examples/overviewmap-custom.js | 3 +-- examples/overviewmap.js | 3 +-- examples/scale-line.js | 3 +-- examples/scaleline-indiana-east.js | 2 +- examples/wms-custom-proj.js | 3 +-- examples/wms-image-custom-proj.js | 3 +-- examples/zoomslider.js | 2 +- package.json | 3 ++- src/ol/control.js | 10 ++++++++++ 16 files changed, 26 insertions(+), 27 deletions(-) diff --git a/examples/attributions.js b/examples/attributions.js index 731eabbbab..360a918917 100644 --- a/examples/attributions.js +++ b/examples/attributions.js @@ -1,7 +1,6 @@ import Map from '../src/ol/Map.js'; import View from '../src/ol/View.js'; -import {defaults as defaultControls} from '../src/ol/control.js'; -import Attribution from '../src/ol/control/Attribution.js'; +import {defaults as defaultControls, Attribution} from '../src/ol/control.js'; import TileLayer from '../src/ol/layer/Tile.js'; import OSM from '../src/ol/source/OSM.js'; diff --git a/examples/custom-controls.js b/examples/custom-controls.js index 2516619362..3d0e9eb2de 100644 --- a/examples/custom-controls.js +++ b/examples/custom-controls.js @@ -1,8 +1,7 @@ import {inherits} from '../src/ol/index.js'; import Map from '../src/ol/Map.js'; import View from '../src/ol/View.js'; -import {defaults as defaultControls} from '../src/ol/control.js'; -import Control from '../src/ol/control/Control.js'; +import {defaults as defaultControls, Control} from '../src/ol/control.js'; import TileLayer from '../src/ol/layer/Tile.js'; import OSM from '../src/ol/source/OSM.js'; diff --git a/examples/epsg-4326.js b/examples/epsg-4326.js index 02d58dbf8f..86cf815629 100644 --- a/examples/epsg-4326.js +++ b/examples/epsg-4326.js @@ -1,7 +1,6 @@ import Map from '../src/ol/Map.js'; import View from '../src/ol/View.js'; -import {defaults as defaultControls} from '../src/ol/control.js'; -import ScaleLine from '../src/ol/control/ScaleLine.js'; +import {defaults as defaultControls, ScaleLine} from '../src/ol/control.js'; import TileLayer from '../src/ol/layer/Tile.js'; import TileWMS from '../src/ol/source/TileWMS.js'; diff --git a/examples/full-screen-drag-rotate-and-zoom.js b/examples/full-screen-drag-rotate-and-zoom.js index ff83c11a19..3fd21bc0b9 100644 --- a/examples/full-screen-drag-rotate-and-zoom.js +++ b/examples/full-screen-drag-rotate-and-zoom.js @@ -1,7 +1,6 @@ import Map from '../src/ol/Map.js'; import View from '../src/ol/View.js'; -import {defaults as defaultControls} from '../src/ol/control.js'; -import FullScreen from '../src/ol/control/FullScreen.js'; +import {defaults as defaultControls, FullScreen} from '../src/ol/control.js'; import {defaults as defaultInteractions} from '../src/ol/interaction.js'; import DragRotateAndZoom from '../src/ol/interaction/DragRotateAndZoom.js'; import TileLayer from '../src/ol/layer/Tile.js'; diff --git a/examples/full-screen-source.js b/examples/full-screen-source.js index 639690a167..ef2f46b068 100644 --- a/examples/full-screen-source.js +++ b/examples/full-screen-source.js @@ -1,7 +1,6 @@ import Map from '../src/ol/Map.js'; import View from '../src/ol/View.js'; -import {defaults as defaultControls} from '../src/ol/control.js'; -import FullScreen from '../src/ol/control/FullScreen.js'; +import {defaults as defaultControls, FullScreen} from '../src/ol/control.js'; import TileLayer from '../src/ol/layer/Tile.js'; import OSM from '../src/ol/source/OSM.js'; diff --git a/examples/full-screen.js b/examples/full-screen.js index 34b8ef862c..0cea3790b3 100644 --- a/examples/full-screen.js +++ b/examples/full-screen.js @@ -1,7 +1,6 @@ import Map from '../src/ol/Map.js'; import View from '../src/ol/View.js'; -import {defaults as defaultControls} from '../src/ol/control.js'; -import FullScreen from '../src/ol/control/FullScreen.js'; +import {defaults as defaultControls, FullScreen} from '../src/ol/control.js'; import TileLayer from '../src/ol/layer/Tile.js'; import BingMaps from '../src/ol/source/BingMaps.js'; diff --git a/examples/navigation-controls.js b/examples/navigation-controls.js index 2cacb2f0d9..30697b5058 100644 --- a/examples/navigation-controls.js +++ b/examples/navigation-controls.js @@ -1,7 +1,6 @@ import Map from '../src/ol/Map.js'; import View from '../src/ol/View.js'; -import {defaults as defaultControls} from '../src/ol/control.js'; -import ZoomToExtent from '../src/ol/control/ZoomToExtent.js'; +import {defaults as defaultControls, ZoomToExtent} from '../src/ol/control.js'; import TileLayer from '../src/ol/layer/Tile.js'; import OSM from '../src/ol/source/OSM.js'; diff --git a/examples/overviewmap-custom.js b/examples/overviewmap-custom.js index bf525d8059..55a4490d83 100644 --- a/examples/overviewmap-custom.js +++ b/examples/overviewmap-custom.js @@ -1,7 +1,6 @@ import Map from '../src/ol/Map.js'; import View from '../src/ol/View.js'; -import {defaults as defaultControls} from '../src/ol/control.js'; -import OverviewMap from '../src/ol/control/OverviewMap.js'; +import {defaults as defaultControls, OverviewMap} from '../src/ol/control.js'; import {defaults as defaultInteractions} from '../src/ol/interaction.js'; import DragRotateAndZoom from '../src/ol/interaction/DragRotateAndZoom.js'; import TileLayer from '../src/ol/layer/Tile.js'; diff --git a/examples/overviewmap.js b/examples/overviewmap.js index 936bb90c06..5aad00acaf 100644 --- a/examples/overviewmap.js +++ b/examples/overviewmap.js @@ -1,7 +1,6 @@ import Map from '../src/ol/Map.js'; import View from '../src/ol/View.js'; -import {defaults as defaultControls} from '../src/ol/control.js'; -import OverviewMap from '../src/ol/control/OverviewMap.js'; +import {defaults as defaultControls, OverviewMap} from '../src/ol/control.js'; import TileLayer from '../src/ol/layer/Tile.js'; import OSM from '../src/ol/source/OSM.js'; diff --git a/examples/scale-line.js b/examples/scale-line.js index 8a124641be..8fb8407153 100644 --- a/examples/scale-line.js +++ b/examples/scale-line.js @@ -1,7 +1,6 @@ import Map from '../src/ol/Map.js'; import View from '../src/ol/View.js'; -import {defaults as defaultControls} from '../src/ol/control.js'; -import ScaleLine from '../src/ol/control/ScaleLine.js'; +import {defaults as defaultControls, ScaleLine} from '../src/ol/control.js'; import TileLayer from '../src/ol/layer/Tile.js'; import OSM from '../src/ol/source/OSM.js'; diff --git a/examples/scaleline-indiana-east.js b/examples/scaleline-indiana-east.js index d5a525baaa..b0c2aa3f07 100644 --- a/examples/scaleline-indiana-east.js +++ b/examples/scaleline-indiana-east.js @@ -1,6 +1,6 @@ import Map from '../src/ol/Map.js'; import View from '../src/ol/View.js'; -import ScaleLine from '../src/ol/control/ScaleLine.js'; +import {ScaleLine} from '../src/ol/control.js'; import TileLayer from '../src/ol/layer/Tile.js'; import {fromLonLat, transformExtent} from '../src/ol/proj.js'; import {register} from '../src/ol/proj/proj4.js'; diff --git a/examples/wms-custom-proj.js b/examples/wms-custom-proj.js index 8f80e487de..7b5d09c134 100644 --- a/examples/wms-custom-proj.js +++ b/examples/wms-custom-proj.js @@ -1,7 +1,6 @@ import Map from '../src/ol/Map.js'; import View from '../src/ol/View.js'; -import {defaults as defaultControls} from '../src/ol/control.js'; -import ScaleLine from '../src/ol/control/ScaleLine.js'; +import {defaults as defaultControls, ScaleLine} from '../src/ol/control.js'; import TileLayer from '../src/ol/layer/Tile.js'; import {addProjection, addCoordinateTransforms, transform} from '../src/ol/proj.js'; import Projection from '../src/ol/proj/Projection.js'; diff --git a/examples/wms-image-custom-proj.js b/examples/wms-image-custom-proj.js index 680deb20a3..9637b5d357 100644 --- a/examples/wms-image-custom-proj.js +++ b/examples/wms-image-custom-proj.js @@ -1,7 +1,6 @@ import Map from '../src/ol/Map.js'; import View from '../src/ol/View.js'; -import {defaults as defaultControls} from '../src/ol/control.js'; -import ScaleLine from '../src/ol/control/ScaleLine.js'; +import {defaults as defaultControls, ScaleLine} from '../src/ol/control.js'; import ImageLayer from '../src/ol/layer/Image.js'; import {fromLonLat} from '../src/ol/proj.js'; import Projection from '../src/ol/proj/Projection.js'; diff --git a/examples/zoomslider.js b/examples/zoomslider.js index 0bfe6ded26..3505ba58a0 100644 --- a/examples/zoomslider.js +++ b/examples/zoomslider.js @@ -1,6 +1,6 @@ import Map from '../src/ol/Map.js'; import View from '../src/ol/View.js'; -import ZoomSlider from '../src/ol/control/ZoomSlider.js'; +import {ZoomSlider} from '../src/ol/control.js'; import TileLayer from '../src/ol/layer/Tile.js'; import OSM from '../src/ol/source/OSM.js'; diff --git a/package.json b/package.json index ef417cad92..0e26704ba5 100644 --- a/package.json +++ b/package.json @@ -84,5 +84,6 @@ }, "eslintConfig": { "extends": "openlayers" - } + }, + "sideEffects": false } diff --git a/src/ol/control.js b/src/ol/control.js index 4d57331f29..30c7edd78b 100644 --- a/src/ol/control.js +++ b/src/ol/control.js @@ -6,6 +6,16 @@ import Attribution from './control/Attribution.js'; import Rotate from './control/Rotate.js'; import Zoom from './control/Zoom.js'; +export {default as Attribution} from './control/Attribution.js'; +export {default as Control} from './control/Control.js'; +export {default as FullScreen} from './control/FullScreen.js'; +export {default as OverviewMap} from './control/OverviewMap.js'; +export {default as Rotate} from './control/Rotate.js'; +export {default as ScaleLine} from './control/ScaleLine.js'; +export {default as Zoom} from './control/Zoom.js'; +export {default as ZoomSlider} from './control/ZoomSlider.js'; +export {default as ZoomToExtent} from './control/ZoomToExtent.js'; + /** * @typedef {Object} DefaultsOptions