Compare commits
9 Commits
sriram/SQL
...
kristina/c
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
41c9322753 | ||
|
|
b943c0c7c6 | ||
|
|
21e0c70c71 | ||
|
|
a846041548 | ||
|
|
0f5c5f4398 | ||
|
|
8a4f25e5fb | ||
|
|
3237e2840a | ||
|
|
76eb38e56b | ||
|
|
f2f1663dba |
@@ -10,10 +10,12 @@ import {
|
|||||||
TransformerCategory,
|
TransformerCategory,
|
||||||
} from '@grafana/data';
|
} from '@grafana/data';
|
||||||
import { t } from '@grafana/i18n';
|
import { t } from '@grafana/i18n';
|
||||||
import { fieldMatchersUI, InlineField, InlineFieldRow, Select, useStyles2 } from '@grafana/ui';
|
import { Checkbox, fieldMatchersUI, InlineField, InlineFieldRow, Select, useStyles2 } from '@grafana/ui';
|
||||||
|
//import { FieldNamePicker } from '@grafana/ui/internal';
|
||||||
|
|
||||||
import { getTransformationContent } from '../docs/getTransformationContent';
|
import { getTransformationContent } from '../docs/getTransformationContent';
|
||||||
import { FieldToConfigMappingEditor } from '../fieldToConfigMapping/FieldToConfigMappingEditor';
|
import { FieldToConfigMappingEditor } from '../fieldToConfigMapping/FieldToConfigMappingEditor';
|
||||||
|
import { configMapHandlers } from '../fieldToConfigMapping/fieldToConfigMapping';
|
||||||
import darkImage from '../images/dark/configFromData.svg';
|
import darkImage from '../images/dark/configFromData.svg';
|
||||||
import lightImage from '../images/light/configFromData.svg';
|
import lightImage from '../images/light/configFromData.svg';
|
||||||
|
|
||||||
@@ -85,6 +87,13 @@ export function ConfigFromQueryTransformerEditor({ input, onChange, options }: P
|
|||||||
onChange={onMatcherConfigChange}
|
onChange={onMatcherConfigChange}
|
||||||
/>
|
/>
|
||||||
</InlineField>
|
</InlineField>
|
||||||
|
<InlineField>
|
||||||
|
<Checkbox
|
||||||
|
label={t('transformers.config-from-query-transformer-editor.label-mapping', 'Map results')}
|
||||||
|
onChange={(evt) => onChange({ ...options, isDisplayNameMapping: evt.currentTarget.checked })}
|
||||||
|
value={options.isDisplayNameMapping}
|
||||||
|
/>
|
||||||
|
</InlineField>
|
||||||
</InlineFieldRow>
|
</InlineFieldRow>
|
||||||
<InlineFieldRow>
|
<InlineFieldRow>
|
||||||
{configFrame && (
|
{configFrame && (
|
||||||
@@ -92,7 +101,12 @@ export function ConfigFromQueryTransformerEditor({ input, onChange, options }: P
|
|||||||
frame={configFrame}
|
frame={configFrame}
|
||||||
mappings={options.mappings}
|
mappings={options.mappings}
|
||||||
onChange={(mappings) => onChange({ ...options, mappings })}
|
onChange={(mappings) => onChange({ ...options, mappings })}
|
||||||
withReducers
|
withReducers={!options.isDisplayNameMapping}
|
||||||
|
configOverride={
|
||||||
|
options.isDisplayNameMapping
|
||||||
|
? configMapHandlers.filter((cmh) => cmh.key === 'mappings.value' || cmh.key === 'mappings.text')
|
||||||
|
: undefined
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
</InlineFieldRow>
|
</InlineFieldRow>
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ export interface ConfigFromQueryTransformOptions {
|
|||||||
configRefId?: string;
|
configRefId?: string;
|
||||||
mappings: FieldToConfigMapping[];
|
mappings: FieldToConfigMapping[];
|
||||||
applyTo?: MatcherConfig;
|
applyTo?: MatcherConfig;
|
||||||
|
isDisplayNameMapping?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function extractConfigFromQuery(options: ConfigFromQueryTransformOptions, data: DataFrame[]) {
|
export function extractConfigFromQuery(options: ConfigFromQueryTransformOptions, data: DataFrame[]) {
|
||||||
@@ -73,6 +74,27 @@ export function extractConfigFromQuery(options: ConfigFromQueryTransformOptions,
|
|||||||
for (const field of frame.fields) {
|
for (const field of frame.fields) {
|
||||||
if (matcher(field, frame, data)) {
|
if (matcher(field, frame, data)) {
|
||||||
const dataConfig = getFieldConfigFromFrame(reducedConfigFrame, 0, mappingResult);
|
const dataConfig = getFieldConfigFromFrame(reducedConfigFrame, 0, mappingResult);
|
||||||
|
|
||||||
|
if (options.isDisplayNameMapping) {
|
||||||
|
const nameFrame = data.find((d) => d.refId === options.configRefId);
|
||||||
|
const mappingValueName = options.mappings.find(
|
||||||
|
(mapping) => mapping.handlerKey === 'mappings.value'
|
||||||
|
)?.fieldName;
|
||||||
|
const mappingTextName = options.mappings.find((mapping) => mapping.handlerKey === 'mappings.text')?.fieldName;
|
||||||
|
if (nameFrame && mappingValueName !== undefined && mappingTextName !== undefined) {
|
||||||
|
const mapValueField = nameFrame.fields.find((frameNameField) => frameNameField.name === mappingValueName);
|
||||||
|
const mapTextField = nameFrame.fields.find((field) => field.name === mappingTextName);
|
||||||
|
const keyIndex = mapValueField?.values.indexOf(field.name) ?? -1;
|
||||||
|
if (keyIndex !== -1 && mapTextField !== undefined) {
|
||||||
|
const newDisplayName = mapTextField.values[keyIndex];
|
||||||
|
// only add the property if a new name
|
||||||
|
if (newDisplayName !== undefined) {
|
||||||
|
dataConfig.displayName = newDisplayName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
outputFrame.fields.push({
|
outputFrame.fields.push({
|
||||||
...field,
|
...field,
|
||||||
config: {
|
config: {
|
||||||
|
|||||||
@@ -25,14 +25,22 @@ export interface Props {
|
|||||||
onChange: (mappings: FieldToConfigMapping[]) => void;
|
onChange: (mappings: FieldToConfigMapping[]) => void;
|
||||||
withReducers?: boolean;
|
withReducers?: boolean;
|
||||||
withNameAndValue?: boolean;
|
withNameAndValue?: boolean;
|
||||||
|
configOverride?: FieldToConfigMapHandler[];
|
||||||
}
|
}
|
||||||
|
|
||||||
export function FieldToConfigMappingEditor({ frame, mappings, onChange, withReducers, withNameAndValue }: Props) {
|
export function FieldToConfigMappingEditor({
|
||||||
|
frame,
|
||||||
|
mappings,
|
||||||
|
onChange,
|
||||||
|
withReducers,
|
||||||
|
withNameAndValue,
|
||||||
|
configOverride,
|
||||||
|
}: Props) {
|
||||||
const styles = useStyles2(getStyles);
|
const styles = useStyles2(getStyles);
|
||||||
const rows = getViewModelRows(frame, mappings, withNameAndValue);
|
const rows = getViewModelRows(frame, mappings, withNameAndValue);
|
||||||
const configProps = configMapHandlers.map((def) => configHandlerToSelectOption(def, false)) as Array<
|
const configProps = (configOverride ?? configMapHandlers).map((def) =>
|
||||||
SelectableValue<string>
|
configHandlerToSelectOption(def, false)
|
||||||
>;
|
) as Array<SelectableValue<string>>;
|
||||||
const hasAdditionalSettings = mappings.reduce(
|
const hasAdditionalSettings = mappings.reduce(
|
||||||
(prev, mapping) => prev || createsArgumentsEditor(mapping.handlerKey),
|
(prev, mapping) => prev || createsArgumentsEditor(mapping.handlerKey),
|
||||||
false
|
false
|
||||||
|
|||||||
Reference in New Issue
Block a user