diff options
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.js | 52 |
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; + } +}; |