AnnotationsQueryEditor.tsx 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. // Libraries
  2. import React, { memo } from 'react';
  3. // Types
  4. import { DataSourceApi, DataSourceJsonData, DataSourceStatus } from '@grafana/ui';
  5. import { LokiQuery } from '../types';
  6. import { useLokiSyntax } from './useLokiSyntax';
  7. import { LokiQueryFieldForm } from './LokiQueryFieldForm';
  8. interface Props {
  9. expr: string;
  10. datasource: DataSourceApi<LokiQuery, DataSourceJsonData>;
  11. onChange: (expr: string) => void;
  12. }
  13. export const LokiAnnotationsQueryEditor = memo(function LokiAnnotationQueryEditor(props: Props) {
  14. const { expr, datasource, onChange } = props;
  15. // Timerange to get existing labels from. Hard coding like this seems to be good enough right now.
  16. const absolute = {
  17. from: Date.now() - 10000,
  18. to: Date.now(),
  19. };
  20. const { isSyntaxReady, setActiveOption, refreshLabels, ...syntaxProps } = useLokiSyntax(
  21. datasource.languageProvider,
  22. DataSourceStatus.Connected,
  23. absolute
  24. );
  25. const query: LokiQuery = {
  26. refId: '',
  27. expr,
  28. };
  29. return (
  30. <div className="gf-form-group">
  31. <LokiQueryFieldForm
  32. datasource={datasource}
  33. datasourceStatus={DataSourceStatus.Connected}
  34. query={query}
  35. onChange={(query: LokiQuery) => onChange(query.expr)}
  36. onRunQuery={() => {}}
  37. history={[]}
  38. panelData={null}
  39. onLoadOptions={setActiveOption}
  40. onLabelsRefresh={refreshLabels}
  41. syntaxLoaded={isSyntaxReady}
  42. absoluteRange={absolute}
  43. {...syntaxProps}
  44. />
  45. </div>
  46. );
  47. });