D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
usr
/
share
/
grafana
/
public
/
app
/
plugins
/
datasource
/
prometheus
/
configuration
/
Filename :
ExemplarsSettings.tsx
back
Copy
import { css } from '@emotion/css'; import React from 'react'; import { selectors } from '@grafana/e2e-selectors'; import { ConfigSubSection } from '@grafana/experimental'; import { Button, useTheme2 } from '@grafana/ui'; import { ExemplarTraceIdDestination } from '../types'; import { overhaulStyles } from './ConfigEditor'; import ExemplarSetting from './ExemplarSetting'; type Props = { options?: ExemplarTraceIdDestination[]; onChange: (value: ExemplarTraceIdDestination[]) => void; disabled?: boolean; }; export function ExemplarsSettings({ options, onChange, disabled }: Props) { const theme = useTheme2(); const styles = overhaulStyles(theme); return ( <div className={styles.sectionBottomPadding}> <ConfigSubSection title="Exemplars" className={styles.container}> {options && options.map((option, index) => { return ( <ExemplarSetting key={index} value={option} onChange={(newField) => { const newOptions = [...options]; newOptions.splice(index, 1, newField); onChange(newOptions); }} onDelete={() => { const newOptions = [...options]; newOptions.splice(index, 1); onChange(newOptions); }} disabled={disabled} /> ); })} {!disabled && ( <Button variant="secondary" aria-label={selectors.components.DataSource.Prometheus.configPage.exemplarsAddButton} className={css` margin-bottom: 10px; `} icon="plus" onClick={(event) => { event.preventDefault(); const newOptions = [...(options || []), { name: 'traceID' }]; onChange(newOptions); }} > Add </Button> )} {disabled && !options && <i>No exemplars configurations</i>} </ConfigSubSection> </div> ); }