Browse Source

ref: Move parsePeriodToHours() into utils/duration/ (#71960)

Related to https://github.com/getsentry/frontend-tsc/issues/13
Ryan Albrecht 9 months ago
parent
commit
9718b5ce14

+ 1 - 1
static/app/components/charts/intervalSelector.tsx

@@ -7,9 +7,9 @@ import {
   makeItem,
 } from 'sentry/components/timeRangeSelector/utils';
 import {t, tn} from 'sentry/locale';
-import {parsePeriodToHours} from 'sentry/utils/dates';
 import type EventView from 'sentry/utils/discover/eventView';
 import {INTERVAL_DISPLAY_MODES} from 'sentry/utils/discover/types';
+import {parsePeriodToHours} from 'sentry/utils/duration/parsePeriodToHours';
 
 type IntervalUnits = 's' | 'm' | 'h' | 'd';
 

+ 2 - 1
static/app/components/charts/utils.tsx

@@ -9,8 +9,9 @@ import {DEFAULT_STATS_PERIOD} from 'sentry/constants';
 import type {EventsStats, MultiSeriesEventsStats, PageFilters} from 'sentry/types';
 import type {ReactEchartsRef, Series} from 'sentry/types/echarts';
 import {defined, escape} from 'sentry/utils';
-import {getFormattedDate, parsePeriodToHours} from 'sentry/utils/dates';
+import {getFormattedDate} from 'sentry/utils/dates';
 import type {TableDataWithTitle} from 'sentry/utils/discover/discoverQuery';
+import {parsePeriodToHours} from 'sentry/utils/duration/parsePeriodToHours';
 import oxfordizeArray from 'sentry/utils/oxfordizeArray';
 import {decodeList} from 'sentry/utils/queryString';
 

+ 1 - 1
static/app/components/performance/searchBar.tsx

@@ -9,9 +9,9 @@ import {t} from 'sentry/locale';
 import type {Organization} from 'sentry/types/organization';
 import {trackAnalytics} from 'sentry/utils/analytics';
 import {browserHistory} from 'sentry/utils/browserHistory';
-import {parsePeriodToHours} from 'sentry/utils/dates';
 import type EventView from 'sentry/utils/discover/eventView';
 import {doDiscoverQuery} from 'sentry/utils/discover/genericDiscoverQuery';
+import {parsePeriodToHours} from 'sentry/utils/duration/parsePeriodToHours';
 import {MutableSearch} from 'sentry/utils/tokenizeSearch';
 import useApi from 'sentry/utils/useApi';
 import useOnClickOutside from 'sentry/utils/useOnClickOutside';

+ 1 - 1
static/app/components/timeRangeSelector/index.tsx

@@ -20,8 +20,8 @@ import {
   getPeriodAgo,
   getUserTimezone,
   getUtcToSystem,
-  parsePeriodToHours,
 } from 'sentry/utils/dates';
+import {parsePeriodToHours} from 'sentry/utils/duration/parsePeriodToHours';
 import getRouteStringFromRoutes from 'sentry/utils/getRouteStringFromRoutes';
 import useOrganization from 'sentry/utils/useOrganization';
 import useRouter from 'sentry/utils/useRouter';

+ 1 - 23
static/app/utils/dates.spec.tsx

@@ -1,12 +1,7 @@
 import {UserFixture} from 'sentry-fixture/user';
 
 import ConfigStore from 'sentry/stores/configStore';
-import {
-  getTimeFormat,
-  parsePeriodToHours,
-  setDateToTime,
-  shouldUse24Hours,
-} from 'sentry/utils/dates';
+import {getTimeFormat, setDateToTime, shouldUse24Hours} from 'sentry/utils/dates';
 
 describe('utils.dates', function () {
   describe('setDateToTime', function () {
@@ -29,23 +24,6 @@ describe('utils.dates', function () {
     });
   });
 
-  describe('parsePeriodToHours()', function () {
-    it('can convert standard formats', function () {
-      expect(parsePeriodToHours('30s').toFixed(4)).toBe('0.0083');
-      expect(parsePeriodToHours('1m').toFixed(4)).toBe('0.0167');
-      expect(parsePeriodToHours('1h')).toBe(1);
-      expect(parsePeriodToHours('24h')).toBe(24);
-      expect(parsePeriodToHours('1d')).toBe(24);
-      expect(parsePeriodToHours('2w')).toBe(336);
-    });
-
-    it('handle invalid statsPeriod', function () {
-      expect(parsePeriodToHours('24')).toBe(24 / 3600);
-      expect(parsePeriodToHours('')).toBe(-1);
-      expect(parsePeriodToHours('24x')).toBe(-1);
-    });
-  });
-
   describe('user clock preferences', function () {
     afterEach(function () {
       ConfigStore.set('user', UserFixture({}));

+ 0 - 32
static/app/utils/dates.tsx

@@ -1,6 +1,5 @@
 import moment from 'moment';
 
-import {parseStatsPeriod} from 'sentry/components/organizations/pageFilters/parse';
 import ConfigStore from 'sentry/stores/configStore';
 import type {DateString} from 'sentry/types/core';
 
@@ -185,37 +184,6 @@ export function getStartOfPeriodAgo(
   return getStartOfDay(getPeriodAgo(period, unit));
 }
 
-/**
- * This parses our period shorthand strings (e.g. <int><unit>)
- * and converts it into hours
- */
-export function parsePeriodToHours(str: string): number {
-  const result = parseStatsPeriod(str);
-
-  if (!result) {
-    return -1;
-  }
-
-  const {period, periodLength} = result;
-
-  const periodNumber = parseInt(period, 10);
-
-  switch (periodLength) {
-    case 's':
-      return periodNumber / (60 * 60);
-    case 'm':
-      return periodNumber / 60;
-    case 'h':
-      return periodNumber;
-    case 'd':
-      return periodNumber * 24;
-    case 'w':
-      return periodNumber * 24 * 7;
-    default:
-      return -1;
-  }
-}
-
 export function statsPeriodToDays(
   statsPeriod?: string | null,
   start?: DateString,

+ 18 - 0
static/app/utils/duration/parsePeriodToHours.spec.tsx

@@ -0,0 +1,18 @@
+import {parsePeriodToHours} from 'sentry/utils/duration/parsePeriodToHours';
+
+describe('parsePeriodToHours()', function () {
+  it('can convert standard formats', function () {
+    expect(parsePeriodToHours('30s').toFixed(4)).toBe('0.0083');
+    expect(parsePeriodToHours('1m').toFixed(4)).toBe('0.0167');
+    expect(parsePeriodToHours('1h')).toBe(1);
+    expect(parsePeriodToHours('24h')).toBe(24);
+    expect(parsePeriodToHours('1d')).toBe(24);
+    expect(parsePeriodToHours('2w')).toBe(336);
+  });
+
+  it('handle invalid statsPeriod', function () {
+    expect(parsePeriodToHours('24')).toBe(24 / 3600);
+    expect(parsePeriodToHours('')).toBe(-1);
+    expect(parsePeriodToHours('24x')).toBe(-1);
+  });
+});

+ 32 - 0
static/app/utils/duration/parsePeriodToHours.tsx

@@ -0,0 +1,32 @@
+import {parseStatsPeriod} from 'sentry/components/organizations/pageFilters/parse';
+
+/**
+ * This parses our period shorthand strings (e.g. <int><unit>)
+ * and converts it into hours
+ */
+export function parsePeriodToHours(str: string): number {
+  const result = parseStatsPeriod(str);
+
+  if (!result) {
+    return -1;
+  }
+
+  const {period, periodLength} = result;
+
+  const periodNumber = parseInt(period, 10);
+
+  switch (periodLength) {
+    case 's':
+      return periodNumber / (60 * 60);
+    case 'm':
+      return periodNumber / 60;
+    case 'h':
+      return periodNumber;
+    case 'd':
+      return periodNumber * 24;
+    case 'w':
+      return periodNumber * 24 * 7;
+    default:
+      return -1;
+  }
+}

+ 1 - 1
static/app/utils/metrics/useMetricsQuery.tsx

@@ -1,7 +1,6 @@
 import {useMemo} from 'react';
 
 import type {PageFilters} from 'sentry/types/core';
-import {parsePeriodToHours} from 'sentry/utils/dates';
 import {getDateTimeParams, getMetricsInterval} from 'sentry/utils/metrics';
 import {getUseCaseFromMRI, MRIToField} from 'sentry/utils/metrics/mri';
 import {useApiQuery} from 'sentry/utils/queryClient';
@@ -12,6 +11,7 @@ import type {
   MetricsQueryApiResponse,
   MRI,
 } from '../../types/metrics';
+import {parsePeriodToHours} from '../duration/parsePeriodToHours';
 
 export function createMqlQuery({
   field,

+ 1 - 1
static/app/utils/performance/contexts/metricsCardinality.tsx

@@ -4,8 +4,8 @@ import type {Location} from 'history';
 
 import type {Organization} from 'sentry/types/organization';
 import {trackAnalytics} from 'sentry/utils/analytics';
-import {parsePeriodToHours} from 'sentry/utils/dates';
 import EventView from 'sentry/utils/discover/eventView';
+import {parsePeriodToHours} from 'sentry/utils/duration/parsePeriodToHours';
 import {canUseMetricsData} from 'sentry/utils/performance/contexts/metricsEnhancedSetting';
 import type {MetricsCompatibilityData} from 'sentry/utils/performance/metricsEnhanced/metricsCompatibilityQuery';
 import MetricsCompatibilityQuery from 'sentry/utils/performance/metricsEnhanced/metricsCompatibilityQuery';

Some files were not shown because too many files changed in this diff