remove redundant default value

This commit is contained in:
Erik Sundell 2018-12-12 09:14:06 +01:00
parent fe4c77a8a4
commit 2ac1fe2a17
6 changed files with 53 additions and 44 deletions

View File

@ -274,6 +274,7 @@ export default class StackdriverDatasource {
m.service = service; m.service = service;
m.serviceShortName = serviceShortName; m.serviceShortName = serviceShortName;
m.displayName = m.displayName || m.type; m.displayName = m.displayName || m.type;
return m; return m;
}); });
} }

View File

@ -1,6 +1,5 @@
<query-editor-row query-ctrl="ctrl" has-text-edit-mode="false"> <query-editor-row query-ctrl="ctrl" has-text-edit-mode="false">
<stackdriver-filter target="ctrl.target" refresh="ctrl.refresh()" datasource="ctrl.datasource" default-dropdown-value="ctrl.defaultDropdownValue" <stackdriver-filter target="ctrl.target" refresh="ctrl.refresh()" datasource="ctrl.datasource"></stackdriver-filter>
default-service-value="ctrl.defaultServiceValue"></stackdriver-filter>
<stackdriver-aggregation target="ctrl.target" alignment-period="ctrl.lastQueryMeta.alignmentPeriod" refresh="ctrl.refresh()"></stackdriver-aggregation> <stackdriver-aggregation target="ctrl.target" alignment-period="ctrl.lastQueryMeta.alignmentPeriod" refresh="ctrl.refresh()"></stackdriver-aggregation>
<div class="gf-form-inline"> <div class="gf-form-inline">
<div class="gf-form"> <div class="gf-form">

View File

@ -6,8 +6,8 @@
selected="ctrl.service" selected="ctrl.service"
options="ctrl.services" options="ctrl.services"
searchable="false" searchable="false"
placeholder="ctrl.defaultServiceValue" placeholder="'Select Services'"
className="&quot;width-15&quot;" className="'width-15'"
></option-picker> ></option-picker>
</div> </div>
<div class="gf-form gf-form--grow"><div class="gf-form-label gf-form-label--grow"></div></div> <div class="gf-form gf-form--grow"><div class="gf-form-label gf-form-label--grow"></div></div>
@ -17,11 +17,11 @@
<span class="gf-form-label width-9 query-keyword">Metric</span> <span class="gf-form-label width-9 query-keyword">Metric</span>
<option-group-picker <option-group-picker
onChange="ctrl.handleMetricTypeChange" onChange="ctrl.handleMetricTypeChange"
selected="ctrl.metricType" selected="ctrl.target.metricType"
groups="ctrl.insertTemplateVariables(ctrl.defaultServiceValue !== ctrl.service ? ctrl.metrics : ctrl.metricGroups)" groups="ctrl.getMetricGroups()"
searchable="true" searchable="true"
placeholder="ctrl.defaultDropdownValue" placeholder="'Select Metric'"
className="&quot;width-15&quot;" className="'width-15'"
></option-group-picker> ></option-group-picker>
</div> </div>
<div class="gf-form gf-form--grow"><div class="gf-form-label gf-form-label--grow"></div></div> <div class="gf-form gf-form--grow"><div class="gf-form-label gf-form-label--grow"></div></div>

View File

@ -34,13 +34,10 @@ export class StackdriverQueryCtrl extends QueryCtrl {
valueType: any; valueType: any;
}; };
defaultDropdownValue = 'Select Metric';
defaultServiceValue = 'All Services';
defaults = { defaults = {
defaultProject: 'loading project...', defaultProject: 'loading project...',
metricType: this.defaultDropdownValue, metricType: '',
service: this.defaultServiceValue, service: '',
metric: '', metric: '',
unit: '', unit: '',
aggregation: { aggregation: {

View File

@ -15,8 +15,6 @@ export class StackdriverFilter {
target: '=', target: '=',
datasource: '=', datasource: '=',
refresh: '&', refresh: '&',
defaultDropdownValue: '<',
defaultServiceValue: '<',
hideGroupBys: '<', hideGroupBys: '<',
}, },
}; };
@ -48,9 +46,6 @@ export class StackdriverFilterCtrl {
constructor(private $scope, private uiSegmentSrv, private templateSrv, private $rootScope) { constructor(private $scope, private uiSegmentSrv, private templateSrv, private $rootScope) {
this.datasource = $scope.datasource; this.datasource = $scope.datasource;
this.target = $scope.target; this.target = $scope.target;
this.metricType = $scope.defaultDropdownValue;
this.service = $scope.defaultServiceValue;
this.metricDescriptors = []; this.metricDescriptors = [];
this.metrics = []; this.metrics = [];
this.metricGroups = []; this.metricGroups = [];
@ -66,7 +61,7 @@ export class StackdriverFilterCtrl {
} }
handleMetricTypeChange(value) { handleMetricTypeChange(value) {
this.metricType = value; this.target.metricType = value;
this.onMetricTypeChange(); this.onMetricTypeChange();
} }
@ -116,7 +111,6 @@ export class StackdriverFilterCtrl {
} }
getServicesList() { getServicesList() {
const defaultValue = { value: this.$scope.defaultServiceValue, label: this.$scope.defaultServiceValue };
const services = this.metricDescriptors.map(m => { const services = this.metricDescriptors.map(m => {
return { return {
value: m.service, value: m.service,
@ -128,10 +122,10 @@ export class StackdriverFilterCtrl {
this.service = this.target.service; this.service = this.target.service;
} }
return services.length > 0 ? [defaultValue, ..._.uniqBy(services, 'value')] : []; return services.length > 0 ? _.uniqBy(services, 'value') : [];
} }
getMetricGroups() { getMetricGroupsOld() {
return this.metrics.reduce((acc, curr) => { return this.metrics.reduce((acc, curr) => {
const group = acc.find(group => group.service === curr.service); const group = acc.find(group => group.service === curr.service);
if (group) { if (group) {
@ -150,6 +144,27 @@ export class StackdriverFilterCtrl {
}, []); }, []);
} }
getMetricGroups() {
return [
this.getTemplateVariablesGroup(),
{
label: 'Metrics',
options: this.metrics,
},
];
}
getTemplateVariablesGroup() {
return {
label: 'Template Variables',
options: this.templateSrv.variables.map(v => ({
label: `$${v.name}`,
value: `$${v.name}`,
description: `$${v.definition}`,
})),
};
}
insertTemplateVariables(options) { insertTemplateVariables(options) {
const templateVariables = { const templateVariables = {
label: 'Template Variables', label: 'Template Variables',
@ -174,29 +189,28 @@ export class StackdriverFilterCtrl {
}; };
}); });
let result; const metricsByService = metrics.filter(m => m.service === this.target.service);
if (this.target.service === this.$scope.defaultServiceValue) { if (
result = metrics.map(m => ({ ...m, text: `${m.service} - ${m.text}` })); metricsByService.length > 0 &&
} else { !metricsByService.some(m => m.value === this.templateSrv.replace(this.target.metricType))
result = metrics.filter(m => m.service === this.target.service); ) {
this.target.metricType = metricsByService[0].value;
} }
return metricsByService;
if (result.find(m => m.value === this.templateSrv.replace(this.target.metricType))) {
this.metricType = this.target.metricType;
} else if (result.length > 0) {
this.metricType = this.target.metricType = result[0].value;
}
return result;
} }
async getLabels() { async getLabels() {
this.loadLabelsPromise = new Promise(async resolve => { this.loadLabelsPromise = new Promise(async resolve => {
try { try {
if (this.target.metricType) {
const { meta } = await this.datasource.getLabels(this.target.metricType, this.target.refId); const { meta } = await this.datasource.getLabels(this.target.metricType, this.target.refId);
this.metricLabels = meta.metricLabels; this.metricLabels = meta.metricLabels;
this.resourceLabels = meta.resourceLabels; this.resourceLabels = meta.resourceLabels;
this.resourceTypes = meta.resourceTypes; this.resourceTypes = meta.resourceTypes;
resolve(); resolve();
} else {
resolve();
}
} catch (error) { } catch (error) {
if (error.data && error.data.message) { if (error.data && error.data.message) {
console.log(error.data.message); console.log(error.data.message);
@ -216,7 +230,7 @@ export class StackdriverFilterCtrl {
this.setMetricType(); this.setMetricType();
this.getLabels(); this.getLabels();
if (!this.metrics.find(m => m.value === this.target.metricType)) { if (!this.metrics.find(m => m.value === this.target.metricType)) {
this.target.metricType = this.$scope.defaultDropdownValue; this.target.metricType = '';
} else { } else {
this.$scope.refresh(); this.$scope.refresh();
} }
@ -229,9 +243,9 @@ export class StackdriverFilterCtrl {
} }
setMetricType() { setMetricType() {
this.target.metricType = this.metricType; // this.target.metricType = this.metricType;
const { valueType, metricKind, unit } = this.metricDescriptors.find( const { valueType, metricKind, unit } = this.metricDescriptors.find(
m => m.type === this.templateSrv.replace(this.metricType) m => m.type === this.templateSrv.replace(this.target.metricType)
); );
this.target.unit = unit; this.target.unit = unit;
this.target.valueType = valueType; this.target.valueType = valueType;

View File

@ -409,8 +409,6 @@ function createCtrlWithFakes(existingFilters?: string[]) {
return 'project'; return 'project';
}, },
}, },
defaultDropdownValue: 'Select Metric',
defaultServiceValue: 'All Services',
refresh: () => {}, refresh: () => {},
}; };