Fix private scope type issues in controls

This commit is contained in:
Andreas Hocevar
2020-04-13 12:07:16 +02:00
parent b0f20d6bd6
commit f4d64700ef
8 changed files with 97 additions and 102 deletions

View File

@@ -49,7 +49,7 @@ class Attribution extends Control {
super({
element: document.createElement('div'),
render: options.render || render,
render: options.render,
target: options.target,
});
@@ -328,15 +328,15 @@ class Attribution extends Control {
getCollapsed() {
return this.collapsed_;
}
}
/**
* Update the attribution element.
* @param {import("../MapEvent.js").default} mapEvent Map event.
* @this {Attribution}
* @override
*/
export function render(mapEvent) {
render(mapEvent) {
this.updateElement_(mapEvent.frameState);
}
}
export default Attribution;

View File

@@ -74,11 +74,9 @@ class Control extends BaseObject {
*/
this.listenerKeys = [];
/**
* @private
* @type {function(import("../MapEvent.js").default): void}
*/
this.render_ = options.render ? options.render : VOID;
if (options.render) {
this.render = options.render;
}
if (options.target) {
this.setTarget(options.target);
@@ -133,14 +131,11 @@ class Control extends BaseObject {
}
/**
* Update the projection. Rendering of the coordinates is done in
* `handleMouseMove` and `handleMouseUp`.
* Renders the control.
* @param {import("../MapEvent.js").default} mapEvent Map event.
* @api
*/
render(mapEvent) {
this.render_.call(this, mapEvent);
}
render(mapEvent) {}
/**
* This function is used to set a target element for the control. It has no

View File

@@ -66,7 +66,7 @@ class MousePosition extends Control {
super({
element: element,
render: options.render || render,
render: options.render,
target: options.target,
});
@@ -251,15 +251,14 @@ class MousePosition extends Control {
this.renderedHTML_ = html;
}
}
}
/**
* Update the projection. Rendering of the coordinates is done in
* `handleMouseMove` and `handleMouseUp`.
* @param {import("../MapEvent.js").default} mapEvent Map event.
* @this {MousePosition}
* @override
*/
export function render(mapEvent) {
render(mapEvent) {
const frameState = mapEvent.frameState;
if (!frameState) {
this.mapProjection_ = null;
@@ -270,5 +269,6 @@ export function render(mapEvent) {
}
}
}
}
export default MousePosition;

View File

@@ -81,7 +81,7 @@ class OverviewMap extends Control {
super({
element: document.createElement('div'),
render: options.render || render,
render: options.render,
target: options.target,
});
@@ -644,16 +644,16 @@ class OverviewMap extends Control {
getOverviewMap() {
return this.ovmap_;
}
}
/**
* Update the overview map element.
* @param {import("../MapEvent.js").default} mapEvent Map event.
* @this {OverviewMap}
* @override
*/
export function render(mapEvent) {
render(mapEvent) {
this.validateExtent_();
this.updateBox_();
}
}
export default OverviewMap;

View File

@@ -39,7 +39,7 @@ class Rotate extends Control {
super({
element: document.createElement('div'),
render: options.render || render,
render: options.render,
target: options.target,
});
@@ -145,14 +145,13 @@ class Rotate extends Control {
}
}
}
}
/**
* Update the rotate control element.
* @param {import("../MapEvent.js").default} mapEvent Map event.
* @this {Rotate}
* @override
*/
export function render(mapEvent) {
render(mapEvent) {
const frameState = mapEvent.frameState;
if (!frameState) {
return;
@@ -172,5 +171,6 @@ export function render(mapEvent) {
}
this.rotation_ = rotation;
}
}
export default Rotate;

View File

@@ -87,7 +87,7 @@ class ScaleLine extends Control {
super({
element: document.createElement('div'),
render: options.render || render,
render: options.render,
target: options.target,
});
@@ -471,14 +471,13 @@ class ScaleLine extends Control {
const inchesPerMeter = 39.37;
return parseFloat(resolution.toString()) * mpu * inchesPerMeter * dpi;
}
}
/**
* Update the scale line element.
* @param {import("../MapEvent.js").default} mapEvent Map event.
* @this {ScaleLine}
* @override
*/
export function render(mapEvent) {
render(mapEvent) {
const frameState = mapEvent.frameState;
if (!frameState) {
this.viewState_ = null;
@@ -487,5 +486,6 @@ export function render(mapEvent) {
}
this.updateElement_();
}
}
export default ScaleLine;

View File

@@ -49,7 +49,7 @@ class ZoomSlider extends Control {
super({
element: document.createElement('div'),
render: options.render || render,
render: options.render,
});
/**
@@ -356,14 +356,13 @@ class ZoomSlider extends Control {
const fn = this.getMap().getView().getValueForResolutionFunction();
return clamp(1 - fn(res), 0, 1);
}
}
/**
* Update the zoomslider element.
* @param {import("../MapEvent.js").default} mapEvent Map event.
* @this {ZoomSlider}
* @override
*/
export function render(mapEvent) {
render(mapEvent) {
if (!mapEvent.frameState) {
return;
}
@@ -374,5 +373,6 @@ export function render(mapEvent) {
this.currentResolution_ = res;
this.setThumbPosition_(res);
}
}
export default ZoomSlider;

View File

@@ -1,6 +1,6 @@
import Map from '../../../../src/ol/Map.js';
import Projection from '../../../../src/ol/proj/Projection.js';
import ScaleLine, {render} from '../../../../src/ol/control/ScaleLine.js';
import ScaleLine from '../../../../src/ol/control/ScaleLine.js';
import View from '../../../../src/ol/View.js';
import proj4 from 'proj4';
import {
@@ -82,14 +82,14 @@ describe('ol.control.ScaleLine', function () {
describe('render', function () {
it('defaults to `ol.control.ScaleLine.render`', function () {
const ctrl = new ScaleLine();
expect(ctrl.render_).to.be(render);
expect(ctrl.render).to.be(ScaleLine.prototype.render);
});
it('can be configured', function () {
const myRender = function () {};
const ctrl = new ScaleLine({
render: myRender,
});
expect(ctrl.render_).to.be(myRender);
expect(ctrl.render).to.be(myRender);
});
});
});