All files / src/components/debugger DebuggerRomUsageOverview.tsx

100% Statements 14/14
100% Branches 4/4
100% Functions 3/3
100% Lines 14/14

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 1011x 1x     1x 1x 1x       1x 1x   1x   27x                   1x                     27x                           1x         3x                                                                                       1x  
import React from "react";
import styled from "styled-components";
import type { BuildUsageOverview } from "lib/compiler/buildUsage";
import type { RegionUsage } from "lib/compiler/buildArtifactParsers";
import l10n from "shared/lib/lang/l10n";
import { DebuggerUsageCard } from "ui/debugger/DebuggerUsageCard";
import {
  RegionUsageHeader,
  RegionUsageTable,
} from "ui/debugger/DebuggerUsageTable";
import { bytesToHumanReadable } from "shared/lib/helpers/formatBytes";
import { DebuggerBankUsage } from "ui/debugger/DebuggerBankUsage";
 
const UsageRow = styled.tr<{ $isTotal?: boolean }>`
  ${(props) =>
    props.$isTotal &&
    `
      font-weight: bold;
 
      td {
        border-top: 2px solid ${props.theme.colors.input.border};
      }
    `}
`;
 
const OverviewRow = ({
  label,
  usage,
  total,
  maxBankedRom,
}: {
  label: string;
  usage: RegionUsage;
  total?: boolean;
  maxBankedRom?: number;
}) => (
  <UsageRow $isTotal={total}>
    <td>{label}</td>
    <td>{bytesToHumanReadable(usage.bank0)}</td>
    <td>{bytesToHumanReadable(usage.wram)}</td>
    <td>
      {total ? (
        <DebuggerBankUsage size={usage.bankedRom} maxSize={maxBankedRom} />
      ) : (
        bytesToHumanReadable(usage.bankedRom)
      )}
    </td>
  </UsageRow>
);
 
const DebuggerRomUsageOverview = ({
  overview,
}: {
  overview: BuildUsageOverview;
}) => (
  <DebuggerUsageCard title={l10n("FIELD_MEMORY_USAGE")}>
    <RegionUsageTable>
      <RegionUsageHeader first={l10n("FIELD_SOURCE")} />
      <tbody>
        <OverviewRow
          label={l10n("FIELD_BASE_ENGINE")}
          usage={overview.engine}
        />
        <OverviewRow
          label={l10n("FIELD_MUSIC_DRIVER")}
          usage={overview.musicDriver}
        />
        <OverviewRow
          label={l10n("FIELD_GBDK_RUNTIME")}
          usage={overview.gbdkRuntime}
        />
        <OverviewRow
          label={l10n("FIELD_PROJECT_DATA")}
          usage={overview.project}
        />
        <OverviewRow label={l10n("FIELD_PLUGINS")} usage={overview.plugins} />
        <OverviewRow
          label={l10n("FIELD_RESERVED_MEMORY")}
          usage={overview.reserved}
        />
        <OverviewRow
          label={l10n("FIELD_TOTAL")}
          usage={overview.total}
          total
          maxBankedRom={overview.maximum.bankedRom}
        />
        <OverviewRow
          label={`${l10n("FIELD_MAXIMUM")} (${overview.cartType.toUpperCase()})`}
          usage={overview.maximum}
        />
        <OverviewRow
          label={l10n("FIELD_REMAINING")}
          usage={overview.remaining}
        />
      </tbody>
    </RegionUsageTable>
  </DebuggerUsageCard>
);
 
export default DebuggerRomUsageOverview;