Use query parameters in the url
This commit is contained in:
parent
3da825fc76
commit
3e18d86d8a
|
@ -627,13 +627,40 @@ Prometheus.Graph.prototype.remove = function() {
|
|||
};
|
||||
|
||||
function parseGraphOptionsFromURL() {
|
||||
var hashOptions = window.location.hash.slice(1);
|
||||
if (!hashOptions) {
|
||||
return [];
|
||||
var allGraphsOptions = [];
|
||||
var queryStringBeginning = window.location.href.indexOf('?')
|
||||
if(queryStringBeginning == -1) {
|
||||
return allGraphsOptions;
|
||||
}
|
||||
var optionsJSON = decodeURIComponent(window.location.hash.slice(1));
|
||||
options = JSON.parse(optionsJSON);
|
||||
return options;
|
||||
var paramTuples = window.location.href.slice(queryStringBeginning + 1).split('&');
|
||||
|
||||
paramTuples.forEach(function(tuple){
|
||||
var paramNameAndValue = tuple.split('=');
|
||||
var paramName = paramNameAndValue[0]
|
||||
var paramValue = decodeURIComponent(paramNameAndValue[1])
|
||||
|
||||
var indexAndName = paramName.split('.');
|
||||
var optionName = indexAndName[1];
|
||||
|
||||
if(optionName == "end_input"){
|
||||
paramValue = paramValue.replace("+", " ") // workaround jquery.param space plus
|
||||
}
|
||||
|
||||
if(optionName == "tab"){
|
||||
paramValue = parseInt(paramValue) // tab is int
|
||||
}
|
||||
|
||||
var indexStr = indexAndName[0].substring(1);
|
||||
if(isNaN(indexStr) == false) {
|
||||
var index = parseInt(indexStr);
|
||||
if(typeof allGraphsOptions[index] === 'undefined') {
|
||||
allGraphsOptions[index] = {};
|
||||
}
|
||||
allGraphsOptions[index][optionName] = paramValue;
|
||||
}
|
||||
});
|
||||
|
||||
return allGraphsOptions
|
||||
}
|
||||
|
||||
// NOTE: This needs to be kept in sync with /util/strutil/strconv.go:GraphLinkForExpression
|
||||
|
@ -642,8 +669,19 @@ function storeGraphOptionsInURL() {
|
|||
for (var i = 0; i < graphs.length; i++) {
|
||||
allGraphsOptions.push(graphs[i].getOptions());
|
||||
}
|
||||
var optionsJSON = JSON.stringify(allGraphsOptions);
|
||||
window.location.hash = encodeURIComponent(optionsJSON);
|
||||
|
||||
var queryString = generateQueryString(allGraphsOptions);
|
||||
history.pushState({}, "", "graph?" + queryString);
|
||||
}
|
||||
|
||||
function generateQueryString(allGraphsOptions) {
|
||||
return allGraphsOptions.map(function(graphsOptions, index){
|
||||
var queryObject = {}
|
||||
Object.keys(graphsOptions).map(function(key){
|
||||
queryObject["g" + index + "." + key] = graphsOptions[key];
|
||||
});
|
||||
return $.param(queryObject)
|
||||
}).join("&");
|
||||
}
|
||||
|
||||
function addGraph(options) {
|
||||
|
|
Loading…
Reference in New Issue