cartodb/lib/assets/javascripts/new-dashboard/router/hooks/check-navigation.js

40 lines
1.1 KiB
JavaScript
Raw Normal View History

2020-06-15 10:58:47 +08:00
import store from 'new-dashboard/store';
import { isAllowed } from 'new-dashboard/core/configuration/filters';
export default function checkNavigation (storeModule, redirectionRoute) {
return checkFilters.bind(this, storeModule, redirectionRoute);
}
export function checkFilters (redirectionRoute, storeModule, to, _, next) {
const urlOptions = { ...to.params, ...to.query };
if (urlOptions.filter && !isAllowed(urlOptions.filter)) {
return next({ name: redirectionRoute });
}
store.dispatch(`${storeModule}/setURLOptions`, urlOptions);
next();
}
export function mapsBeforeEnter (to, from, next) {
store.dispatch('maps/resetFilters');
checkFilters('maps', 'maps', to, from, next);
}
export function datasetsBeforeEnter (to, from, next) {
store.dispatch('datasets/resetFilters');
checkFilters('datasets', 'datasets', to, from, next);
}
export function catalogueDetailBeforeEnter (to, from, next) {
if (to.query.category && to.query.country) {
store.dispatch('catalogue/fetchDatasets', {
category: to.query.category,
country: to.query.country
});
next();
} else {
next({ name: 'catalogue' });
}
}