|
1 | 1 | String.prototype.queryStringToJSON=String.prototype.queryStringToJSON||function() |
2 | | -{var params=String(this);params=params.substring(params.indexOf('?')+1);params=params.replace(/\+/g,'%20');if(params.substring(0,1)==='{'&¶ms.substring(params.length-1)==='}') |
3 | | -{return eval(decodeURIComponent(params));} |
4 | | -params=params.split(/\&(amp\;)?/);var json={};for(var i=0,n=params.length;i<n;++i) |
| 2 | +{var params=String(this);params=params.substring(params.indexOf('?')+1);params=params.replace(/\+/g,'%20');try{return JSON.parse(decodeURIComponent(params));}catch{params=params.split(/\&(amp\;)?/);} |
| 3 | +var json={};for(var i=0,n=params.length;i<n;++i) |
5 | 4 | {var param=params[i]||null;if(param===null){continue;} |
6 | 5 | param=param.split('=');if(param===null){continue;} |
7 | 6 | var key=param[0]||null;if(key===null){continue;} |
8 | 7 | if(typeof param[1]==='undefined'){continue;} |
9 | 8 | var value=param[1];key=decodeURIComponent(key);value=decodeURIComponent(value);var keys=key.split('.');if(keys.length===1) |
10 | 9 | {json[key]=value;} |
11 | 10 | else |
12 | | -{var path='',cmd='';$.each(keys,function(ii,key){path+='["'+key.replace(/"/g,'\\"')+'"]';jsonCLOSUREGLOBAL=json;cmd='if ( typeof jsonCLOSUREGLOBAL'+path+' === "undefined" ) jsonCLOSUREGLOBAL'+path+' = {}';eval(cmd);json=jsonCLOSUREGLOBAL;delete jsonCLOSUREGLOBAL;});jsonCLOSUREGLOBAL=json;valueCLOSUREGLOBAL=value;cmd='jsonCLOSUREGLOBAL'+path+' = valueCLOSUREGLOBAL';eval(cmd);json=jsonCLOSUREGLOBAL;delete jsonCLOSUREGLOBAL;delete valueCLOSUREGLOBAL;}} |
| 11 | +{var setNestedKey=function(obj,path,value){if(path.length===1){obj[path]=value |
| 12 | +return} |
| 13 | +if(typeof obj[path[0]]==='undefined'){obj[path[0]]={}} |
| 14 | +return setNestedKey(obj[path[0]],path.slice(1),value)} |
| 15 | +setNestedKey(json,keys,value);}} |
13 | 16 | return json;};this.ckan=this.ckan||{};this.ckan.views=this.ckan.views||{};this.ckan.views.filters=(function(queryString){'use strict';var api={get:get,set:set,setAndRedirectTo:setAndRedirectTo,unset:unset,_searchParams:{},_initialize:_initialize,_setLocationHref:_setLocationHref,};function get(filterName){var filters=api._searchParams.filters||{};if(filterName){return filters[filterName];}else{return filters;}} |
14 | 17 | function set(name,value){var url=window.location.href;setAndRedirectTo(name,value,url);} |
15 | 18 | function setAndRedirectTo(name,value,url){api._searchParams.filters=api._searchParams.filters||{};api._searchParams.filters[name]=value;_redirectTo(url);return api;} |
|
0 commit comments