index.tsx 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import {t} from 'sentry/locale';
  2. import type {Organization, TagCollection} from 'sentry/types';
  3. import type {QueryFieldValue} from 'sentry/utils/discover/fields';
  4. import type {UseApiQueryResult} from 'sentry/utils/queryClient';
  5. import type RequestError from 'sentry/utils/requestError/requestError';
  6. import {getDatasetConfig} from 'sentry/views/dashboards/datasetConfig/base';
  7. import type {ValidateWidgetResponse} from 'sentry/views/dashboards/types';
  8. import type {DataSet} from '../../utils';
  9. import {DATA_SET_TO_WIDGET_TYPE} from '../../widgetBuilder';
  10. import {BuildStep} from '../buildStep';
  11. import {GroupBySelector} from './groupBySelector';
  12. interface Props {
  13. columns: QueryFieldValue[];
  14. dataSet: DataSet;
  15. onGroupByChange: (newFields: QueryFieldValue[]) => void;
  16. organization: Organization;
  17. tags: TagCollection;
  18. validatedWidgetResponse: UseApiQueryResult<ValidateWidgetResponse, RequestError>;
  19. }
  20. export function GroupByStep({
  21. dataSet,
  22. columns,
  23. onGroupByChange,
  24. organization,
  25. tags,
  26. validatedWidgetResponse,
  27. }: Props) {
  28. const datasetConfig = getDatasetConfig(DATA_SET_TO_WIDGET_TYPE[dataSet]);
  29. const groupByOptions = datasetConfig.getGroupByFieldOptions
  30. ? datasetConfig.getGroupByFieldOptions(organization, tags)
  31. : {};
  32. return (
  33. <BuildStep
  34. title={t('Group your results')}
  35. description={t('This is how you can group your data result by field or tag.')}
  36. >
  37. <GroupBySelector
  38. columns={columns}
  39. fieldOptions={groupByOptions}
  40. onChange={onGroupByChange}
  41. validatedWidgetResponse={validatedWidgetResponse}
  42. />
  43. </BuildStep>
  44. );
  45. }