fix: default instance type, storageMode

This commit is contained in:
jialin
2026-05-26 22:40:02 +08:00
committed by jialin
parent a51f44c135
commit 2f04e01f4f
21 changed files with 213 additions and 185 deletions
@@ -91,14 +91,13 @@ const AddModal: React.FC<AddModalProps> = ({
const [loading, setLoading] = useState(false);
const {
detailData,
detailData: instanceTypeList,
loading: instanceTypesLoading,
fetchData
} = useQueryInstanceTypes();
const { detailData: templatesData, fetchData: fetchTemplates } =
useQueryTemplates();
const instanceTypeList = detailData?.items || [];
const templateList = templatesData?.items || [];
// const readonly = action === PageAction.VIEW;
const readonly = false;
@@ -180,7 +179,7 @@ const AddModal: React.FC<AddModalProps> = ({
);
};
// initial
// initial for first
const applyAutoSelection = (
instanceTypes: InstanceTypeItem[],
templates: TemplateItem[]
@@ -230,13 +229,12 @@ const AddModal: React.FC<AddModalProps> = ({
if (action === PageAction.CREATE) {
const session = ++sessionRef.current;
Promise.all([
fetchData({ page: 1, perPage: 100 }),
fetchTemplates({ page: -1 })
]).then(([instanceRes, templatesRes]) => {
if (sessionRef.current !== session) return;
applyAutoSelection(instanceRes?.items || [], templatesRes?.items || []);
});
Promise.all([fetchData({ page: -1 }), fetchTemplates({ page: -1 })]).then(
([instanceResItems, templatesRes]) => {
if (sessionRef.current !== session) return;
applyAutoSelection(instanceResItems || [], templatesRes?.items || []);
}
);
}
}, [open, shouldAutoSelectResource, action]);
@@ -3,7 +3,6 @@ import { TemplateCard } from '@gpustack/core-ui';
import { Empty, Spin } from 'antd';
import _ from 'lodash';
import styled from 'styled-components';
import { getAcceleratorMax } from '../config';
import { InstanceTypeItem as InstanceTypeItemModel } from '../config/types';
import InstanceTypeItem from './instance-type-item';
@@ -20,34 +19,17 @@ interface InstanceTypeListProps {
loading?: boolean;
}
// CPU types always have stock (no accelerator). Accelerated types are
// considered available when at least one tier offers onceMaxRequest > 0.
const isAvailable = (item: InstanceTypeItemModel) => {
if (!item.spec?.acceleratable) return true;
return getAcceleratorMax(item.status?.acceleratorTiers) > 0;
};
const InstanceTypeList: React.FC<InstanceTypeListProps> = ({
value,
onChange,
dataList = [],
loading
}) => {
const handleSelect = (
item: InstanceTypeItemModel & { disabled?: boolean }
) => {
const handleSelect = (item: InstanceTypeItemModel) => {
if (item.disabled || value === item.name) return;
onChange?.(item);
};
const filterList = dataList.map((item) => {
const available = isAvailable(item);
return {
...item,
disabled: !available
};
});
if (!dataList.length) {
if (loading) {
return (
@@ -65,7 +47,7 @@ const InstanceTypeList: React.FC<InstanceTypeListProps> = ({
return (
<TypeGrid>
{filterList.map((item) => {
{dataList.map((item) => {
const name = item.name;
return (
<TemplateCard