OpenDroneMap-WebODM/app/static/app/js/classes/Utils.js

55 wiersze
1.4 KiB
JavaScript

let escapeEntityMap = {
"&": "&",
"<": "&lt;",
">": "&gt;",
'"': '&quot;',
"'": '&#39;',
"/": '&#x2F;'
};
export default {
// to be used on individual strings
escapeHtml: function(string) {
return String(string).replace(/[&<>"'\/]/g, function (s) {
return escapeEntityMap[s];
});
},
// To be used with tagged templates
html: function(pieces){
let result = pieces[0];
let substitutions = [].slice.call(arguments, 1);
for (let i = 0; i < substitutions.length; ++i) {
result += this.escapeHtml(substitutions[i]) + pieces[i + 1];
}
return result;
},
queryParams: function(location){
let params = {};
let paramsRaw = (location.search.replace("?", "").match(/([^&=]+)=?([^&]*)/g) || []);
for (let i in paramsRaw){
let parts = paramsRaw[i].split("=");
params[parts[0]] = parts[1];
}
return params;
},
toSearchQuery: function(params){
let parts = [];
for (let k in params){
parts.push(encodeURIComponent(k) + "=" + encodeURIComponent(params[k]));
}
if (parts.length > 0) return "?" + parts.join("&");
else return "";
},
replaceSearchQueryParam: function(location, param, value){
let q = this.queryParams(location);
q[param] = value;
return this.toSearchQuery(q);
}
};