12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- 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;
- }
- };
|