Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .changeset/flat-carrots-smoke.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
"@hyperdx/common-utils": patch
"@hyperdx/api": patch
"@hyperdx/app": patch
---

chore: Standardize granularities
66 changes: 4 additions & 62 deletions packages/app/src/ChartUtils.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,10 @@ import {
ResponseJSON,
} from '@hyperdx/common-utils/dist/clickhouse';
import { isMetricChartConfig } from '@hyperdx/common-utils/dist/core/renderChartConfig';
import {
convertDateRangeToGranularityString,
Granularity,
} from '@hyperdx/common-utils/dist/core/utils';
import {
AggregateFunction as AggFnV2,
ChartConfigWithDateRange,
Expand Down Expand Up @@ -100,24 +104,6 @@ export const getMetricAggFns = (
];
};

export enum Granularity {
FifteenSecond = '15 second',
ThirtySecond = '30 second',
OneMinute = '1 minute',
FiveMinute = '5 minute',
TenMinute = '10 minute',
FifteenMinute = '15 minute',
ThirtyMinute = '30 minute',
OneHour = '1 hour',
TwoHour = '2 hour',
SixHour = '6 hour',
TwelveHour = '12 hour',
OneDay = '1 day',
TwoDay = '2 day',
SevenDay = '7 day',
ThirtyDay = '30 day',
}

export const DEFAULT_CHART_CONFIG: Omit<
SavedChartConfig,
'source' | 'connection'
Expand Down Expand Up @@ -268,50 +254,6 @@ export function TableToggle({
);
}

export function convertDateRangeToGranularityString(
dateRange: [Date, Date],
maxNumBuckets: number,
): Granularity {
const start = dateRange[0].getTime();
const end = dateRange[1].getTime();
const diffSeconds = Math.floor((end - start) / 1000);
const granularitySizeSeconds = Math.ceil(diffSeconds / maxNumBuckets);

if (granularitySizeSeconds <= 15) {
return Granularity.FifteenSecond;
} else if (granularitySizeSeconds <= 30) {
return Granularity.ThirtySecond;
} else if (granularitySizeSeconds <= 60) {
return Granularity.OneMinute;
} else if (granularitySizeSeconds <= 5 * 60) {
return Granularity.FiveMinute;
} else if (granularitySizeSeconds <= 10 * 60) {
return Granularity.TenMinute;
} else if (granularitySizeSeconds <= 15 * 60) {
return Granularity.FifteenMinute;
} else if (granularitySizeSeconds <= 30 * 60) {
return Granularity.ThirtyMinute;
} else if (granularitySizeSeconds <= 3600) {
return Granularity.OneHour;
} else if (granularitySizeSeconds <= 2 * 3600) {
return Granularity.TwoHour;
} else if (granularitySizeSeconds <= 6 * 3600) {
return Granularity.SixHour;
} else if (granularitySizeSeconds <= 12 * 3600) {
return Granularity.TwelveHour;
} else if (granularitySizeSeconds <= 24 * 3600) {
return Granularity.OneDay;
} else if (granularitySizeSeconds <= 2 * 24 * 3600) {
return Granularity.TwoDay;
} else if (granularitySizeSeconds <= 7 * 24 * 3600) {
return Granularity.SevenDay;
} else if (granularitySizeSeconds <= 30 * 24 * 3600) {
return Granularity.ThirtyDay;
}

return Granularity.ThirtyDay;
}

export const ChartKeyJoiner = ' · ';
export const PreviousPeriodSuffix = ' (previous)';

Expand Down
8 changes: 4 additions & 4 deletions packages/app/src/DBChartPage.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { useCallback, useRef, useState } from 'react';
import { useRef, useState } from 'react';
import dynamic from 'next/dynamic';
import Head from 'next/head';
import { parseAsJson, parseAsStringEnum, useQueryState } from 'nuqs';
import { useForm, useWatch } from 'react-hook-form';
import { parseAsJson, useQueryState } from 'nuqs';
import { useForm } from 'react-hook-form';
import { useHotkeys } from 'react-hotkeys-hook';
import { SavedChartConfig, SourceKind } from '@hyperdx/common-utils/dist/types';
import {
Expand All @@ -24,7 +24,7 @@ import {
} from '@tabler/icons-react';

import api from '@/api';
import { DEFAULT_CHART_CONFIG, Granularity } from '@/ChartUtils';
import { DEFAULT_CHART_CONFIG } from '@/ChartUtils';
import EditTimeChartForm from '@/components/DBEditTimeChartForm';
import { InputControlled } from '@/components/InputControlled';
import { SourceSelectControlled } from '@/components/SourceSelect';
Expand Down
7 changes: 5 additions & 2 deletions packages/app/src/GranularityPicker.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
import { memo } from 'react';
import { useController, UseControllerProps } from 'react-hook-form';
import { Granularity } from '@hyperdx/common-utils/dist/core/utils';
import { Select } from '@mantine/core';

import { Granularity } from './ChartUtils';

export default function GranularityPicker({
value,
onChange,
Expand Down Expand Up @@ -38,6 +37,10 @@ export default function GranularityPicker({
value: Granularity.TenMinute,
label: '10 Minutes Granularity',
},
{
value: Granularity.FifteenMinute,
label: '15 Minutes Granularity',
},
{
value: Granularity.ThirtyMinute,
label: '30 Minutes Granularity',
Expand Down
38 changes: 13 additions & 25 deletions packages/app/src/KubernetesDashboardPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import cx from 'classnames';
import sub from 'date-fns/sub';
import { useQueryState } from 'nuqs';
import { useForm, useWatch } from 'react-hook-form';
import { convertDateRangeToGranularityString } from '@hyperdx/common-utils/dist/core/utils';
import { SourceKind, TSource } from '@hyperdx/common-utils/dist/types';
import {
Alert,
Expand Down Expand Up @@ -44,7 +45,6 @@ import { SourceSelectControlled } from './components/SourceSelect';
import { useQueriedChartConfig } from './hooks/useChartConfig';
import { useDashboardRefresh } from './hooks/useDashboardRefresh';
import {
convertDateRangeToGranularityString,
convertV1ChartConfigToV2,
K8S_CPU_PERCENTAGE_NUMBER_FORMAT,
K8S_MEM_NUMBER_FORMAT,
Expand Down Expand Up @@ -1304,10 +1304,8 @@ function KubernetesDashboardPage() {
config={convertV1ChartConfigToV2(
{
dateRange,
granularity: convertDateRangeToGranularityString(
dateRange,
60,
),
granularity:
convertDateRangeToGranularityString(dateRange),
seriesReturnType: 'column',
series: [
{
Expand Down Expand Up @@ -1341,10 +1339,8 @@ function KubernetesDashboardPage() {
config={convertV1ChartConfigToV2(
{
dateRange,
granularity: convertDateRangeToGranularityString(
dateRange,
60,
),
granularity:
convertDateRangeToGranularityString(dateRange),
seriesReturnType: 'column',
series: [
{
Expand Down Expand Up @@ -1467,10 +1463,8 @@ function KubernetesDashboardPage() {
config={convertV1ChartConfigToV2(
{
dateRange,
granularity: convertDateRangeToGranularityString(
dateRange,
60,
),
granularity:
convertDateRangeToGranularityString(dateRange),
seriesReturnType: 'column',
series: [
{
Expand Down Expand Up @@ -1504,10 +1498,8 @@ function KubernetesDashboardPage() {
config={convertV1ChartConfigToV2(
{
dateRange,
granularity: convertDateRangeToGranularityString(
dateRange,
60,
),
granularity:
convertDateRangeToGranularityString(dateRange),
seriesReturnType: 'column',
series: [
{
Expand Down Expand Up @@ -1554,10 +1546,8 @@ function KubernetesDashboardPage() {
config={convertV1ChartConfigToV2(
{
dateRange,
granularity: convertDateRangeToGranularityString(
dateRange,
60,
),
granularity:
convertDateRangeToGranularityString(dateRange),
seriesReturnType: 'column',
series: [
{
Expand Down Expand Up @@ -1591,10 +1581,8 @@ function KubernetesDashboardPage() {
config={convertV1ChartConfigToV2(
{
dateRange,
granularity: convertDateRangeToGranularityString(
dateRange,
60,
),
granularity:
convertDateRangeToGranularityString(dateRange),
seriesReturnType: 'column',
series: [
{
Expand Down
18 changes: 5 additions & 13 deletions packages/app/src/NamespaceDetailsSidePanel.tsx
Original file line number Diff line number Diff line change
@@ -1,23 +1,19 @@
import * as React from 'react';
import Link from 'next/link';
import { StringParam, useQueryParam, withDefault } from 'use-query-params';
import { tcFromSource } from '@hyperdx/common-utils/dist/core/metadata';
import { convertDateRangeToGranularityString } from '@hyperdx/common-utils/dist/core/utils';
import { TSource } from '@hyperdx/common-utils/dist/types';
import {
Anchor,
Badge,
Box,
Card,
Drawer,
Flex,
Grid,
ScrollArea,
SegmentedControl,
Text,
} from '@mantine/core';

import {
convertDateRangeToGranularityString,
convertV1ChartConfigToV2,
K8S_CPU_PERCENTAGE_NUMBER_FORMAT,
K8S_MEM_NUMBER_FORMAT,
Expand Down Expand Up @@ -365,10 +361,8 @@ export default function NamespaceDetailsSidePanel({
config={convertV1ChartConfigToV2(
{
dateRange,
granularity: convertDateRangeToGranularityString(
dateRange,
60,
),
granularity:
convertDateRangeToGranularityString(dateRange),
seriesReturnType: 'column',
series: [
{
Expand Down Expand Up @@ -398,10 +392,8 @@ export default function NamespaceDetailsSidePanel({
config={convertV1ChartConfigToV2(
{
dateRange,
granularity: convertDateRangeToGranularityString(
dateRange,
60,
),
granularity:
convertDateRangeToGranularityString(dateRange),
seriesReturnType: 'column',
series: [
{
Expand Down
14 changes: 5 additions & 9 deletions packages/app/src/NodeDetailsSidePanel.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import * as React from 'react';
import { StringParam, useQueryParam, withDefault } from 'use-query-params';
import { tcFromSource } from '@hyperdx/common-utils/dist/core/metadata';
import { convertDateRangeToGranularityString } from '@hyperdx/common-utils/dist/core/utils';
import { TSource } from '@hyperdx/common-utils/dist/types';
import {
Badge,
Expand All @@ -13,7 +14,6 @@ import {
} from '@mantine/core';

import {
convertDateRangeToGranularityString,
convertV1ChartConfigToV2,
K8S_CPU_PERCENTAGE_NUMBER_FORMAT,
K8S_MEM_NUMBER_FORMAT,
Expand Down Expand Up @@ -374,10 +374,8 @@ export default function NodeDetailsSidePanel({
config={convertV1ChartConfigToV2(
{
dateRange,
granularity: convertDateRangeToGranularityString(
dateRange,
60,
),
granularity:
convertDateRangeToGranularityString(dateRange),
seriesReturnType: 'column',
series: [
{
Expand Down Expand Up @@ -407,10 +405,8 @@ export default function NodeDetailsSidePanel({
config={convertV1ChartConfigToV2(
{
dateRange,
granularity: convertDateRangeToGranularityString(
dateRange,
60,
),
granularity:
convertDateRangeToGranularityString(dateRange),
seriesReturnType: 'column',
series: [
{
Expand Down
16 changes: 5 additions & 11 deletions packages/app/src/PodDetailsSidePanel.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
import * as React from 'react';
import Link from 'next/link';
import { StringParam, useQueryParam, withDefault } from 'use-query-params';
import { tcFromSource } from '@hyperdx/common-utils/dist/core/metadata';
import { convertDateRangeToGranularityString } from '@hyperdx/common-utils/dist/core/utils';
import { TSource } from '@hyperdx/common-utils/dist/types';
import {
Anchor,
Box,
Card,
Drawer,
Expand All @@ -16,7 +15,6 @@ import {
} from '@mantine/core';

import {
convertDateRangeToGranularityString,
convertV1ChartConfigToV2,
K8S_CPU_PERCENTAGE_NUMBER_FORMAT,
K8S_MEM_NUMBER_FORMAT,
Expand Down Expand Up @@ -374,10 +372,8 @@ export default function PodDetailsSidePanel({
config={convertV1ChartConfigToV2(
{
dateRange,
granularity: convertDateRangeToGranularityString(
dateRange,
60,
),
granularity:
convertDateRangeToGranularityString(dateRange),
seriesReturnType: 'column',
series: [
{
Expand Down Expand Up @@ -408,10 +404,8 @@ export default function PodDetailsSidePanel({
config={convertV1ChartConfigToV2(
{
dateRange,
granularity: convertDateRangeToGranularityString(
dateRange,
60,
),
granularity:
convertDateRangeToGranularityString(dateRange),
seriesReturnType: 'column',
series: [
{
Expand Down
Loading
Loading