ldc-loue/resources/js/modules/route.js
2022-06-01 14:29:31 +02:00

43 lines
1.8 KiB
JavaScript

export default {
methods: {
route(routeName, parameters = []) {
let route = Object.keys(window.__SYSTEM._routes).indexOf(routeName) !== -1 ?
window.__SYSTEM._routes[routeName] : null;
if (!route) {
return route;
}
// copy parameters
let iParameters = Object.assign({}, parameters);
let origin = window.location.origin;
let pathname = route.replace(origin, '');
let search = window.location.search
let hash = window.location.hash;
// replace in path name
for (let paramName in iParameters) {
let paramValue = parameters[paramName];
if (pathname.indexOf(paramName) !== -1) {
pathname = pathname.replace(paramName, paramValue);
}
delete parameters[paramName];
}
for (let paramName in parameters) {
let paramValue = parameters[paramName];
if (search.indexOf(paramName + "=") >= 0) {
prefix = search.substring(0, search.indexOf(paramName + "="));
suffix = search.substring(search.indexOf(paramName + "="));
suffix = suffix.substring(suffix.indexOf("=") + 1);
suffix = (suffix.indexOf("&") >= 0) ? suffix.substring(suffix.indexOf("&")) : '';
search = prefix + paramName + "=" + paramValue + suffix;
} else if (search.indexOf("?") < 0) {
search += "?" + paramName + "=" + paramValue
} else {
search += "&" + paramName + "=" + paramValue
}
}
return origin + pathname + search + hash;
}
},
}