From 0f17034af7a069bdbc7efa36af803fddb5d68628 Mon Sep 17 00:00:00 2001 From: Cedric van Putten Date: Sun, 25 Aug 2024 10:47:13 +0200 Subject: [PATCH] feature(webui): add tooltip explaining file or bundle sizes (#68) --- webui/bun.lockb | Bin 521701 -> 532162 bytes webui/package.json | 1 + webui/src/app/(atlas)/[bundle].tsx | 6 +- .../app/(atlas)/[bundle]/folders/[path].tsx | 4 +- .../app/(atlas)/[bundle]/modules/[path].tsx | 4 +- webui/src/components/BundleGraph.tsx | 4 +- webui/src/components/FileSize.tsx | 54 ++++++++++++++++++ webui/src/ui/Tooltip.tsx | 30 ++++++++++ webui/src/utils/formatString.ts | 9 --- 9 files changed, 94 insertions(+), 18 deletions(-) create mode 100644 webui/src/components/FileSize.tsx create mode 100644 webui/src/ui/Tooltip.tsx delete mode 100644 webui/src/utils/formatString.ts diff --git a/webui/bun.lockb b/webui/bun.lockb index e11c602c36cd8ef802b058b2290a8a2eb1561e88..97e6b19858fba84010b9738ce36a1eee9d9267c3 100755 GIT binary patch delta 85347 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 delta 80342 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 diff --git a/webui/package.json b/webui/package.json index de00117..2686332 100644 --- a/webui/package.json +++ b/webui/package.json @@ -21,6 +21,7 @@ "@radix-ui/react-label": "^2.0.2", "@radix-ui/react-select": "^2.0.0", "@radix-ui/react-toast": "^1.1.5", + "@radix-ui/react-tooltip": "^1.1.2", "@tailwindcss/typography": "^0.5.10", "@tanstack/react-query": "^5.22.2", "class-variance-authority": "^0.7.0", diff --git a/webui/src/app/(atlas)/[bundle].tsx b/webui/src/app/(atlas)/[bundle].tsx index 0e6e3c3..dc0f290 100644 --- a/webui/src/app/(atlas)/[bundle].tsx +++ b/webui/src/app/(atlas)/[bundle].tsx @@ -3,6 +3,7 @@ import { keepPreviousData, useQuery } from '@tanstack/react-query'; import type { ModuleGraphResponse } from '~/app/--/bundles/[bundle]/modules/graph+api'; import { BundleGraph } from '~/components/BundleGraph'; import { BundleSelectForm } from '~/components/BundleSelectForm'; +import { FileSize } from '~/components/FileSize'; import { ModuleFiltersForm } from '~/components/ModuleFilterForm'; import { PropertySummary } from '~/components/PropertySummary'; import { @@ -17,7 +18,6 @@ import { Layout, LayoutHeader, LayoutNavigation, LayoutTitle } from '~/ui/Layout import { Tag } from '~/ui/Tag'; import { fetchApi, handleApiError } from '~/utils/api'; import { type ModuleFilters, moduleFiltersToParams } from '~/utils/filters'; -import { formatFileSize } from '~/utils/formatString'; export default function BundlePage() { const { bundle } = useBundle(); @@ -40,14 +40,14 @@ export default function BundlePage() { {!!modules.data && {modules.data.bundle.moduleFiles} modules} - {!!modules.data && {formatFileSize(modules.data.bundle.moduleSize)}} + {!!modules.data && } {!!modules.data && modulesAreFiltered && ( visible:} > {modules.data.filtered.moduleFiles} modules - {formatFileSize(modules.data.filtered.moduleSize)} + )} diff --git a/webui/src/app/(atlas)/[bundle]/folders/[path].tsx b/webui/src/app/(atlas)/[bundle]/folders/[path].tsx index 9da9ea3..04e1440 100644 --- a/webui/src/app/(atlas)/[bundle]/folders/[path].tsx +++ b/webui/src/app/(atlas)/[bundle]/folders/[path].tsx @@ -5,6 +5,7 @@ import type { ModuleGraphResponse } from '~/app/--/bundles/[bundle]/modules/grap import { BreadcrumbLinks } from '~/components/BreadcrumbLinks'; import { BundleGraph } from '~/components/BundleGraph'; import { BundleSelectForm } from '~/components/BundleSelectForm'; +import { FileSize } from '~/components/FileSize'; import { ModuleFiltersForm } from '~/components/ModuleFilterForm'; import { PropertySummary } from '~/components/PropertySummary'; import { @@ -19,7 +20,6 @@ import { Layout, LayoutHeader, LayoutNavigation, LayoutTitle } from '~/ui/Layout import { Tag } from '~/ui/Tag'; import { fetchApi, handleApiError } from '~/utils/api'; import { type ModuleFilters, moduleFiltersToParams } from '~/utils/filters'; -import { formatFileSize } from '~/utils/formatString'; export default function FolderPage() { const { path: relativePath } = useLocalSearchParams<{ path: string }>(); @@ -47,7 +47,7 @@ export default function FolderPage() { )} {!!modules.data?.filtered.moduleSize && ( - {formatFileSize(modules.data.filtered.moduleSize)} + )} diff --git a/webui/src/app/(atlas)/[bundle]/modules/[path].tsx b/webui/src/app/(atlas)/[bundle]/modules/[path].tsx index 4003d9e..e0c50c0 100644 --- a/webui/src/app/(atlas)/[bundle]/modules/[path].tsx +++ b/webui/src/app/(atlas)/[bundle]/modules/[path].tsx @@ -3,6 +3,7 @@ import { useLocalSearchParams } from 'expo-router'; import { BreadcrumbLinks } from '~/components/BreadcrumbLinks'; import { BundleSelectForm } from '~/components/BundleSelectForm'; +import { FileSize } from '~/components/FileSize'; import { ModuleCode } from '~/components/ModuleCode'; import { ModuleReference } from '~/components/ModuleReference'; import { PropertySummary } from '~/components/PropertySummary'; @@ -12,7 +13,6 @@ import { Layout, LayoutHeader, LayoutNavigation, LayoutTitle } from '~/ui/Layout import { Skeleton } from '~/ui/Skeleton'; import { Tag } from '~/ui/Tag'; import { fetchApi, handleApiError } from '~/utils/api'; -import { formatFileSize } from '~/utils/formatString'; import { type AtlasModule } from '~core/data/types'; export default function ModulePage() { @@ -32,7 +32,7 @@ export default function ModulePage() { {!!module.data?.package && {module.data.package}} {!!module.data && {getModuleType(module.data)}} - {!!module.data && {formatFileSize(module.data.size)}} + {!!module.data && } diff --git a/webui/src/components/BundleGraph.tsx b/webui/src/components/BundleGraph.tsx index 3560533..4fdc2e9 100644 --- a/webui/src/components/BundleGraph.tsx +++ b/webui/src/components/BundleGraph.tsx @@ -8,7 +8,7 @@ import EchartsReact from 'echarts-for-react/lib/core'; import { useRouter } from 'expo-router'; import { useMemo } from 'react'; -import { formatFileSize } from '~/utils/formatString'; +import { formatByteSize } from '~/components/FileSize'; import type { TreemapNode } from '~/utils/treemap'; import type { PartialAtlasBundle } from '~core/data/types'; @@ -195,7 +195,7 @@ function getBundleGraphTooltip( ${formatNodeValue(node)}
- Size: ${formatFileSize(size)} + Size: ${formatByteSize(size)} ${ files === 1 ? `Files: ${files}` diff --git a/webui/src/components/FileSize.tsx b/webui/src/components/FileSize.tsx new file mode 100644 index 0000000..e95d581 --- /dev/null +++ b/webui/src/components/FileSize.tsx @@ -0,0 +1,54 @@ +// @ts-expect-error +import AsteriskIcon from 'lucide-react/dist/esm/icons/asterisk'; + +import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '~/ui/Tooltip'; + +type BundleFileSizeProps = { + /** The size of the files or bundle, in bytes */ + byteSize: number; +}; + +export function FileSize(props: BundleFileSizeProps) { + return ( +
+ {formatByteSize(props.byteSize)} + + + + + + +

+ All file sizes are calculated based on the transpiled JavaScript byte size. +

+

+ While these sizes might differ from actual bundle size when using{' '} + + Hermes Bytecode (HBC) + + , the relative proportions are still correct. +

+
+
+
+
+ ); +} + +/** Format files or bundle size, from bytes to the nearest unit */ +export function formatByteSize(size: number) { + if (size < 1024) { + return size + 'B'; + } else if (size < 1024 * 1024) { + return (size / 1024).toFixed(1) + 'KB'; + } else { + return (size / 1024 / 1024).toFixed(1) + 'MB'; + } +} diff --git a/webui/src/ui/Tooltip.tsx b/webui/src/ui/Tooltip.tsx new file mode 100644 index 0000000..9daff07 --- /dev/null +++ b/webui/src/ui/Tooltip.tsx @@ -0,0 +1,30 @@ +// see: https://ui.shadcn.com/docs/components/tooltip + +import * as TooltipPrimitive from '@radix-ui/react-tooltip'; +import { cx } from 'class-variance-authority'; +import { type ComponentPropsWithoutRef, type ElementRef, forwardRef } from 'react'; + +export const TooltipProvider = TooltipPrimitive.Provider; + +export const Tooltip = TooltipPrimitive.Root; + +export const TooltipTrigger = TooltipPrimitive.Trigger; + +export const TooltipContent = forwardRef< + ElementRef, + ComponentPropsWithoutRef +>(({ className, sideOffset = 4, ...props }, ref) => ( + +)); + +TooltipContent.displayName = TooltipPrimitive.Content.displayName; diff --git a/webui/src/utils/formatString.ts b/webui/src/utils/formatString.ts deleted file mode 100644 index a54bbd1..0000000 --- a/webui/src/utils/formatString.ts +++ /dev/null @@ -1,9 +0,0 @@ -export function formatFileSize(size: number) { - if (size < 1024) { - return size + 'B'; - } else if (size < 1024 * 1024) { - return (size / 1024).toFixed(1) + 'KB'; - } else { - return (size / 1024 / 1024).toFixed(1) + 'MB'; - } -}