|
|
|
@ -30,48 +30,46 @@ const getStyles = (theme: GrafanaTheme2) => ({ |
|
|
|
|
`,
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
export const DataLinkEditor: React.FC<DataLinkEditorProps> = React.memo( |
|
|
|
|
({ index, value, onChange, suggestions, isLast }) => { |
|
|
|
|
const styles = useStyles2(getStyles); |
|
|
|
|
export const DataLinkEditor = React.memo(({ index, value, onChange, suggestions, isLast }: DataLinkEditorProps) => { |
|
|
|
|
const styles = useStyles2(getStyles); |
|
|
|
|
|
|
|
|
|
const onUrlChange = (url: string, callback?: () => void) => { |
|
|
|
|
onChange(index, { ...value, url }, callback); |
|
|
|
|
}; |
|
|
|
|
const onTitleChange = (event: ChangeEvent<HTMLInputElement>) => { |
|
|
|
|
onChange(index, { ...value, title: event.target.value }); |
|
|
|
|
}; |
|
|
|
|
const onUrlChange = (url: string, callback?: () => void) => { |
|
|
|
|
onChange(index, { ...value, url }, callback); |
|
|
|
|
}; |
|
|
|
|
const onTitleChange = (event: ChangeEvent<HTMLInputElement>) => { |
|
|
|
|
onChange(index, { ...value, title: event.target.value }); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
const onOpenInNewTabChanged = () => { |
|
|
|
|
onChange(index, { ...value, targetBlank: !value.targetBlank }); |
|
|
|
|
}; |
|
|
|
|
const onOpenInNewTabChanged = () => { |
|
|
|
|
onChange(index, { ...value, targetBlank: !value.targetBlank }); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
return ( |
|
|
|
|
<div className={styles.listItem}> |
|
|
|
|
<Field label="Title"> |
|
|
|
|
<Input value={value.title} onChange={onTitleChange} placeholder="Show details" /> |
|
|
|
|
</Field> |
|
|
|
|
return ( |
|
|
|
|
<div className={styles.listItem}> |
|
|
|
|
<Field label="Title"> |
|
|
|
|
<Input value={value.title} onChange={onTitleChange} placeholder="Show details" /> |
|
|
|
|
</Field> |
|
|
|
|
|
|
|
|
|
<Field |
|
|
|
|
label="URL" |
|
|
|
|
invalid={isCompactUrl(value.url)} |
|
|
|
|
error="Data link is an Explore URL in a deprecated format. Please visit the URL to be redirected, and edit this data link to use that URL." |
|
|
|
|
> |
|
|
|
|
<DataLinkInput value={value.url} onChange={onUrlChange} suggestions={suggestions} /> |
|
|
|
|
</Field> |
|
|
|
|
<Field |
|
|
|
|
label="URL" |
|
|
|
|
invalid={isCompactUrl(value.url)} |
|
|
|
|
error="Data link is an Explore URL in a deprecated format. Please visit the URL to be redirected, and edit this data link to use that URL." |
|
|
|
|
> |
|
|
|
|
<DataLinkInput value={value.url} onChange={onUrlChange} suggestions={suggestions} /> |
|
|
|
|
</Field> |
|
|
|
|
|
|
|
|
|
<Field label="Open in new tab"> |
|
|
|
|
<Switch value={value.targetBlank || false} onChange={onOpenInNewTabChanged} /> |
|
|
|
|
</Field> |
|
|
|
|
<Field label="Open in new tab"> |
|
|
|
|
<Switch value={value.targetBlank || false} onChange={onOpenInNewTabChanged} /> |
|
|
|
|
</Field> |
|
|
|
|
|
|
|
|
|
{isLast && ( |
|
|
|
|
<div className={styles.infoText}> |
|
|
|
|
With data links you can reference data variables like series name, labels and values. Type CMD+Space, |
|
|
|
|
CTRL+Space, or $ to open variable suggestions. |
|
|
|
|
</div> |
|
|
|
|
)} |
|
|
|
|
</div> |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
); |
|
|
|
|
{isLast && ( |
|
|
|
|
<div className={styles.infoText}> |
|
|
|
|
With data links you can reference data variables like series name, labels and values. Type CMD+Space, |
|
|
|
|
CTRL+Space, or $ to open variable suggestions. |
|
|
|
|
</div> |
|
|
|
|
)} |
|
|
|
|
</div> |
|
|
|
|
); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
DataLinkEditor.displayName = 'DataLinkEditor'; |
|
|
|
|