aboutsummaryrefslogtreecommitdiff
path: root/node_modules/istanbul-reports/lib/html-spa/src/routing.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/istanbul-reports/lib/html-spa/src/routing.js')
-rw-r--r--node_modules/istanbul-reports/lib/html-spa/src/routing.js52
1 files changed, 52 insertions, 0 deletions
diff --git a/node_modules/istanbul-reports/lib/html-spa/src/routing.js b/node_modules/istanbul-reports/lib/html-spa/src/routing.js
new file mode 100644
index 0000000..a4d0bc7
--- /dev/null
+++ b/node_modules/istanbul-reports/lib/html-spa/src/routing.js
@@ -0,0 +1,52 @@
+exports.setLocation = function setLocation(
+ isReplace,
+ activeSort,
+ isFlat,
+ activeFilters,
+ fileFilter,
+ expandedLines
+) {
+ const params = [
+ activeSort.sortKey,
+ activeSort.order,
+ isFlat,
+ activeFilters.low,
+ activeFilters.medium,
+ activeFilters.high,
+ encodeURIComponent(fileFilter),
+ expandedLines.map(encodeURIComponent).join(',')
+ ];
+ const newUrl = `#${params.join('/')}`;
+
+ if (newUrl === location.hash) {
+ return;
+ }
+
+ window.history[isReplace ? 'replaceState' : 'pushState'](null, '', newUrl);
+};
+
+exports.decodeLocation = function decodeLocation() {
+ const items = location.hash.substr(1).split('/');
+ if (items.length !== 8) {
+ return null;
+ }
+
+ try {
+ return {
+ activeSort: {
+ sortKey: items[0],
+ order: items[1]
+ },
+ isFlat: JSON.parse(items[2]),
+ activeFilters: {
+ low: JSON.parse(items[3]),
+ medium: JSON.parse(items[4]),
+ high: JSON.parse(items[5])
+ },
+ fileFilter: decodeURIComponent(items[6]),
+ expandedLines: items[7].split(',').map(decodeURIComponent)
+ };
+ } catch (e) {
+ return null;
+ }
+};