Skip to content

Commit dcd659f

Browse files
committed
chore(FR-831): update ResourcePresetSettingModal to display exact memory value
1 parent 059ddbc commit dcd659f

25 files changed

Lines changed: 140 additions & 30 deletions

react/src/components/ResourceNumber.tsx

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
import { convertBinarySizeUnit } from '../helper';
1+
import {
2+
convertBinarySizeUnit,
3+
SizeUnit,
4+
sizeUnitToBinarySizeUnit,
5+
} from '../helper';
26
import {
37
BaseResourceSlotName,
48
KnownAcceleratorResourceSlotName,
@@ -53,6 +57,9 @@ const ResourceNumber: React.FC<ResourceNumberProps> = ({
5357
: amount;
5458
};
5559

60+
const convertedAmount = formatAmount(amount);
61+
const convertedAmountByAuto = convertBinarySizeUnit(amount, 'auto', 2, true);
62+
5663
return (
5764
<Flex direction="row" gap="xxs">
5865
{mergedResourceSlots?.[type] ? (
@@ -62,16 +69,30 @@ const ResourceNumber: React.FC<ResourceNumberProps> = ({
6269
)}
6370

6471
<Typography.Text>
65-
{formatAmount(amount)}
72+
{convertedAmount}
6673
{_.isUndefined(max)
6774
? null
6875
: max === 'Infinity'
6976
? '~∞'
7077
: `~${formatAmount(max)}`}
7178
</Typography.Text>
72-
<Typography.Text type="secondary">
73-
{mergedResourceSlots?.[type]?.display_unit || ''}
74-
</Typography.Text>
79+
<div>
80+
<Typography.Text type="secondary">
81+
{mergedResourceSlots?.[type]?.display_unit || ''}
82+
{mergedResourceSlots?.[type]?.number_format.binary &&
83+
convertedAmount === '0' &&
84+
amount !== '0' ? (
85+
<>
86+
&#40;{Number(convertedAmountByAuto?.numberFixed).toString()}&nbsp;
87+
{sizeUnitToBinarySizeUnit(
88+
convertedAmountByAuto?.unit as SizeUnit,
89+
)}
90+
&#41;
91+
</>
92+
) : null}
93+
</Typography.Text>
94+
</div>
95+
7596
{type === 'mem' && opts?.shmem && opts?.shmem > 0 ? (
7697
<Typography.Text
7798
type="secondary"

react/src/components/ResourcePresetList.tsx

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import {
33
convertBinarySizeUnit,
44
localeCompare,
55
filterEmptyItem,
6+
sizeUnitToBinarySizeUnit,
7+
SizeUnit,
68
} from '../helper';
79
import { useSuspendedBackendaiClient, useUpdatableState } from '../hooks';
810
import Flex from './Flex';
@@ -102,8 +104,41 @@ const ResourcePresetList: React.FC<ResourcePresetListProps> = () => {
102104
{
103105
title: t('resourcePreset.SharedMemory'),
104106
dataIndex: 'shared_memory',
105-
render: (text) =>
106-
text ? convertBinarySizeUnit(text + '', 'g')?.numberFixed : '-',
107+
render: (text) => {
108+
if (!text) {
109+
return '-';
110+
}
111+
const convertedValue = convertBinarySizeUnit(text + 'b', 'g', 2, true);
112+
const convertedValueByAuto = convertBinarySizeUnit(
113+
text + 'b',
114+
'auto',
115+
2,
116+
true,
117+
);
118+
return (
119+
<Flex gap="xxs">
120+
<Typography.Text>
121+
{Number(convertedValue?.numberFixed).toString()}
122+
</Typography.Text>
123+
<div>
124+
<Typography.Text type="secondary">
125+
{sizeUnitToBinarySizeUnit(convertedValue?.unit as SizeUnit)}
126+
{Number(convertedValue?.numberFixed).toString() === '0' &&
127+
text !== '0' ? (
128+
<>
129+
&#40;{Number(convertedValueByAuto?.numberFixed).toString()}
130+
&nbsp;
131+
{sizeUnitToBinarySizeUnit(
132+
convertedValueByAuto?.unit as SizeUnit,
133+
)}
134+
&#41;
135+
</>
136+
) : null}
137+
</Typography.Text>
138+
</div>
139+
</Flex>
140+
);
141+
},
107142
},
108143
baiClient?.supports('resource-presets-per-resource-group') && {
109144
title: t('general.ResourceGroup'),

react/src/components/ResourcePresetSettingModal.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -236,13 +236,16 @@ const ResourcePresetSettingModal: React.FC<ResourcePresetSettingModalProps> = ({
236236
JSON.parse(resourcePreset?.resource_slots || '{}'),
237237
(value, key) =>
238238
_.includes(key, 'mem')
239-
? convertBinarySizeUnit(value + 'b', 'g')?.numberUnit
239+
? convertBinarySizeUnit(
240+
value + 'b',
241+
value === '0' ? 'g' : 'auto',
242+
)?.numberUnit
240243
: value,
241244
) || {},
242245
shared_memory: resourcePreset?.shared_memory
243246
? convertBinarySizeUnit(
244247
resourcePreset?.shared_memory + 'b',
245-
'g',
248+
resourcePreset?.shared_memory === '0' ? 'g' : 'auto',
246249
)?.numberUnit
247250
: null,
248251
}

react/src/helper/index.tsx

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,57 @@ export type SizeUnit =
157157
| 'p'
158158
| 'e';
159159

160+
export type BinarySizeUnit =
161+
| 'Bytes'
162+
| 'KiB'
163+
| 'MiB'
164+
| 'GiB'
165+
| 'TiB'
166+
| 'PiB'
167+
| 'EiB';
168+
169+
export type DecimalSizeUnit = 'Bytes' | 'KB' | 'MB' | 'GB' | 'TB' | 'PB' | 'EB';
170+
171+
export function sizeUnitToDecimalSizeUnit(unit: SizeUnit): DecimalSizeUnit {
172+
const unitMap: Record<SizeUnit, DecimalSizeUnit> = {
173+
B: 'Bytes',
174+
K: 'KB',
175+
M: 'MB',
176+
G: 'GB',
177+
T: 'TB',
178+
P: 'PB',
179+
E: 'EB',
180+
b: 'Bytes',
181+
k: 'KB',
182+
m: 'MB',
183+
g: 'GB',
184+
t: 'TB',
185+
p: 'PB',
186+
e: 'EB',
187+
};
188+
return unitMap[unit] || unit;
189+
}
190+
191+
export function sizeUnitToBinarySizeUnit(unit: SizeUnit): BinarySizeUnit {
192+
const unitMap: Record<SizeUnit, BinarySizeUnit> = {
193+
B: 'Bytes',
194+
K: 'KiB',
195+
M: 'MiB',
196+
G: 'GiB',
197+
T: 'TiB',
198+
P: 'PiB',
199+
E: 'EiB',
200+
b: 'Bytes',
201+
k: 'KiB',
202+
m: 'MiB',
203+
g: 'GiB',
204+
t: 'TiB',
205+
p: 'PiB',
206+
e: 'EiB',
207+
};
208+
return unitMap[unit] || unit;
209+
}
210+
160211
function convertSizeUnit(
161212
sizeWithUnit: string | undefined,
162213
targetSizeUnit?: SizeUnit | 'auto',

resources/i18n/de.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1126,7 +1126,7 @@
11261126
"ResourcePresets": "Ressourcenvoreinstellungen",
11271127
"Resources": "Ressourcen",
11281128
"SHMEMShouldBeSmallerThanMemory": "Gemeinsamer Speicher muss kleiner sein als der Speicher",
1129-
"SharedMemory": "Gemeinsamer Speicher (GB)",
1129+
"SharedMemory": "Gemeinsamer Speicher",
11301130
"Updated": "Ressourcenvoreinstellung aktualisiert"
11311131
},
11321132
"session": {

resources/i18n/el.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1125,7 +1125,7 @@
11251125
"ResourcePresets": "Προεπιλογές πόρων",
11261126
"Resources": "Πόροι",
11271127
"SHMEMShouldBeSmallerThanMemory": "Η κοινόχρηστη μνήμη πρέπει να είναι μικρότερη από τη μνήμη",
1128-
"SharedMemory": "Κοινή μνήμη (GB)",
1128+
"SharedMemory": "Κοινόχρηστη μνήμη",
11291129
"Updated": "Η προεπιλογή πόρων ενημερώθηκε"
11301130
},
11311131
"session": {

resources/i18n/en.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1135,7 +1135,7 @@
11351135
"ResourcePresets": "Resource Presets",
11361136
"Resources": "Resources",
11371137
"SHMEMShouldBeSmallerThanMemory": "Shared memory must be smaller than memory",
1138-
"SharedMemory": "Shared memory (GB)",
1138+
"SharedMemory": "Shared memory",
11391139
"Updated": "Resource preset updated"
11401140
},
11411141
"session": {

resources/i18n/es.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1129,7 +1129,7 @@
11291129
"ResourcePresets": "Recursos preestablecidos",
11301130
"Resources": "Recursos",
11311131
"SHMEMShouldBeSmallerThanMemory": "La memoria compartida debe ser menor que la memoria",
1132-
"SharedMemory": "Memoria compartida (GB)",
1132+
"SharedMemory": "Memoria compartida",
11331133
"Updated": "Preajuste de recursos actualizado"
11341134
},
11351135
"session": {

resources/i18n/fi.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1127,7 +1127,7 @@
11271127
"ResourcePresets": "Resurssien esiasetukset",
11281128
"Resources": "Resurssit",
11291129
"SHMEMShouldBeSmallerThanMemory": "Jaetun muistin on oltava pienempi kuin muistin",
1130-
"SharedMemory": "Jaettu muisti (GB)",
1130+
"SharedMemory": "Jaettu muisti",
11311131
"Updated": "Resurssien esiasetus päivitetty"
11321132
},
11331133
"session": {

resources/i18n/fr.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1129,7 +1129,7 @@
11291129
"ResourcePresets": "Préréglages de ressources",
11301130
"Resources": "Ressources",
11311131
"SHMEMShouldBeSmallerThanMemory": "La mémoire partagée doit être plus petite que la mémoire",
1132-
"SharedMemory": "Mémoire partagée (Go)",
1132+
"SharedMemory": "Mémoire partagée",
11331133
"Updated": "Préréglage de ressource mis à jour"
11341134
},
11351135
"session": {

0 commit comments

Comments
 (0)