fix: show max gpu

This commit is contained in:
jialin
2026-05-27 12:14:15 +08:00
committed by jialin
parent d0bc206c83
commit e3d6d08916
7 changed files with 35 additions and 16 deletions
+1 -1
View File
@@ -109,7 +109,7 @@ export default {
'CPU-only setup for environment preparation.', 'CPU-only setup for environment preparation.',
'gpuservice.instance.stock': 'Stock', 'gpuservice.instance.stock': 'Stock',
'gpuservice.instance.sliced': 'Sliced', 'gpuservice.instance.sliced': 'Sliced',
'gpuservice.instance.memory': 'Memory', 'gpuservice.instance.memory': 'VRAM',
'gpuservice.instance.ram': 'RAM', 'gpuservice.instance.ram': 'RAM',
'gpuservice.instance.disk': 'Disk', 'gpuservice.instance.disk': 'Disk',
'gpuservice.instance.search.type.placeholder': 'Search by name', 'gpuservice.instance.search.type.placeholder': 'Search by name',
+1 -1
View File
@@ -107,7 +107,7 @@ export default {
'gpuservice.instance.gpuCount.zero': 'CPU のみを使用し、環境準備用です。', 'gpuservice.instance.gpuCount.zero': 'CPU のみを使用し、環境準備用です。',
'gpuservice.instance.stock': '在庫', 'gpuservice.instance.stock': '在庫',
'gpuservice.instance.sliced': '分割', 'gpuservice.instance.sliced': '分割',
'gpuservice.instance.memory': 'Memory', 'gpuservice.instance.memory': 'VRAM',
'gpuservice.instance.ram': 'RAM', 'gpuservice.instance.ram': 'RAM',
'gpuservice.instance.disk': 'ディスク', 'gpuservice.instance.disk': 'ディスク',
'gpuservice.instance.search.type.placeholder': '名前で検索', 'gpuservice.instance.search.type.placeholder': '名前で検索',
+1 -1
View File
@@ -109,7 +109,7 @@ export default {
'gpuservice.instance.gpuCount.zero': 'Только CPU, для подготовки окружения.', 'gpuservice.instance.gpuCount.zero': 'Только CPU, для подготовки окружения.',
'gpuservice.instance.stock': 'Остаток', 'gpuservice.instance.stock': 'Остаток',
'gpuservice.instance.sliced': 'Разделено', 'gpuservice.instance.sliced': 'Разделено',
'gpuservice.instance.memory': 'Память', 'gpuservice.instance.memory': 'VRAM',
'gpuservice.instance.ram': 'RAM', 'gpuservice.instance.ram': 'RAM',
'gpuservice.instance.disk': 'Диск', 'gpuservice.instance.disk': 'Диск',
'gpuservice.instance.search.type.placeholder': 'Поиск по имени', 'gpuservice.instance.search.type.placeholder': 'Поиск по имени',
+1 -1
View File
@@ -106,7 +106,7 @@ export default {
'gpuservice.instance.gpuCount.zero': 'Yalnızca CPU, ortam hazırlığı için.', 'gpuservice.instance.gpuCount.zero': 'Yalnızca CPU, ortam hazırlığı için.',
'gpuservice.instance.stock': 'Stok', 'gpuservice.instance.stock': 'Stok',
'gpuservice.instance.sliced': 'Bölünmüş', 'gpuservice.instance.sliced': 'Bölünmüş',
'gpuservice.instance.memory': 'Bellek', 'gpuservice.instance.memory': 'VRAM',
'gpuservice.instance.ram': 'RAM', 'gpuservice.instance.ram': 'RAM',
'gpuservice.instance.disk': 'Disk', 'gpuservice.instance.disk': 'Disk',
'gpuservice.instance.search.type.placeholder': 'Ada göre ara', 'gpuservice.instance.search.type.placeholder': 'Ada göre ara',
@@ -58,7 +58,7 @@ interface InstanceTypeItemProps {
const MetaItem: React.FC<{ const MetaItem: React.FC<{
icon: string; icon: string;
label: string; label?: string;
value?: string | null; value?: string | null;
showDot?: boolean; showDot?: boolean;
show?: boolean; show?: boolean;
@@ -141,12 +141,18 @@ const InstanceTypeItem: React.FC<InstanceTypeItemProps> = ({ item }) => {
value={specData?.sliced} value={specData?.sliced}
></MetaItem> ></MetaItem>
<MetaItem <MetaItem
show={!!remainingData.accelerator} show={!!item.maxAccelerator}
icon="icon-database" icon="icon-database"
label={intl.formatMessage({ value={
id: 'gpuservice.instance.stock' item.maxAccelerator! > 0
})} ? `${intl.formatMessage(
value={remainingData.accelerator} {
id: 'common.max'
},
{ count: item.maxAccelerator }
)}`
: '-'
}
></MetaItem> ></MetaItem>
</span> </span>
)} )}
@@ -133,6 +133,7 @@ export interface InstanceTypeItem {
name: string; name: string;
spec: InstanceTypeSpec; spec: InstanceTypeSpec;
disabled?: boolean; disabled?: boolean;
maxAccelerator?: number;
status: InstanceTypeStatus; status: InstanceTypeStatus;
} }
@@ -25,8 +25,16 @@ export default function useQueryInstanceTypes() {
const [dataList, setDataList] = React.useState<InstanceType[]>([]); const [dataList, setDataList] = React.useState<InstanceType[]>([]);
const isAvailable = (item: InstanceTypeItem) => { const isAvailable = (item: InstanceTypeItem) => {
if (!item.spec?.acceleratable) return true; if (!item.spec?.acceleratable)
return getAcceleratorMax(item.status?.acceleratorTiers) > 0; return {
maxAccelerator: 0,
available: true
};
const max = getAcceleratorMax(item.status?.acceleratorTiers);
return {
maxAccelerator: max || 0,
available: (max || 0) > 0
};
}; };
const queryInstanceTypes = async ( const queryInstanceTypes = async (
@@ -34,10 +42,14 @@ export default function useQueryInstanceTypes() {
) => { ) => {
const res = await fetchData(params); const res = await fetchData(params);
const list = (res?.items || []).map((item) => ({ const list = (res?.items || []).map((item) => {
...item, const remainingData = isAvailable(item);
disabled: !isAvailable(item) return {
})); ...item,
maxAccelerator: remainingData.maxAccelerator,
disabled: !remainingData.available
};
});
console.log('queryInstanceTypes', list); console.log('queryInstanceTypes', list);
setDataList(list); setDataList(list);
return list; return list;