index.tsx 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import styled from '@emotion/styled';
  2. import {defined} from 'sentry/utils';
  3. import {
  4. useExploreDataset,
  5. useExploreFields,
  6. useExploreGroupBys,
  7. useExploreMode,
  8. useExploreSortBys,
  9. useExploreVisualizes,
  10. useSetExploreDataset,
  11. useSetExploreMode,
  12. useSetExploreSortBys,
  13. } from 'sentry/views/explore/contexts/pageParamsContext';
  14. import {Mode} from 'sentry/views/explore/contexts/pageParamsContext/mode';
  15. import {ToolbarDataset} from 'sentry/views/explore/toolbar/toolbarDataset';
  16. import {ToolbarGroupBy} from 'sentry/views/explore/toolbar/toolbarGroupBy';
  17. import {ToolbarMode} from 'sentry/views/explore/toolbar/toolbarMode';
  18. import {ToolbarSaveAs} from 'sentry/views/explore/toolbar/toolbarSaveAs';
  19. import {ToolbarSortBy} from 'sentry/views/explore/toolbar/toolbarSortBy';
  20. import {ToolbarSuggestedQueries} from 'sentry/views/explore/toolbar/toolbarSuggestedQueries';
  21. import {ToolbarVisualize} from 'sentry/views/explore/toolbar/toolbarVisualize';
  22. type Extras = 'dataset toggle';
  23. interface ExploreToolbarProps {
  24. extras?: Extras[];
  25. width?: number;
  26. }
  27. export function ExploreToolbar({extras, width}: ExploreToolbarProps) {
  28. const dataset = useExploreDataset();
  29. const setDataset = useSetExploreDataset();
  30. const mode = useExploreMode();
  31. const setMode = useSetExploreMode();
  32. const fields = useExploreFields();
  33. const groupBys = useExploreGroupBys();
  34. const visualizes = useExploreVisualizes();
  35. const sortBys = useExploreSortBys();
  36. const setSortBys = useSetExploreSortBys();
  37. return (
  38. <Container width={width}>
  39. {extras?.includes('dataset toggle') && (
  40. <ToolbarDataset dataset={dataset} setDataset={setDataset} />
  41. )}
  42. <ToolbarMode mode={mode} setMode={setMode} />
  43. <ToolbarVisualize />
  44. {mode === Mode.AGGREGATE && <ToolbarGroupBy />}
  45. <ToolbarSortBy
  46. fields={fields}
  47. groupBys={groupBys}
  48. visualizes={visualizes}
  49. sorts={sortBys}
  50. setSorts={setSortBys}
  51. />
  52. <ToolbarSaveAs />
  53. <ToolbarSuggestedQueries />
  54. </Container>
  55. );
  56. }
  57. const Container = styled('div')<{width?: number}>`
  58. ${p => defined(p.width) && `min-width: ${p.width}px;`}
  59. `;