feat(gpu-service): support sliced (by-ratio) GPU instances and PV status
- Add whole/by-ratio segmented toggle to the GPU Instance form; sliced mode picks a VRAM ratio (10-100 or finer 1-10 when max<10), scales CPU/RAM by the ratio (floored, min 1), pins compute at 100% - Availability, card Max, and Instance Type cell reflect sliceable types - Add ready/deleting status columns for storage and storage types
This commit is contained in:
@@ -23,6 +23,11 @@ interface NumberSelectionProps {
|
||||
labelExtra?: React.ReactNode;
|
||||
maxCount?: number;
|
||||
tips?: string;
|
||||
// Explicit preset tick values (e.g. [10,20,...,100] for percentage slicing).
|
||||
// Overrides the default 1..maxCount sequence.
|
||||
presetValues?: number[];
|
||||
// Force the free-input box to show regardless of max/maxCount.
|
||||
alwaysShowInput?: boolean;
|
||||
onChange?: (value: number) => void;
|
||||
}
|
||||
|
||||
@@ -39,17 +44,18 @@ const NumberSelection: React.FC<NumberSelectionProps> = ({
|
||||
className,
|
||||
maxCount = 8,
|
||||
tips,
|
||||
presetValues,
|
||||
alwaysShowInput,
|
||||
style,
|
||||
onChange
|
||||
}) => {
|
||||
const intl = useIntl();
|
||||
|
||||
const showCustomInput = max > maxCount;
|
||||
const presetItems = Array.from(
|
||||
{ length: Math.max(0, maxCount) },
|
||||
(_, i) => i + 1
|
||||
);
|
||||
if (min <= 0) {
|
||||
const showCustomInput = alwaysShowInput || max > maxCount;
|
||||
const presetItems =
|
||||
presetValues ??
|
||||
Array.from({ length: Math.max(0, maxCount) }, (_, i) => i + 1);
|
||||
if (!presetValues && min <= 0) {
|
||||
presetItems.unshift(0);
|
||||
}
|
||||
const items = presetItems;
|
||||
|
||||
@@ -39,9 +39,20 @@
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 0 12px;
|
||||
padding-right: 2px;
|
||||
color: var(--ant-color-text-tertiary);
|
||||
white-space: nowrap;
|
||||
padding-block: 6px;
|
||||
width: 100%;
|
||||
|
||||
// Spread the label and its labelExtra (e.g. the whole/sliced Segmented)
|
||||
// to opposite ends of the row.
|
||||
:global(.label-text) {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
.contentWrapper {
|
||||
width: 100%;
|
||||
|
||||
Reference in New Issue
Block a user