geoportal-access-lib
Version:
French Geoportal resources access library
125 lines (111 loc) • 3.27 kB
JavaScript
/**
* Classe utilitaire
*
* @module Helper
* @alias Gp.Helper
*/
var Helper = {
/**
* concatenation des parametres key/value dans les urls
*
* @method normalyzeParameters
* @static
* @param {Object} params - tableau de clef/valeur
*
* @example
* Gp.Utils.Helper.normalyzeParameters ({
* key1:value1,
* key2:value2,
* key3:value3
* });
* // out : "key1=value1&key2=value2&key3=value3"
*
* @returns {String} retourne les paramètres concaténés
*/
normalyzeParameters : function (params) {
var myParams = null;
if (params) {
var tabParams = [];
for (var key in params) {
if (params.hasOwnProperty(key)) {
var value = params[key];
if (!value) {
value = "";
}
tabParams.push(key + "=" + value);
}
}
myParams = tabParams.join("&");
}
return myParams;
},
/**
* Concaténation et encodage des urls.
*
* @method normalyzeUrl
* @static
* @param {String} url - url
* @param {Object|String} params - tableau de clef/valeur ou string
* @param {Boolean} encode - true|false, false par defaut
*
* @example
* Gp.Utils.Helper.normalyzeUrl (url, {
* key1:value1,
* key2=:value2,
* key3:value3
* });
* // out : "url?key1=value1&key2=value2&key3=value3"
*
* @returns {String} retourne une url normalisée
*/
normalyzeUrl : function (url, params, encode) {
var myUrl = url;
if (url) {
if (url.split("?").length - 1 >= 2) {
// S'il y a plusieurs "?" dans l'URL, on garde le premier et on remplace les autres par des &
var firstOccuranceIndex = url.search(/\?/) + 1;
myUrl = url.substring(0, firstOccuranceIndex) + url.slice(firstOccuranceIndex).replace(/\?/g, "&");
}
var k = url.indexOf("?");
if (k === -1) { // pas de ? et KVP
myUrl += "?";
}
if (k !== -1 && k !== url.length - 1) { // KVP
myUrl += "&";
}
}
if (params) {
if (typeof params === "string") {
params = params.replace("?", "");
myUrl += params;
} else {
myUrl += this.normalyzeParameters(params);
}
}
if (encode) {
// FIXME bonne idée ?
myUrl = encodeURIComponent(myUrl);
}
return myUrl;
},
/**
* Indentation d'une chaine
*
* @method indent
* @static
* @param {Number} n - nombre de tabulation
* @param {String} msg - chaine
*
* @example
* Gp.Utils.Helper.indent (2, "message à indenter")
* // out
* // ........message à indenter
*
* @returns {String} retourne une chaine indentée
*/
indent : function (n, msg) {
var num = n || 0;
return new Array(num + 1).join("\t") + msg;
}
};
export default Helper;