fix(deployments): display gpu allocated value in gpu selector

This commit is contained in:
jialin
2026-07-06 17:48:22 +08:00
committed by jialin
parent 3a1565690d
commit dc41b61d69
4 changed files with 34 additions and 31 deletions
@@ -77,7 +77,7 @@ export default function useAddResource(options?: { onCreated?: () => void }) {
}, [resourceAtom, loadingStatus]); }, [resourceAtom, loadingStatus]);
const contentInfo = useMemo(() => { const contentInfo = useMemo(() => {
if (!resourceCount.cluster_count) { if (!resourceCount?.cluster_count) {
return { return {
title: intl.formatMessage({ id: 'noresult.cluster.title' }), title: intl.formatMessage({ id: 'noresult.cluster.title' }),
subTitle: intl.formatMessage({ id: 'noresult.resources.cluster' }), subTitle: intl.formatMessage({ id: 'noresult.resources.cluster' }),
@@ -98,7 +98,7 @@ export default function useAddResource(options?: { onCreated?: () => void }) {
const handleCreate = () => { const handleCreate = () => {
setHideModalTemporarily(true); setHideModalTemporarily(true);
onCreated?.(); onCreated?.();
if (!resourceCount.cluster_count) { if (!resourceCount?.cluster_count) {
setClusterSession({ setClusterSession({
firstAddWorker: false, firstAddWorker: false,
firstAddCluster: true firstAddCluster: true
+26 -29
View File
@@ -1,6 +1,7 @@
import { convertFileSize } from '@/utils'; import { convertFileSize } from '@/utils';
import { AutoTooltip } from '@gpustack/core-ui'; import { AutoTooltip } from '@gpustack/core-ui';
import { useIntl } from '@umijs/max'; import { useIntl } from '@umijs/max';
import { Flex } from 'antd';
import React from 'react'; import React from 'react';
import styled from 'styled-components'; import styled from 'styled-components';
import '../style/gpu-card.less'; import '../style/gpu-card.less';
@@ -19,12 +20,17 @@ const Header = styled.div`
width: 100%; width: 100%;
`; `;
const ItemInfo = styled.div` const Metric: React.FC<{ label: React.ReactNode; value: React.ReactNode }> = ({
display: flex; label,
flex-wrap: wrap; value
white-space: break-spaces; }) => (
font-size: 13px; <span style={{ lineHeight: 1.2 }}>
`; {label}:{' '}
<span className="font-500" style={{ color: 'var(--ant-color-text)' }}>
{value}
</span>
</span>
);
const Description = styled.div` const Description = styled.div`
display: flex; display: flex;
@@ -64,29 +70,20 @@ const GPUCard: React.FC<{
} }
description={ description={
info || ( info || (
<> <Flex wrap gap={8} style={{ fontSize: 13 }}>
<ItemInfo> <Metric
{intl.formatMessage({ id: 'resources.table.vram' })}( label={intl.formatMessage({ id: 'resources.table.total' })}
{intl.formatMessage({ id: 'resources.table.used' })}/ value={convertFileSize(data?.memory?.total || 0)}
{intl.formatMessage({ id: 'resources.table.total' })}):{' '} />
<span> <Metric
{convertFileSize( label={intl.formatMessage({ id: 'resources.table.used' })}
data?.memory?.used || data?.memory?.allocated || 0 value={convertFileSize(data?.memory?.used || 0)}
)}{' '} />
/ {convertFileSize(data?.memory?.total || 0)} <Metric
</span> label={intl.formatMessage({ id: 'resources.table.allocated' })}
</ItemInfo> value={convertFileSize(data?.memory?.allocated || 0)}
{/* <ItemInfo> />
<span> </Flex>
{intl.formatMessage({ id: 'resources.table.gpuutilization' })}
:{' '}
</span>
{data?.memory?.used
? _.round(data?.memory?.utilization_rate || 0, 2)
: _.round(data.memory?.allocated / data.memory?.total, 2) * 100}
%
</ItemInfo> */}
</>
) )
} }
></CardContainer> ></CardContainer>
@@ -20,6 +20,7 @@ import {
import { useFormContext } from '../config/form-context'; import { useFormContext } from '../config/form-context';
import { FormData } from '../config/types'; import { FormData } from '../config/types';
import { backendOptionsMap } from '../constants/backend-parameters'; import { backendOptionsMap } from '../constants/backend-parameters';
import '../style/gpu-selector.less';
const InputWrapper = styled.div` const InputWrapper = styled.div`
padding: 8px 4px; padding: 8px 4px;
@@ -0,0 +1,5 @@
.cascader-popup-wrapper.gpu-selector {
.ant-cascader-menu-item-content {
padding-right: 0;
}
}