43 lines
1.8 KiB
JavaScript
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;
|
|
}
|
|
},
|
|
}
|
|
|