LokiQueryEditor.tsx 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. // Libraries
  2. import React, { memo } from 'react';
  3. // Types
  4. import { AbsoluteTimeRange } from '@grafana/data';
  5. import { QueryEditorProps, Switch, DataSourceStatus } from '@grafana/ui';
  6. import { LokiDatasource } from '../datasource';
  7. import { LokiQuery } from '../types';
  8. import { LokiQueryField } from './LokiQueryField';
  9. import { useLokiSyntax } from './useLokiSyntax';
  10. type Props = QueryEditorProps<LokiDatasource, LokiQuery>;
  11. export const LokiQueryEditor = memo(function LokiQueryEditor(props: Props) {
  12. const { query, panelData, datasource, onChange, onRunQuery } = props;
  13. let absolute: AbsoluteTimeRange;
  14. if (panelData && panelData.request) {
  15. const { range } = panelData.request;
  16. absolute = {
  17. from: range.from.valueOf(),
  18. to: range.to.valueOf(),
  19. };
  20. } else {
  21. absolute = {
  22. from: Date.now() - 10000,
  23. to: Date.now(),
  24. };
  25. }
  26. const { isSyntaxReady, setActiveOption, refreshLabels, ...syntaxProps } = useLokiSyntax(
  27. datasource.languageProvider,
  28. // TODO maybe use real status
  29. DataSourceStatus.Connected,
  30. absolute
  31. );
  32. return (
  33. <div>
  34. <LokiQueryField
  35. datasource={datasource}
  36. datasourceStatus={DataSourceStatus.Connected}
  37. query={query}
  38. onChange={onChange}
  39. onRunQuery={onRunQuery}
  40. history={[]}
  41. panelData={panelData}
  42. onLoadOptions={setActiveOption}
  43. onLabelsRefresh={refreshLabels}
  44. syntaxLoaded={isSyntaxReady}
  45. absoluteRange={absolute}
  46. {...syntaxProps}
  47. />
  48. <div className="gf-form-inline">
  49. <div className="gf-form">
  50. <Switch label="Live" checked={!!query.live} onChange={() => onChange({ ...query, live: !query.live })} />
  51. </div>
  52. <div className="gf-form gf-form--grow">
  53. <div className="gf-form-label gf-form-label--grow" />
  54. </div>
  55. </div>
  56. </div>
  57. );
  58. });
  59. export default LokiQueryEditor;