Browse Source

add checks and errors

merge-requests/9/head
vargburz 3 years ago
parent
commit
76c586c467
  1. 16
      src/components/editors/UseMetricEditor.tsx
  2. 10
      src/models/options.ts
  3. 2
      src/models/series.ts

16
src/components/editors/UseMetricEditor.tsx

@ -8,7 +8,7 @@ import React from 'react';
import * as _ from 'lodash'; import * as _ from 'lodash';
type UseMetricConfig = { type UseMetricConfig = {
useMetric: boolean; useMetric?: boolean;
value?: number; value?: number;
metricName?: string; metricName?: string;
}; };
@ -18,10 +18,12 @@ const fieldNamePickerSettings = {
} as any; } as any;
export function UseMetricEditor({ onChange, value, context }: StandardEditorProps<UseMetricConfig>) { export function UseMetricEditor({ onChange, value, context }: StandardEditorProps<UseMetricConfig>) {
const config = value; let config = value;
const onFieldChange = (field: keyof UseMetricConfig, value: any) => { const onFieldChange = (field: keyof UseMetricConfig, value: any) => {
// @ts-ignore if(_.isNil(config)) {
config = {};
}
config[field] = value; config[field] = value;
onChange(config); onChange(config);
@ -31,22 +33,22 @@ export function UseMetricEditor({ onChange, value, context }: StandardEditorProp
<HorizontalGroup> <HorizontalGroup>
<InlineField label="Use metric"> <InlineField label="Use metric">
<InlineSwitch <InlineSwitch
value={config.useMetric} value={config?.useMetric}
onChange={(evt) => onFieldChange('useMetric', (evt.target as any).checked)} onChange={(evt) => onFieldChange('useMetric', (evt.target as any).checked)}
/> />
</InlineField> </InlineField>
<InlineField> <InlineField>
{config.useMetric ? ( {config?.useMetric ? (
<FieldNamePicker <FieldNamePicker
context={context} context={context}
value={config.metricName as string} value={config?.metricName as string}
onChange={(newVal: any) => onFieldChange('metricName', newVal)} onChange={(newVal: any) => onFieldChange('metricName', newVal)}
item={fieldNamePickerSettings} item={fieldNamePickerSettings}
/> />
) : ( ) : (
<Input <Input
placeholder="value" placeholder="value"
value={config.value} value={config?.value}
width={24} width={24}
onChange={(evt) => onFieldChange('value', (evt.target as any).value)} onChange={(evt) => onFieldChange('value', (evt.target as any).value)}
/> />

10
src/models/options.ts

@ -21,7 +21,10 @@ export class Options {
} }
private _setMin(): void { private _setMin(): void {
if (!this.grafanaOptions.gauge.min.useMetric) { if (!this.grafanaOptions.gauge.min) {
throw new Error(`Min Config is not selected: [See options: Extremum -> Min]`);
}
if (!this.grafanaOptions.gauge.min?.useMetric) {
this.minValue = this.grafanaOptions.gauge.min.value; this.minValue = this.grafanaOptions.gauge.min.value;
return; return;
} }
@ -30,7 +33,10 @@ export class Options {
} }
private _setMax(): void { private _setMax(): void {
if (!this.grafanaOptions.gauge.max.useMetric) { if (!this.grafanaOptions.gauge.max) {
throw new Error(`Max Config is not selected: [See options: Extremum -> Max]`);
}
if (!this.grafanaOptions.gauge.max?.useMetric) {
this.maxValue = this.grafanaOptions.gauge.max.value; this.maxValue = this.grafanaOptions.gauge.max.value;
return; return;
} }

2
src/models/series.ts

@ -10,7 +10,7 @@ export class Series {
private _selectedSerieName; private _selectedSerieName;
constructor(grafanaSeriesList: any, private gaugeValueOptions: ValueOptions) { constructor(grafanaSeriesList: any, private gaugeValueOptions: ValueOptions) {
if (_.isEmpty(this.gaugeValueOptions.metricName)) { if (_.isEmpty(this.gaugeValueOptions?.metricName)) {
throw new Error(`Value: metric is not selected. [See options: Value -> Metric]`); throw new Error(`Value: metric is not selected. [See options: Value -> Metric]`);
} }
this._selectedSerieName = this.gaugeValueOptions.metricName; this._selectedSerieName = this.gaugeValueOptions.metricName;

Loading…
Cancel
Save