fix(panel): case insensitive sort metric sources

Sorts the list of metric sources that is used in dropdown for Panel
Data Source on the Metrics tab so that it is case insensitive and
so that the built data sources are last in the list.
This commit is contained in:
Daniel Lee
2017-02-13 13:04:51 +01:00
committed by bergquist
parent 9f0b6f5aca
commit d01cf16dea
2 changed files with 69 additions and 2 deletions
+11 -2
View File
@@ -97,10 +97,19 @@ function (angular, _, coreModule, config) {
}
metricSources.sort(function(a, b) {
if (a.meta.builtIn || a.name > b.name) {
if (a.meta.builtIn) {
return 1;
}
if (a.name < b.name) {
if (b.meta.builtIn) {
return -1;
}
if (a.name.toLowerCase() > b.name.toLowerCase()) {
return 1;
}
if (a.name.toLowerCase() < b.name.toLowerCase()) {
return -1;
}
return 0;
+58
View File
@@ -0,0 +1,58 @@
define([
'app/core/config',
'app/core/services/datasource_srv'
], function(config) {
'use strict';
describe('datasource_srv', function() {
var _datasourceSrv;
var metricSources;
var templateSrv = {};
beforeEach(module('grafana.core'));
beforeEach(module(function($provide) {
$provide.value('templateSrv', templateSrv);
}));
beforeEach(module('grafana.services'));
beforeEach(inject(function(datasourceSrv) {
_datasourceSrv = datasourceSrv;
}));
describe('when loading metric sources', function() {
var unsortedDatasources = {
'mmm': {
type: 'test-db',
meta: { metrics: {m: 1} }
},
'--Mixed--': {
type: 'test-db',
meta: {builtIn: true, metrics: {m: 1} }
},
'ZZZ': {
type: 'test-db',
meta: {metrics: {m: 1} }
},
'aaa': {
type: 'test-db',
meta: { metrics: {m: 1} }
},
'BBB': {
type: 'test-db',
meta: { metrics: {m: 1} }
},
};
beforeEach(function() {
config.datasources = unsortedDatasources;
metricSources = _datasourceSrv.getMetricSources({skipVariables: true});
});
it('should return a list of sources sorted case insensitively with builtin sources last', function() {
expect(metricSources[0].name).to.be('aaa');
expect(metricSources[1].name).to.be('BBB');
expect(metricSources[2].name).to.be('mmm');
expect(metricSources[3].name).to.be('ZZZ');
expect(metricSources[4].name).to.be('--Mixed--');
});
});
});
});