From e3f9e250ab83f6d2af2f09f63f6bdbdbb18301df Mon Sep 17 00:00:00 2001 From: Andreas Hocevar Date: Wed, 29 Jan 2020 14:04:52 +0100 Subject: [PATCH 1/2] Sort doc navigation properly and add missing modules --- config/jsdoc/api/template/publish.js | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/config/jsdoc/api/template/publish.js b/config/jsdoc/api/template/publish.js index 4bc6c21445..8e9304cbd7 100644 --- a/config/jsdoc/api/template/publish.js +++ b/config/jsdoc/api/template/publish.js @@ -188,6 +188,12 @@ function attachModuleSymbols(doclets, modules) { }); } +function getPrettyName(longname) { + return longname + .split('~')[0] + .replace('module:', ''); +} + /** * Create the navigation sidebar. * @param {object} members The members that will be used to create the sidebar. @@ -206,10 +212,12 @@ function buildNav(members) { // merge namespaces and classes, then sort const merged = members.modules.concat(members.classes); merged.sort(function(a, b) { - if (a.longname > b.longname) { + const prettyNameA = getPrettyName(a.longname).toLowerCase(); + const prettyNameB = getPrettyName(b.longname).toLowerCase(); + if (prettyNameA > prettyNameB) { return 1; } - if (a.longname < b.longname) { + if (prettyNameA < prettyNameB) { return -1; } return 0; @@ -221,9 +229,7 @@ function buildNav(members) { nav.push({ type: 'class', longname: v.longname, - prettyname: v.longname - .split('~')[0] - .replace('module:', ''), + prettyname: getPrettyName(v.longname), name: v.name, module: find({ kind: 'module', @@ -269,13 +275,11 @@ function buildNav(members) { memberof: v.longname }); // only add modules that have more to show than just a single class - if (classes.length !== 1 && (classes.length + members.length + methods.length + typedefs.length + events.length > 0)) { + if (!classes.length || classes.length - 1 + members.length + methods.length + typedefs.length + events.length > 0) { nav.push({ type: 'module', longname: v.longname, - prettyname: v.longname - .split('~')[0] - .replace('module:', ''), + prettyname: getPrettyName(v.longname), name: v.name, members: members, methods: methods, From f8f7f83be7a92944b8cfbd394c4b0e76362cfec0 Mon Sep 17 00:00:00 2001 From: Andreas Hocevar Date: Wed, 29 Jan 2020 17:33:04 +0100 Subject: [PATCH 2/2] Do not expose static render function of controls --- config/jsdoc/api/template/publish.js | 5 +++-- src/ol/control/Attribution.js | 1 - src/ol/control/Control.js | 13 ++++++++++++- src/ol/control/MousePosition.js | 1 - src/ol/control/OverviewMap.js | 1 - src/ol/control/Rotate.js | 1 - src/ol/control/ScaleLine.js | 1 - src/ol/control/ZoomSlider.js | 1 - test/spec/ol/control/scaleline.test.js | 4 ++-- 9 files changed, 17 insertions(+), 11 deletions(-) diff --git a/config/jsdoc/api/template/publish.js b/config/jsdoc/api/template/publish.js index 8e9304cbd7..5c40bb23ff 100644 --- a/config/jsdoc/api/template/publish.js +++ b/config/jsdoc/api/template/publish.js @@ -274,8 +274,9 @@ function buildNav(members) { kind: 'event', memberof: v.longname }); - // only add modules that have more to show than just a single class - if (!classes.length || classes.length - 1 + members.length + methods.length + typedefs.length + events.length > 0) { + // only add modules that have more to show than just classes + const numItems = classes.length - 1 + members.length + methods.length + typedefs.length + events.length; + if (!classes.length || (numItems > 0 && numItems !== classes.length)) { nav.push({ type: 'module', longname: v.longname, diff --git a/src/ol/control/Attribution.js b/src/ol/control/Attribution.js index 15a61f5318..f3409c829e 100644 --- a/src/ol/control/Attribution.js +++ b/src/ol/control/Attribution.js @@ -325,7 +325,6 @@ class Attribution extends Control { * Update the attribution element. * @param {import("../MapEvent.js").default} mapEvent Map event. * @this {Attribution} - * @api */ export function render(mapEvent) { this.updateElement_(mapEvent.frameState); diff --git a/src/ol/control/Control.js b/src/ol/control/Control.js index bcfd7f6ebd..2f03317507 100644 --- a/src/ol/control/Control.js +++ b/src/ol/control/Control.js @@ -79,9 +79,10 @@ class Control extends BaseObject { this.listenerKeys = []; /** + * @private * @type {function(import("../MapEvent.js").default): void} */ - this.render = options.render ? options.render : VOID; + this.render_ = options.render ? options.render : VOID; if (options.target) { this.setTarget(options.target); @@ -134,6 +135,16 @@ class Control extends BaseObject { } } + /** + * Update the projection. Rendering of the coordinates is done in + * `handleMouseMove` and `handleMouseUp`. + * @param {import("../MapEvent.js").default} mapEvent Map event. + * @api + */ + render(mapEvent) { + this.render_.call(this, mapEvent); + } + /** * This function is used to set a target element for the control. It has no * effect if it is called after the control has been added to the map (i.e. diff --git a/src/ol/control/MousePosition.js b/src/ol/control/MousePosition.js index e4f9aae624..3a2c017999 100644 --- a/src/ol/control/MousePosition.js +++ b/src/ol/control/MousePosition.js @@ -248,7 +248,6 @@ class MousePosition extends Control { * `handleMouseMove` and `handleMouseUp`. * @param {import("../MapEvent.js").default} mapEvent Map event. * @this {MousePosition} - * @api */ export function render(mapEvent) { const frameState = mapEvent.frameState; diff --git a/src/ol/control/OverviewMap.js b/src/ol/control/OverviewMap.js index 525bccdd22..5a83915198 100644 --- a/src/ol/control/OverviewMap.js +++ b/src/ol/control/OverviewMap.js @@ -603,7 +603,6 @@ class OverviewMap extends Control { * Update the overview map element. * @param {import("../MapEvent.js").default} mapEvent Map event. * @this {OverviewMap} - * @api */ export function render(mapEvent) { this.validateExtent_(); diff --git a/src/ol/control/Rotate.js b/src/ol/control/Rotate.js index f4dd50c54d..c4bdc237d3 100644 --- a/src/ol/control/Rotate.js +++ b/src/ol/control/Rotate.js @@ -151,7 +151,6 @@ class Rotate extends Control { * Update the rotate control element. * @param {import("../MapEvent.js").default} mapEvent Map event. * @this {Rotate} - * @api */ export function render(mapEvent) { const frameState = mapEvent.frameState; diff --git a/src/ol/control/ScaleLine.js b/src/ol/control/ScaleLine.js index 45c8ad3ff7..e0d7733ea3 100644 --- a/src/ol/control/ScaleLine.js +++ b/src/ol/control/ScaleLine.js @@ -418,7 +418,6 @@ class ScaleLine extends Control { * Update the scale line element. * @param {import("../MapEvent.js").default} mapEvent Map event. * @this {ScaleLine} - * @api */ export function render(mapEvent) { const frameState = mapEvent.frameState; diff --git a/src/ol/control/ZoomSlider.js b/src/ol/control/ZoomSlider.js index dcb8b4c223..58f2229d40 100644 --- a/src/ol/control/ZoomSlider.js +++ b/src/ol/control/ZoomSlider.js @@ -339,7 +339,6 @@ class ZoomSlider extends Control { * Update the zoomslider element. * @param {import("../MapEvent.js").default} mapEvent Map event. * @this {ZoomSlider} - * @api */ export function render(mapEvent) { if (!mapEvent.frameState) { diff --git a/test/spec/ol/control/scaleline.test.js b/test/spec/ol/control/scaleline.test.js index 954cc314b8..b88f4922e0 100644 --- a/test/spec/ol/control/scaleline.test.js +++ b/test/spec/ol/control/scaleline.test.js @@ -70,14 +70,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(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); }); });