/** * Transform markdown string to html */ String.prototype.toHTML = function() { return DOMPurify.sanitize( marked(this.toString()) .replace(/
/g, '')
);
}
Array.prototype.removeItem = function(item) {
const index = this.indexOf(item);
if (index !== -1) {
this.splice(index, 1);
}
return this;
}
function getCookie(key) {
const split = document.cookie.split(';');
let cookies = {};
split.forEach(elt => {
const val = elt.trim().split('=');
cookies[val[0]] = val[1];
});
if(key !== undefined) {
return cookies[key];
}
return cookies;
}
function removeCookie(key) {
if (Array.isArray(key)) {
key.forEach(elt => {
removeCookie(elt);
});
} else {
document.cookie = `${key}=; expires=Thu, 01 Jan 1970 00:00:01 GMT;`;
}
}
function parseURLParameter() {
const data = {};
const get = location.search.substr(1).split("&");
for (elt of get) {
const split = elt.split("=");
data[split[0]] = decodeURIComponent(split[1]);
}
return data;
}
function getURLParameter(key) {
const get = parseURLParameter();
return get[key];
}
/**
* Load all card
* @param boolean toArray (optionnal) send result in array and not in object (default: false)
*/
function loadData(toArray) {
toArray = toArray ? toArray : false;
const data = toArray ? [] : {};
return new Promise(resolve => {
// Data already load
if (localStorage.list) {
const list = JSON.parse(localStorage.list);
for (element of list) {
toArray ? data.push(JSON.parse(localStorage.getItem(element))) : data[element] = JSON.parse(localStorage.getItem(element));
}
resolve(data);
}
// Load data on server
else {
const list = [];
$.getJSON('data/list.json', (file) => {
const total = file.length;
let count = 0;
file.forEach(element => {
$.getJSON(`data/${element}.json`, (result) => {
toArray ? data.push(result) : data[result.id] = result;
list.push(result.id);
localStorage.setItem(result.id, JSON.stringify(result));
if (++count === total) {
localStorage.setItem('list', JSON.stringify(list));
resolve(data);
}
});
});
});
}
});
}
function uniqId() {
return '_' + Math.random().toString(36).substr(2, 9);
}