Skip to content

Commit

Permalink
Fix types in message
Browse files Browse the repository at this point in the history
  • Loading branch information
sbrunner committed Jan 25, 2019
1 parent 2ceaa8c commit 4ceb878
Show file tree
Hide file tree
Showing 15 changed files with 149 additions and 152 deletions.
4 changes: 2 additions & 2 deletions contribs/gmf/src/controllers/AbstractAppController.js
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,8 @@ import gmfThemeThemes from 'gmf/theme/Themes.js';
* @property {number} [geolocationZoom]
* @property {string} [autorotate]
* @property {olx.ViewOptions} [mapViewConfig]
* @property {import("ol/Collection.js").default.<import("ol/control/Contrimport("ol/js.js").default").default>|Array.<import("ol/control/Contrimport("ol/js.js").default").default>} [mapControls]
* @property {import("ol/Collection.js").default.<import("ol/interaction/Interaction.js").default>|Array.<import("ol/interaction/Interaction.js").default>} [mapInteractions]
* @property {import("ol/Collection.js").default.<import('ol/control/Control.js').default>|Array.<import('ol/control/Control.js').default>} [mapControls]
* @property {import("ol/Collection.js").default.<import('"ol/interaction/Interaction.js').default>|Array.<import('ol/interaction/Interaction.js').default>} [mapInteractions]
* @property {number} [mapPixelRatio]
* }} Config
*/
Expand Down
5 changes: 1 addition & 4 deletions examples/control.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
/**
*/

import './control.css';
import angular from 'angular';
import ngeoMapModule from 'ngeo/map/module.js';
Expand Down Expand Up @@ -45,7 +42,7 @@ function MainController() {
});

/**
* @type {import("ol/control/Contrimport("ol/js.js").default").default}
* @type {import('ol/control/Control.js').default").default}
* @export
*/
this.control = new olControlMousePosition({
Expand Down
4 changes: 4 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,11 @@
"@openlayers/eslint-plugin": "4.0.0-beta.2",
"@types/angular": "1.6.53",
"@types/angular-gettext": "2.1.34",
"@types/bootstrap": "^4.2.1",
"@types/cesium": "1.47.3",
"@types/d3": "5.7.0",
"@types/jquery": "3.3.29",
"@types/jquery.ui.datetimepicker": "^0.3.29",
"@types/jqueryui": "1.12.6",
"@types/proj4": "2.5.0",
"@types/typeahead": "0.11.32",
Expand Down Expand Up @@ -79,6 +81,7 @@
"fs-extra": "7.0.1",
"html-webpack-include-assets-plugin": "1.0.6",
"html-webpack-plugin": "3.2.0",
"install": "^0.12.2",
"istanbul-instrumenter-loader": "3.0.1",
"jasmine-core": "3.3.0",
"jquery": "3.3.1",
Expand All @@ -100,6 +103,7 @@
"moment": "2.22.2",
"node-sass": "4.11.0",
"node-sass-importer": "1.0.0",
"npm": "^6.7.0",
"ol": "5.3.0",
"ol-cesium": "2.6.0",
"phantomjs-polyfill-string-includes": "1.0.0",
Expand Down
28 changes: 15 additions & 13 deletions src/message/Disclaimer.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ class Disclaimer extends ngeoMessageMessage {
/**
* @param {angular.ISCEService} $sce Angular sce service.
* @param {angular.gettext.gettextCatalog} gettextCatalog Gettext service.
* @param {PopupFactory} ngeoCreatePopup Popup service.
* @param {import('ngeo/message/Popup.js').PopupFactory} ngeoCreatePopup Popup service.
* @ngInject
*/
constructor($sce, gettextCatalog, ngeoCreatePopup) {
Expand All @@ -35,7 +35,7 @@ class Disclaimer extends ngeoMessageMessage {

/**
* @private
* @type {PopupFactory}
* @type {import('ngeo/message/Popup.js').PopupFactory}
*/
this.createPopup_ = ngeoCreatePopup;

Expand All @@ -52,7 +52,7 @@ class Disclaimer extends ngeoMessageMessage {

/**
* Cache of messages.
* @type {Object.<string, JQuery|import("ngeo/message/Popup.js").default>}
* @type {Object.<string, JQuery|import("ngeo/message/Popup.js").MessagePopup>}
* @private
*/
this.messages_ = {};
Expand All @@ -61,7 +61,7 @@ class Disclaimer extends ngeoMessageMessage {
/**
* Show disclaimer message string or object or list of disclaimer message
* strings or objects.
* @param {string|Array.<string>|Message|Array.<Message>}
* @param {string|import('ngeo/message/Message.js').Message|Array.<string|import('ngeo/message/Message.js').Message>}
* object A message or list of messages as text or configuration objects.
* @export
*/
Expand All @@ -72,7 +72,7 @@ class Disclaimer extends ngeoMessageMessage {
/**
* Close disclaimer message string or object or list of disclaimer message
* strings or objects.
* @param {string|Array.<string>|Message|Array.<Message>}
* @param {string|import('ngeo/message/Message.js').Message|Array.<string|import('ngeo/message/Message.js').Message>}
* object A message or list of messages as text or configuration objects.
* @export
*/
Expand All @@ -83,14 +83,14 @@ class Disclaimer extends ngeoMessageMessage {

/**
* Show the message.
* @param {Message} message Message.
* @param {import('ngeo/message/Message.js').Message} message Message.
* @protected
* @override
*/
showMessage(message) {
const gettextCatalog = this.gettextCatalog_;
const type = message.type;
console.assert(typeof type, 'Type should be set.' == 'string');
console.assert(typeof type == 'string', 'Type should be set.');

// No need to do anything if message already exist.
const uid = this.getMessageUid_(message);
Expand Down Expand Up @@ -169,7 +169,7 @@ class Disclaimer extends ngeoMessageMessage {
}

/**
* @param {Message} message Message.
* @param {import('ngeo/message/Message.js').Message} message Message.
* @return {string} The uid.
* @private
*/
Expand All @@ -179,7 +179,7 @@ class Disclaimer extends ngeoMessageMessage {

/**
* Close the message.
* @param {Message} message Message.
* @param {import('ngeo/message/Message.js').Message} message Message.
* @protected
*/
closeMessage_(message) {
Expand All @@ -194,14 +194,16 @@ class Disclaimer extends ngeoMessageMessage {
// (2) Close message (popup or alert)
if (obj instanceof MessagePopup) {
// (2.1) Close popup, if not already closed
if (obj.getOpen()) {
obj.setOpen(false);
const mpObj = /** @type {MessagePopup} */(obj);
if (mpObj.getOpen()) {
mpObj.setOpen(false);
}
} else {
// (2.2) Check if the message hasn't been closed using the UI, i.e. by
// clicking the close button. If not, then close it.
if (obj.hasClass('show')) {
obj.alert('close');
const jqueryObj = /** @type {JQuery} */(obj);
if (jqueryObj.hasClass('show')) {
jqueryObj.alert('close');
}
}

Expand Down
208 changes: 100 additions & 108 deletions src/message/Message.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,123 +45,115 @@ export const MessageType = {
* @constructor
* @abstract
*/
function Message() {}


/**
* Show the message.
*
* @abstract
* @param {Message} message Message.
* @protected
*/
Message.prototype.showMessage = function(message) {};


/**
* Show disclaimer message string or object or list of disclame message
* strings or objects.
*
* @param {string|Array.<string>|Message|Array.<Message>}
* object A message or list of messages as text or configuration objects.
* @export
*/
Message.prototype.show = function(object) {
const msgObjects = this.getMessageObjects(object);
msgObjects.forEach(this.showMessage, this);
};


/**
* Display the given error message or list of error messages.
*
* @param {string|Array.<string>} message Message or list of messages.
* @export
*/
Message.prototype.error = function(message) {
this.show(this.getMessageObjects(message, MessageType.ERROR));
};


/**
* Display the given info message or list of info messages.
* @param {string|Array.<string>} message Message or list of messages.
* @export
*/
Message.prototype.info = function(message) {
this.show(this.getMessageObjects(message, MessageType.INFORMATION));
};
export default class {
constructor() {}

/**
* Show the message.
*
* @abstract
* @param {Message} message Message.
* @protected
*/
showMessage(message) {}

/**
* Display the given success message or list of success messages.
* @param {string|Array.<string>} message Message or list of messages.
* @export
*/
Message.prototype.success = function(message) {
this.show(this.getMessageObjects(message, MessageType.SUCCESS));
};
/**
* Show disclaimer message string or object or list of disclame message
* strings or objects.
*
* @param {string|Message|Array<string|Message>}
* object A message or list of messages as text or configuration objects.
* @export
*/
show(object) {
const msgObjects = this.getMessageObjects(object);
msgObjects.forEach(this.showMessage, this);
}

/**
* Display the given error message or list of error messages.
*
* @param {string|Array.<string>} message Message or list of messages.
* @export
*/
error(message) {
this.show(this.getMessageObjects(message, MessageType.ERROR));
}

/**
* Display the given warning message or list of warning messages.
* @param {string|Array.<string>} message Message or list of messages.
* @export
*/
Message.prototype.warn = function(message) {
this.show(this.getMessageObjects(message, MessageType.WARNING));
};
/**
* Display the given info message or list of info messages.
* @param {string|Array.<string>} message Message or list of messages.
* @export
*/
info(message) {
this.show(this.getMessageObjects(message, MessageType.INFORMATION));
}

/**
* Display the given success message or list of success messages.
* @param {string|Array.<string>} message Message or list of messages.
* @export
*/
success(message) {
this.show(this.getMessageObjects(message, MessageType.SUCCESS));
}

/**
* Returns an array of message object from any given message string, list of
* message strings, message object or list message objects. The type can be
* overridden here as well OR defined (if the message(s) is/are string(s),
* defaults to 'information').
* @param {string|Array.<string>|Message|Array.<Message>}
* object A message or list of messages as text or configuration objects.
* @param {string=} opt_type The type of message to override the messages with.
* @return {Array.<Message>} List of message objects.
* @protected
*/
Message.prototype.getMessageObjects = function(object, opt_type) {
const msgObjects = [];
let msgObject = null;
const defaultType = MessageType.INFORMATION;
/**
* Display the given warning message or list of warning messages.
* @param {string|Array.<string>} message Message or list of messages.
* @export
*/
warn(message) {
this.show(this.getMessageObjects(message, MessageType.WARNING));
}

if (typeof object === 'string') {
msgObjects.push({
msg: object,
type: opt_type !== undefined ? opt_type : defaultType
});
} else if (Array.isArray(object)) {
object.forEach((msg) => {
if (typeof object === 'string') {
msgObject = {
msg: msg,
type: opt_type !== undefined ? opt_type : defaultType
};
} else {
msgObject = msg;
if (opt_type !== undefined) {
msgObject.type = opt_type;
/**
* Returns an array of message object from any given message string, list of
* message strings, message object or list message objects. The type can be
* overridden here as well OR defined (if the message(s) is/are string(s),
* defaults to 'information').
* @param {string|Message|Array<string|Message>}
* object A message or list of messages as text or configuration objects.
* @param {string=} opt_type The type of message to override the messages with.
* @return {Array<Message>} List of message objects.
* @protected
*/
getMessageObjects(object, opt_type) {
/** @type {Array<Message>} */
const msgObjects = [];
const defaultType = MessageType.INFORMATION;

if (typeof object === 'string') {
msgObjects.push({
msg: /** @type {string} */(object),
type: opt_type !== undefined ? opt_type : defaultType
});
} else if (Array.isArray(object)) {
/** @type {Array<string|Message>} */(object).forEach((msg) => {
if (typeof object === 'string') {
msgObjects.push({
msg: /** @type {string} */(msg),
type: opt_type !== undefined ? opt_type : defaultType
});
} else {
const msgObject = /** @type {Message} */(msg);
if (opt_type !== undefined) {
msgObject.type = opt_type;
}
msgObjects.push(msgObject);
}
});
} else {
const msgObject = /** @type {Message} */(object);
if (opt_type !== undefined) {
msgObject.type = opt_type;
}
if (msgObject.type === undefined) {
msgObject.type = defaultType;
}
msgObjects.push(msgObject);
}, this);
} else {
msgObject = object;
if (opt_type !== undefined) {
msgObject.type = opt_type;
}
if (msgObject.type === undefined) {
msgObject.type = defaultType;
}
msgObjects.push(msgObject);
}

return msgObjects;
};


export default Message;
return msgObjects;
}
}
4 changes: 2 additions & 2 deletions src/message/Notification.js
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ class Notification extends ngeoMessageMessage {
/**
* Display the given message string or object or list of message strings or
* objects.
* @param {string|Array.<string>|Message|Array.<Message>}
* @param {string|Array.<string>|import('ngeo/message/Message.js').Message|Array.<import('ngeo/message/Message.js').Message>}
* object A message or list of messages as text or configuration objects.
* @export
*/
Expand All @@ -79,7 +79,7 @@ class Notification extends ngeoMessageMessage {
*/
showMessage(message) {
const type = message.type;
console.assert(typeof type, 'Type should be set.' == 'string');
console.assert(typeof type == 'string', 'Type should be set.');

const classNames = ['alert', 'fade', 'show'];
switch (type) {
Expand Down

0 comments on commit 4ceb878

Please sign in to comment.