getWebVitalValues.tsx 1.1 KB

1234567891011121314151617181920212223242526272829
  1. import {TableDataRow} from 'sentry/utils/discover/discoverQuery';
  2. import {WebVitals} from 'sentry/views/performance/browser/webVitals/utils/types';
  3. function hasWebVital(data: TableDataRow, webVital: WebVitals): boolean {
  4. if (Object.keys(data).includes(`count_web_vitals(measurements.${webVital}, any)`)) {
  5. return (data[`count_web_vitals(measurements.${webVital}, any)`] as number) > 0;
  6. }
  7. return false;
  8. }
  9. function getWebVital(data: TableDataRow, webVital: WebVitals): number {
  10. return data[`p75(measurements.${webVital})`] as number;
  11. }
  12. export function getWebVitalsFromTableData(data: TableDataRow) {
  13. const hasLcp = hasWebVital(data, 'lcp');
  14. const hasFcp = hasWebVital(data, 'fcp');
  15. const hasCls = hasWebVital(data, 'cls');
  16. const hasFid = hasWebVital(data, 'fid');
  17. const hasTtfb = hasWebVital(data, 'ttfb');
  18. return {
  19. lcp: hasLcp ? getWebVital(data, 'lcp') : null,
  20. fcp: hasFcp ? getWebVital(data, 'fcp') : null,
  21. cls: hasCls ? getWebVital(data, 'cls') : null,
  22. ttfb: hasTtfb ? getWebVital(data, 'ttfb') : null,
  23. fid: hasFid ? getWebVital(data, 'fid') : null,
  24. };
  25. }