Browse Source

add checks and errors

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

10
src/models/options.ts

@ -21,7 +21,10 @@ export class Options {
}
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;
return;
}
@ -30,7 +33,10 @@ export class Options {
}
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;
return;
}

2
src/models/series.ts

@ -10,7 +10,7 @@ export class Series {
private _selectedSerieName;
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]`);
}
this._selectedSerieName = this.gaugeValueOptions.metricName;

Loading…
Cancel
Save