mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
set correct text in drop down when variable is present in url using key/values
This commit is contained in:
parent
7797a66b58
commit
5280084480
@ -179,4 +179,38 @@ describe('VariableSrv init', function() {
|
||||
expect(variable.options[2].selected).to.be(false);
|
||||
});
|
||||
});
|
||||
|
||||
describeInitScenario('when template variable is present in url multiple times using key/values', scenario => {
|
||||
scenario.setup(() => {
|
||||
scenario.variables = [
|
||||
{
|
||||
name: 'apps',
|
||||
type: 'query',
|
||||
multi: true,
|
||||
current: { text: 'Val1', value: 'val1' },
|
||||
options: [
|
||||
{ text: 'Val1', value: 'val1' },
|
||||
{ text: 'Val2', value: 'val2' },
|
||||
{ text: 'Val3', value: 'val3', selected: true },
|
||||
],
|
||||
},
|
||||
];
|
||||
scenario.urlParams['var-apps'] = ['val2', 'val1'];
|
||||
});
|
||||
|
||||
it('should update current value', function() {
|
||||
var variable = ctx.variableSrv.variables[0];
|
||||
expect(variable.current.value.length).to.be(2);
|
||||
expect(variable.current.value[0]).to.be('val2');
|
||||
expect(variable.current.value[1]).to.be('val1');
|
||||
expect(variable.current.text).to.be('Val2 + Val1');
|
||||
expect(variable.options[0].selected).to.be(true);
|
||||
expect(variable.options[1].selected).to.be(true);
|
||||
});
|
||||
|
||||
it('should set options that are not in value to selected false', function() {
|
||||
var variable = ctx.variableSrv.variables[0];
|
||||
expect(variable.options[2].selected).to.be(false);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
@ -209,7 +209,24 @@ export class VariableSrv {
|
||||
return op.text === urlValue || op.value === urlValue;
|
||||
});
|
||||
|
||||
option = option || { text: urlValue, value: urlValue };
|
||||
let defaultText = urlValue;
|
||||
let defaultValue = urlValue;
|
||||
|
||||
if (!option && _.isArray(urlValue)) {
|
||||
defaultText = [];
|
||||
|
||||
for (let n = 0; n < urlValue.length; n++) {
|
||||
let t = _.find(variable.options, op => {
|
||||
return op.value === urlValue[n];
|
||||
});
|
||||
|
||||
if (t) {
|
||||
defaultText.push(t.text);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
option = option || { text: defaultText, value: defaultValue };
|
||||
return variable.setValue(option);
|
||||
});
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user