return route;
}
- var routes = [];
- for (var r in rts) {
- routes.push(new Route(r, rts[r]));
- }
+ const routes = Object.entries(rts)
+ .map(([r, t]) => new Route(r, t));
routes.recognize = function (path) {
- for (var i = 0; i < this.length; i++) {
- if (this[i].match(path)) return this[i];
+ for (const route of this) {
+ if (route.match(path)) return route;
}
};
var router = {};
+ function updateSecondaryNav() {
+ $("header nav.secondary > ul > li > a").each(function () {
+ var active = $(this).attr("href") === window.location.pathname;
+
+ $(this)
+ .toggleClass("text-secondary", !active)
+ .toggleClass("text-secondary-emphasis", active);
+ });
+ }
+
$(window).on("popstate", function (e) {
if (!e.originalEvent.state) return; // Is it a real popstate event or just a hash change?
var path = window.location.pathname + window.location.search,
currentPath = path;
currentRoute = route;
currentRoute.run("popstate", currentPath);
+ updateSecondaryNav();
map.setState(e.originalEvent.state, { animate: false });
});
currentPath = path;
currentRoute = route;
currentRoute.run("pushstate", currentPath);
+ updateSecondaryNav();
return true;
};
currentRoute = routes.recognize(currentPath);
};
- map.on("moveend baselayerchange overlaylayerchange", router.updateHash);
+ map.on("moveend baselayerchange overlayadd overlayremove", router.updateHash);
$(window).on("hashchange", router.hashUpdated);
return router;