1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- import React from 'react';
- import { DataSourcePluginOptionsEditorProps, DataSourceSettings } from '@grafana/data';
- import { AlertingSettings, DataSourceHttpSettings } from '@grafana/ui';
- import { getAllAlertmanagerDataSources } from 'app/features/alerting/unified/utils/alertmanager';
- import { LokiOptions } from '../types';
- import { DerivedFields } from './DerivedFields';
- import { MaxLinesField } from './MaxLinesField';
- export type Props = DataSourcePluginOptionsEditorProps<LokiOptions>;
- const makeJsonUpdater =
- <T extends any>(field: keyof LokiOptions) =>
- (options: DataSourceSettings<LokiOptions>, value: T): DataSourceSettings<LokiOptions> => {
- return {
- ...options,
- jsonData: {
- ...options.jsonData,
- [field]: value,
- },
- };
- };
- const setMaxLines = makeJsonUpdater('maxLines');
- const setDerivedFields = makeJsonUpdater('derivedFields');
- export const ConfigEditor = (props: Props) => {
- const { options, onOptionsChange } = props;
- const alertmanagers = getAllAlertmanagerDataSources();
- return (
- <>
- <DataSourceHttpSettings
- defaultUrl={'http://localhost:3100'}
- dataSourceConfig={options}
- showAccessOptions={false}
- onChange={onOptionsChange}
- />
- <AlertingSettings<LokiOptions>
- alertmanagerDataSources={alertmanagers}
- options={options}
- onOptionsChange={onOptionsChange}
- />
- <div className="gf-form-group">
- <div className="gf-form-inline">
- <div className="gf-form">
- <MaxLinesField
- value={options.jsonData.maxLines || ''}
- onChange={(value) => onOptionsChange(setMaxLines(options, value))}
- />
- </div>
- </div>
- </div>
- <DerivedFields
- value={options.jsonData.derivedFields}
- onChange={(value) => onOptionsChange(setDerivedFields(options, value))}
- />
- </>
- );
- };
|