You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
1.6 KiB
68 lines
1.6 KiB
import React from 'react'; |
|
import { PanelProps } from '@grafana/data'; |
|
import { SimpleOptions } from 'types'; |
|
import { css, cx } from 'emotion'; |
|
import { stylesFactory, useTheme } from '@grafana/ui'; |
|
|
|
interface Props extends PanelProps<SimpleOptions> {} |
|
|
|
export const SimplePanel: React.FC<Props> = ({ options, data, width, height }) => { |
|
const theme = useTheme(); |
|
const styles = getStyles(); |
|
return ( |
|
<div |
|
className={cx( |
|
styles.wrapper, |
|
css` |
|
width: ${width}px; |
|
height: ${height}px; |
|
` |
|
)} |
|
> |
|
<svg |
|
className={styles.svg} |
|
width={width} |
|
height={height} |
|
xmlns="http://www.w3.org/2000/svg" |
|
xmlnsXlink="http://www.w3.org/1999/xlink" |
|
viewBox={`-${width / 2} -${height / 2} ${width} ${height}`} |
|
> |
|
<g> |
|
<circle style={{ fill: `${theme.isLight ? theme.palette.greenBase : theme.palette.blue95}` }} r={100} /> |
|
</g> |
|
</svg> |
|
|
|
<div className={styles.textBox}> |
|
{options.showSeriesCount && ( |
|
<div |
|
className={css` |
|
font-size: ${theme.typography.size[options.seriesCountSize]}; |
|
`} |
|
> |
|
Number of series: {data.series.length} |
|
</div> |
|
)} |
|
<div>Text option value: {options.text}</div> |
|
</div> |
|
</div> |
|
); |
|
}; |
|
|
|
const getStyles = stylesFactory(() => { |
|
return { |
|
wrapper: css` |
|
position: relative; |
|
`, |
|
svg: css` |
|
position: absolute; |
|
top: 0; |
|
left: 0; |
|
`, |
|
textBox: css` |
|
position: absolute; |
|
bottom: 0; |
|
left: 0; |
|
padding: 10px; |
|
`, |
|
}; |
|
});
|
|
|