mirror of
https://github.com/grafana/grafana.git
synced 2025-02-13 09:05:45 -06:00
* Add and configure eslint-plugin-import * Fix the lint:ts npm command * Autofix + prettier all the files * Manually fix remaining files * Move jquery code in jest-setup to external file to safely reorder imports * Resolve issue caused by circular dependencies within Prometheus * Update .betterer.results * Fix missing // @ts-ignore * ignore iconBundle.ts * Fix missing // @ts-ignore
63 lines
1.6 KiB
TypeScript
63 lines
1.6 KiB
TypeScript
import { css } from '@emotion/css';
|
|
import React, { useState } from 'react';
|
|
|
|
import { GrafanaTheme2 } from '@grafana/data';
|
|
import { getBackendSrv, config } from '@grafana/runtime';
|
|
import { Button, CodeEditor, Modal, useTheme2 } from '@grafana/ui';
|
|
|
|
export const CrawlerStartButton = () => {
|
|
const styles = getStyles(useTheme2());
|
|
const [open, setOpen] = useState(false);
|
|
const [body, setBody] = useState({
|
|
mode: 'thumbs',
|
|
theme: config.theme2.isLight ? 'light' : 'dark',
|
|
});
|
|
const onDismiss = () => setOpen(false);
|
|
const doStart = () => {
|
|
getBackendSrv()
|
|
.post('/api/admin/crawler/start', body)
|
|
.then((v) => {
|
|
console.log('GOT', v);
|
|
onDismiss();
|
|
});
|
|
};
|
|
|
|
return (
|
|
<>
|
|
<Modal title={'Start crawler'} isOpen={open} onDismiss={onDismiss}>
|
|
<div className={styles.wrap}>
|
|
<CodeEditor
|
|
height={200}
|
|
value={JSON.stringify(body, null, 2) ?? ''}
|
|
showLineNumbers={false}
|
|
readOnly={false}
|
|
language="json"
|
|
showMiniMap={false}
|
|
onBlur={(text: string) => {
|
|
setBody(JSON.parse(text)); // force JSON?
|
|
}}
|
|
/>
|
|
</div>
|
|
<Modal.ButtonRow>
|
|
<Button onClick={doStart}>Start</Button>
|
|
<Button variant="secondary" onClick={onDismiss}>
|
|
Cancel
|
|
</Button>
|
|
</Modal.ButtonRow>
|
|
</Modal>
|
|
|
|
<Button onClick={() => setOpen(true)} variant="primary">
|
|
Start
|
|
</Button>
|
|
</>
|
|
);
|
|
};
|
|
|
|
const getStyles = (theme: GrafanaTheme2) => {
|
|
return {
|
|
wrap: css`
|
|
border: 2px solid #111;
|
|
`,
|
|
};
|
|
};
|