grafana/public/app/features/transformers/configFromQuery/ConfigFromQueryTransformerEditor.tsx
Jev Forsberg a99485ba33
Transformations: Build help content for all standard transformers (#74052)
* baldm0mma/transformation_info_modal

* baldm0mma/transformation_info_modal/ add getDisplayContent

* baldm0mma/transformation_info_modal/ reamove OperationRowHelp

* baldm0mma/transformation_info_modal/ update prepMarkdown

* baldm0mma/transformation_help_modal/ add example mkdwn

* baldm0mma/transformation_help_modal/ add examples anno

* baldm0mma/transformation_info_modal/ add calFieldHelper

* baldm0mma/transformation_info_modal/ remove file

* baldm0mma/transformation_info_modal/ add CalculateFieldHelper

* baldm0mma/transformation_info_modal/ add TransformationEditorHelperModal

* baldm0mma/transformation_info_modal/ add getHelperContent

* baldm0mma/transformation_info_modal/ move TransformationEditorHelperModal

* baldm0mma/transformation_info_modal/ add ReactElement

* baldm0mma/transformations_info_modal

* baldm0mma/transformation_info_modal/ update props for TransformationEditorHelperModal

* baldm0mma/transformation_info_modal/ test

* test

* baldm0mma/transformation_info_modal/ reset vscode auth

* baldm0mma/transformation_info_modal/ update getHelperContent

* baldm0mma/transformations_info_modal/ add items for rebuilding markdown to react component

* test

* test

* baldm0mma/transformations_info_modal/ remove comment in TransformationOperationRow

* test

* baldm0mma/transformation_info_modal/ add element to typing

* baldm0mma/transformation_info_modal/ update getHelperContent with help component

* baldm0mma/transformation_info_modal/ update modal title

* baldm0mma/transformation_info_modal/ move logic to tranforms

* baldm0mma/transformation_info_modal/ remove unused comments

* baldm0mma/transformation_info_modal/ update standard reg

* baldm0mma/trfansformation_info_modal/ remove context styling

* baldm0mma/transformation_info_modal/ add content for CalculateFieldHelper

* baldm0mma/transformation_info_modal/ add ConcatenateHelper

* baldm0mma/transformations_info_modal/ add ConcatenateHelper

* baldm0mma/transformation_info_modal/ add ConfigFromQueryHelper

* baldm0mma/transformations/info_modal/ add ConvertFieldTypeHelper

* baldm0mma/transformation_info_modal/ add CreateHeatmapHelp

* baldm0mma/transformation_info_modal/ add ExtractFieldsHelper

* baldm0mma/transformation_info_modal/ add FilterFieldsByNameHelper

* baldm0mma/transformation_info_modal/ add FilterFieldsByNameHelper

* baldm0mma/transformation_info_modal/ add OperationRowHelp to parse markdown

* baldm0mma/transformation_info_modal/ remove commented out markdown

* baldm0mma/transformations_info_modal/ remove comment

* baldm0mma/transformation_info_modal/ update configFromQueryTransformRegistryItem

* baldm0mma/transformation_info_modal/ update ConcatenateHelper

* baldm0mma/transformation_info_modal/ update ConvertFieldTypeHelper

* baldm0mma/transformation_info_modal/ update ExtractFieldsHelper

* baldm0mma/transformation_info_modal/ update FieldLookupHelper

* baldm0mma/transformation_info_modal/ update TransformationEditorHelperModal with determineContentDisplay()

* baldm0mma/transformation_info_modal/ add FilterByRefIdHelper

* baldm0mma/transformation_info_modal/ add FilterByValueHelper

* baldm0mma/transformation_info_modal/ update file ext

* baldm0mma/transformation_info_modal/ add GroupByHelper

* baldm0mma/transformation_info_modal/ add HistogramHelper

* baldm0mma/transformation_info_modal/ add JoinByFieldHelper

* baldm0mma/transformation_info_modal/ add JoinByLabelsHelper

* baldm0mma/transformations_info_modal/ add LabelsToFieldsHelper

* baldm0mma/transformation_info_modal/ add LimitHelper

* baldm0mma/transformation_info_modal/ add MergeHelper

* baldm0mma/transformation_info_modal/ add PartitionByValuesHelper

* baldm0mma/transformation_info_modal/ add ReduceHelper

* baldm0mma/transformation_info_modal/ add RenameByRegexHelper

* baldm0mma/transformation_info_modal/ add SeriesToRowsHelper

* baldm0mma/transformation_info_modal/ add SortByHelper

* baldm0mma/transformations_info_modal/ add spatial

* baldm0mma/transformation_info_modal/ update to markdown

* baldm0mma/transformation_info_modal/ remove comments

* baldm0mma/transformation_info_modal/ update boarder with theme

* baldm0mma/transformation_info_modal/ add test suite

* baldm0mma/transformation_info_modal/ update tests

* baldm0mma/transformation_info_modal/ update test to run on all transformations

* baldm0mma/transformation_info_modaol/ add TimeSeriesTableHelper

* baldm0mma/transformation_info_modal/ update concatenateHelper

* baldm0mma/transformation_info_modal/ update calculateFieldHelper

* baldmomma/transformation_info_modal/ update naming

* baldm0mma/transformation_info_modal/ update getLinkToDocs location

* baldm0mma/transformation_info_modal/ update docs

* baldm0mma/transformation_info_modal/ update language

* baldm0mma/transformation_info_modal/ rename test

* baldm0mma/transformation_info_modal/ update naming 2

* baldm0mma/transformation_info_modal/ update to helper

* baldm0mma/transformation_info_modal/ update docs

* Apply suggestions from @imatwawana

Co-authored-by: Isabel <76437239+imatwawana@users.noreply.github.com>

* baldm0mma/transformation_info_modal/ update convertFieldTypeHelper capitalization

* Hack around with generating Markdown from transformations helpers (#75677)

```console
$ cd docs
$ make sources/panels-visualizations/query-transform-data/transform-data/index.md
$ make docs
```

Browse to http://localhost:3003/docs/grafana/latest/panels-visualizations/query-transform-data/transform-data/

Signed-off-by: Jack Baldry <jack.baldry@grafana.com>

* baldm0mma/transformation_info_modal/ add calculateFieldHelper

* baldm0mma/transformation_info_modal/ update concatenate

* baldm0mma/transformation_info_modal/ add fieldLookup

* baldm0mma/transformation_info_modal/ add filterFieldsByName

* baldm0mma/transformation_info_modal/ add joinByField

* baldm0mma/transformation_info_modal/ update renameByRegex

* baldm0mma/transformation_info_modal/ update getHelperContent

* baldm0mma/transformation_info_modal/ update calculateFieldTransformRegistryItem

* baldm0mma/transformation_info_modal/ update concatenateTransformRegistryItem

* baldm0mma/transformation_info_modal/ update configFromDataTransformer

* baldm0mma/transformation_info_modal/ update extractFieldsTransformRegistryItem

* baldm0mma/transformation_info_modal/ update formatTimeTransformerRegistryItem

* baldm0mma/transformation_info_modal/ update heatmapTransformRegistryItem

* baldm0mma/transformation_info_modal/ update mergeTransformerRegistryItem

* baldm0mma/transformation_info_modal/ update timeSeriesTableTransformRegistryItem

* baldm0mma/transformation_info_modal/ update doc builder

* baldm0mma/transformation_info_modal/ update docs

* baldm0mma/transformation_info_modal/ remove console log

* baldm0mma/transformation_info_modal/ update console log

* baldm0mma/transformation_info_modal/ update gitignore

* baldm0mma/transformation_info_modal/ update calculateField

* baldm0mma/transformation_info_modal/ add links

* baldm0mma/transformation_info_modal/ update template

* baldm0mma/transformation_info_modal/ update template with images

* baldm0mma/transformation_info_modal/ build markdown

* baldm0mma/transformations_info_modal/update with links

* baldm0mma/transformation_info_modal/ update links

* baldm0mma/transformation_info_modal/ apdate FormatTimeTransfomerEditor

* baldm0mma/transformation_indo_modal/ update HeatmapTransformerEditor

* baldm0mma/transformation_indo_modal/ update ConfigFromQueryTransformerEditor

* baldm0mma/transformation_indo_modal/ update CalculateFieldTransformerEditor

* baldm0mma/transformation_indo_modal/ update ConcatenateTransformerEditor

* baldm0mma/transformation_indo_modal/ update FilterByNameTransformerEditor

* baldm0mma/transformation_indo_modal/ update FilterByRefIdTransformerEditor

* baldm0mma/transformation_indo_modal/ update GroupByTransformerEditor

* baldm0mma/transformation_indo_modal/ update GroupingToMatrixTransformerEditor get helper

* baldm0mma/transformation_indo_modal/ update SeriesToFieldsTransformerEditor get helper

* baldm0mma/transformation_indo_modal/ update LabelsAsFieldsTransformerEditor

* baldm0mma/transformation_info_modal/ update MergeTransformerEditor

* baldm0mma/transformation_info_modal/ update OrganizeFieldsTransformerEditor

* baldm0mma/transformation_info_modal/ update ReduceTransformerEditor

* baldm0mma/transformation_info_modal/ update RenameByRegexTransformerEditor

* baldm0mma/transformation_info_modal/ update SeriesToRowsTransformerEditor

* baldm0mma/transformation_info_modal/ update SortByTransformerEditor

* baldm0mma/transformation_info_modal/ update extractFieldsTransformerEditor

* baldm0mma/transformation_info_modal/ update FilterByValueTransformerEditor

* baldm0mma/transformation_info_modal/ update JoinByLabelsTransformerEditor

* baldm0mma/transformation_info_modal/ update FieldLookupTransformerEditor

* baldm0mma/transformation_info_modal/ update PartitionByValuesEditor

* baldm0mma/transformation_info_modal/ update PrepareTimeSeriesEditor

* baldm0mma/transformation_info_modal/ update RowsToFieldsTransformerEditor

* baldm0mma/transformation_info_modal/ update spatialTransformRegistryItem

* baldm0mma/transformation_info_modal/ update timeSeriesTableTransformRegistryItem

* baldm0mma/transformation_info_modal/ update to helperDocs

* baldm0mma/transformation_info_modal/ update built markdown

* baldm0mma/transformation_info_modal/ run prettier

* baldm0mma/transformation_info_modal/ update comments in getTransformationContent

* baldm0mma/transformation_info_modal/ add removeMarkdownAnchorLinks

* baldm0mma/transformation_info_modal/ update annos in getTransformationContent

* baldm0mma/transformation_info_modal/ add requisite url prefix to markdown images

* baldm0mma/transformation_info_modal/ add cleanMarkdownOfUnwantedSyntax

* baldm0mma/transformation_info_modal/ update annos in content.ts

* baldm0mma/transformation_info_modal/ update e2e tests with always-visiable trabnsformation

* baldm0mma/transformation_info_modal/ remove note

* baldm0mma/transformation_info_modal/ add annotation in getTransformationContent

* baldm0mma/transformation_info_modal/ update e2e test naming

---------

Signed-off-by: Jack Baldry <jack.baldry@grafana.com>
Co-authored-by: Isabel <76437239+imatwawana@users.noreply.github.com>
Co-authored-by: Jack Baldry <jack.baldry@grafana.com>
2023-11-07 09:29:45 -07:00

107 lines
3.5 KiB
TypeScript

import { css } from '@emotion/css';
import React from 'react';
import {
FieldMatcherID,
GrafanaTheme2,
PluginState,
SelectableValue,
TransformerRegistryItem,
TransformerUIProps,
TransformerCategory,
} from '@grafana/data';
import { fieldMatchersUI, InlineField, InlineFieldRow, Select, useStyles2 } from '@grafana/ui';
import { getTransformationContent } from '../docs/getTransformationContent';
import { FieldToConfigMappingEditor } from '../fieldToConfigMapping/FieldToConfigMappingEditor';
import { configFromDataTransformer, ConfigFromQueryTransformOptions } from './configFromQuery';
export interface Props extends TransformerUIProps<ConfigFromQueryTransformOptions> {}
export function ConfigFromQueryTransformerEditor({ input, onChange, options }: Props) {
const styles = useStyles2(getStyles);
const refIds = input
.map((x) => x.refId)
.filter((x) => x != null)
.map((x) => ({ label: x, value: x }));
const currentRefId = options.configRefId || 'config';
const currentMatcher = options.applyTo ?? { id: FieldMatcherID.byType, options: 'number' };
const matcherUI = fieldMatchersUI.get(currentMatcher.id);
const configFrame = input.find((x) => x.refId === currentRefId);
const onRefIdChange = (value: SelectableValue<string>) => {
onChange({
...options,
configRefId: value.value || 'config',
});
};
const onMatcherChange = (value: SelectableValue<string>) => {
onChange({ ...options, applyTo: { id: value.value! } });
};
const onMatcherConfigChange = (matcherOption: unknown) => {
onChange({ ...options, applyTo: { id: currentMatcher.id, options: matcherOption } });
};
const matchers = fieldMatchersUI
.list()
.filter((o) => !o.excludeFromPicker)
.map<SelectableValue<string>>((i) => ({ label: i.name, value: i.id, description: i.description }));
return (
<>
<InlineFieldRow>
<InlineField label="Config query" labelWidth={20}>
<Select onChange={onRefIdChange} options={refIds} value={currentRefId} width={30} />
</InlineField>
</InlineFieldRow>
<InlineFieldRow>
<InlineField label="Apply to" labelWidth={20}>
<Select onChange={onMatcherChange} options={matchers} value={currentMatcher.id} width={30} />
</InlineField>
</InlineFieldRow>
<InlineFieldRow>
<InlineField label="Apply to options" labelWidth={20} className={styles.matcherOptions}>
<matcherUI.component
matcher={matcherUI.matcher}
data={input}
options={currentMatcher.options}
onChange={onMatcherConfigChange}
/>
</InlineField>
</InlineFieldRow>
<InlineFieldRow>
{configFrame && (
<FieldToConfigMappingEditor
frame={configFrame}
mappings={options.mappings}
onChange={(mappings) => onChange({ ...options, mappings })}
withReducers
/>
)}
</InlineFieldRow>
</>
);
}
export const configFromQueryTransformRegistryItem: TransformerRegistryItem<ConfigFromQueryTransformOptions> = {
id: configFromDataTransformer.id,
editor: ConfigFromQueryTransformerEditor,
transformation: configFromDataTransformer,
name: configFromDataTransformer.name,
description: configFromDataTransformer.description,
state: PluginState.beta,
categories: new Set([TransformerCategory.CalculateNewFields]),
help: getTransformationContent(configFromDataTransformer.id).helperDocs,
};
const getStyles = (theme: GrafanaTheme2) => ({
matcherOptions: css`
min-width: 404px;
`,
});