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);
|
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;
|
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);
|
return variable.setValue(option);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user