fix(style): unify casing of system terms

This commit is contained in:
jialin
2025-04-08 13:28:13 +08:00
parent a087677c6e
commit f6bc183972
19 changed files with 109 additions and 69 deletions
@@ -12,7 +12,6 @@ interface NoteInfoProps {
const NoteInfo: React.FC<NoteInfoProps> = (props) => { const NoteInfo: React.FC<NoteInfoProps> = (props) => {
const { required, description, label, labelExtra } = props || {}; const { required, description, label, labelExtra } = props || {};
if (!label) return null; if (!label) return null;
return ( return (
<span className="label-text"> <span className="label-text">
{description ? ( {description ? (
+4 -1
View File
@@ -10,6 +10,9 @@ import {
const InputWrapper = styled.div` const InputWrapper = styled.div`
.seal-input-number { .seal-input-number {
padding-right: 0; padding-right: 0;
.isfoucs-has-value {
top: 9px;
}
} }
.seal-input-wrapper-disabled { .seal-input-wrapper-disabled {
background-color: var(--ant-color-bg-container-disabled); background-color: var(--ant-color-bg-container-disabled);
@@ -82,7 +85,7 @@ const InputWrapper = styled.div`
input.ant-input-number-input { input.ant-input-number-input {
flex: 1; flex: 1;
height: ${INPUTHEIGHT}px !important; height: ${INPUTHEIGHT}px !important;
padding-block: 5px; padding-block: 5px 4px;
padding-inline: ${INPUT_INNER_PADDING}px; padding-inline: ${INPUT_INNER_PADDING}px;
} }
.ant-input-group { .ant-input-group {
+28 -21
View File
@@ -1,6 +1,26 @@
import { useIntl } from '@umijs/max'; import { useIntl } from '@umijs/max';
import { Typography } from 'antd';
import React from 'react'; import React from 'react';
import styled from 'styled-components';
const UL = styled.ul`
list-style: none;
padding-left: 0;
margin: 0;
display: flex;
flex-direction: column;
li {
display: flex;
flex-direction: column;
.title {
font-weight: 600;
color: var(--ant-color-text-light-solid);
}
.content {
color: var(--color-white-tertiary);
display: inline-flex;
}
}
`;
interface TooltipListProps { interface TooltipListProps {
list: { title: any; tips: string }[]; list: { title: any; tips: string }[];
@@ -10,36 +30,23 @@ const TooltipList: React.FC<TooltipListProps> = (props) => {
const intl = useIntl(); const intl = useIntl();
const { list } = props; const { list } = props;
return ( return (
<ul className="tips-desc-list"> <UL>
{list.map((item, index: number) => { {list.map((item, index: number) => {
return ( return (
<li className="m-b-8" key={index}> <li key={index}>
<Typography.Title <span className="title">
level={5}
style={{
color: 'var(--color-white-1)',
marginRight: 10,
marginBottom: 0
}}
>
{item.title?.locale {item.title?.locale
? intl.formatMessage({ id: item.title?.text || '' }) ? intl.formatMessage({ id: item.title?.text || '' })
: item.title} : item.title}
: :
</Typography.Title> </span>
<Typography.Text <span className="content">
style={{
color: 'var(--color-white-1)',
display: 'inline-flex',
lineHeight: 1.5
}}
>
{intl.formatMessage({ id: item.tips })} {intl.formatMessage({ id: item.tips })}
</Typography.Text> </span>
</li> </li>
); );
})} })}
</ul> </UL>
); );
}; };
+7 -7
View File
@@ -18,7 +18,7 @@ export default {
'resources.form.spread.tips': 'resources.form.spread.tips':
'Make the resources of the entire cluster relatively evenly distributed among all workers. It may produce more resource fragmentation on a single worker.', 'Make the resources of the entire cluster relatively evenly distributed among all workers. It may produce more resource fragmentation on a single worker.',
'resources.form.binpack.tips': 'resources.form.binpack.tips':
'Prioritize the overall utilization of cluster resources, reducing resource fragmentation on Workers/GPUs.', 'Prioritize the overall utilization of cluster resources, reducing resource fragmentation on GPUs/Workers.',
'resources.form.workerSelector.description': 'resources.form.workerSelector.description':
'The system selects the most suitable GPU or Worker for deploying model instances based on predefined labels.', 'The system selects the most suitable GPU or Worker for deploying model instances based on predefined labels.',
'resources.table.ip': 'IP', 'resources.table.ip': 'IP',
@@ -39,16 +39,16 @@ export default {
'resources.table.used': 'Used', 'resources.table.used': 'Used',
'resources.table.allocated': 'Allocated', 'resources.table.allocated': 'Allocated',
'resources.table.wokers': 'workers', 'resources.table.wokers': 'workers',
'resources.worker.linuxormaxos': 'Linux or MacOS', 'resources.worker.linuxormaxos': 'Linux or macOS',
'resources.table.unified': 'Unified Memory', 'resources.table.unified': 'Unified Memory',
'resources.worker.add.step1': 'resources.worker.add.step1':
'Get Token <span class="note-text">(Run on the server)</span>', 'Get Token <span class="note-text">(Run on the server)</span>',
'resources.worker.add.step2': 'Register Worker', 'resources.worker.add.step2': 'Register Worker',
'resources.worker.add.step2.tips': 'resources.worker.add.step2.tips':
'Note: run on the worker to be added, <span style="color: #000;font-weight: 600">mytoken</span> is the token obtained in the first step.', '(Run on the worker to be added, <span style="color: #000;font-weight: 600">mytoken</span> is the token obtained in the first step.)',
'resources.worker.add.step3': 'resources.worker.add.step3':
'After success, refresh the workers list to see the new worker.', 'After success, refresh the workers list to view the new worker.',
'resources.worker.container.supported': 'Do not support MacOS or Windows.', 'resources.worker.container.supported': 'Do not support macOS or Windows.',
'resources.worker.current.version': 'Current version is {version}.', 'resources.worker.current.version': 'Current version is {version}.',
'resources.worker.driver.install': 'resources.worker.driver.install':
'Ensure all necessary drivers and libraries are installed on the system prior to installing GPUStack.', 'Ensure all necessary drivers and libraries are installed on the system prior to installing GPUStack.',
@@ -68,9 +68,9 @@ export default {
'resources.modelfiles.retry.download': 'Retry Download', 'resources.modelfiles.retry.download': 'Retry Download',
'resources.modelfiles.storagePath.holder': 'resources.modelfiles.storagePath.holder':
'Waiting for the download to complete...', 'Waiting for the download to complete...',
'resources.filter.worker': 'Filter by Worker', 'resources.filter.worker': 'Filter by worker',
'resources.filter.source': 'Filter by Source', 'resources.filter.source': 'Filter by Source',
'resources.modelfiles.delete.tips': 'Also delete the file from disk!', 'resources.modelfiles.delete.tips': 'Also delete the file from disk!',
'resources.modelfiles.copy.tips': 'Copy Full Path', 'resources.modelfiles.copy.tips': 'Copy Full Path',
'resources.filter.path': 'Filter by Path' 'resources.filter.path': 'Filter by path'
}; };
+3 -3
View File
@@ -45,7 +45,7 @@ export default {
'Get Token <span class="note-text">(Run on the server)</span>', 'Get Token <span class="note-text">(Run on the server)</span>',
'resources.worker.add.step2': 'ワーカーを登録', 'resources.worker.add.step2': 'ワーカーを登録',
'resources.worker.add.step2.tips': 'resources.worker.add.step2.tips':
'Note: run on the worker to be added, <span style="color: #000;font-weight: 600">mytoken</span> is the token obtained in the first step.', '(Run on the worker to be added, <span style="color: #000;font-weight: 600">mytoken</span> is the token obtained in the first step.)',
'resources.worker.add.step3': 'resources.worker.add.step3':
'成功後、ワーカーリストを更新して新しいワーカーを確認してください。', '成功後、ワーカーリストを更新して新しいワーカーを確認してください。',
'resources.worker.container.supported': 'resources.worker.container.supported':
@@ -69,11 +69,11 @@ export default {
'resources.modelfiles.retry.download': 'Retry Download', 'resources.modelfiles.retry.download': 'Retry Download',
'resources.modelfiles.storagePath.holder': 'resources.modelfiles.storagePath.holder':
'Waiting for download to complete...', 'Waiting for download to complete...',
'resources.filter.worker': 'Filter by Worker', 'resources.filter.worker': 'Filter by worker',
'resources.filter.source': 'Filter by Source', 'resources.filter.source': 'Filter by Source',
'resources.modelfiles.delete.tips': 'Also delete the file from disk!', 'resources.modelfiles.delete.tips': 'Also delete the file from disk!',
'resources.modelfiles.copy.tips': 'Copy Full Path', 'resources.modelfiles.copy.tips': 'Copy Full Path',
'resources.filter.path': 'Filter by Path' 'resources.filter.path': 'Filter by path'
}; };
// ========== To-Do: Translate Keys (Remove After Translation) ========== // ========== To-Do: Translate Keys (Remove After Translation) ==========
+1 -1
View File
@@ -45,7 +45,7 @@ export default {
'Получить токен <span class="note-text">(Запустить на сервере)</span>', 'Получить токен <span class="note-text">(Запустить на сервере)</span>',
'resources.worker.add.step2': 'Зарегистрировать воркер', 'resources.worker.add.step2': 'Зарегистрировать воркер',
'resources.worker.add.step2.tips': 'resources.worker.add.step2.tips':
'Примечание: выполнить на подключаемом воркере, <span style="color: #000;font-weight: 600">mytoken</span> это токен, полученный на первом шаге', '(выполнить на подключаемом воркере, <span style="color: #000;font-weight: 600">mytoken</span> это токен, полученный на первом шаге)',
'resources.worker.add.step3': 'resources.worker.add.step3':
'После успешной регистрации обновите список воркеров.', 'После успешной регистрации обновите список воркеров.',
'resources.worker.container.supported': 'Только для Linux.', 'resources.worker.container.supported': 'Только для Linux.',
+3 -3
View File
@@ -16,7 +16,7 @@ export default {
'models.form.partialoffload.tips': 'models.form.partialoffload.tips':
'启用 CPU 卸载时,如果 GPU 资源不足,则模型的一部分层将被卸载到 CPU 上,在没有 GPU 可用时,会使用纯 CPU 推理。', '启用 CPU 卸载时,如果 GPU 资源不足,则模型的一部分层将被卸载到 CPU 上,在没有 GPU 可用时,会使用纯 CPU 推理。',
'models.form.distribution.tips': 'models.form.distribution.tips':
'允许在单个 worker 资源不足时,将部分计算卸载到一个或多个远程 worker。', '允许在单个 Worker 资源不足时,将部分计算卸载到一个或多个远程 Worker。',
'models.openinplayground': '在 Playground 中打开', 'models.openinplayground': '在 Playground 中打开',
'models.instances': '实例', 'models.instances': '实例',
'models.table.replicas.edit': '调整副本数', 'models.table.replicas.edit': '调整副本数',
@@ -54,7 +54,7 @@ export default {
'models.form.manual.schedule': '手动调度', 'models.form.manual.schedule': '手动调度',
'models.table.gpuindex': 'GPU 序号', 'models.table.gpuindex': 'GPU 序号',
'models.table.backend': '后端', 'models.table.backend': '后端',
'models.table.acrossworker': '跨 worker 推理', 'models.table.acrossworker': '跨 Worker 推理',
'models.table.cpuoffload': 'CPU 卸载', 'models.table.cpuoffload': 'CPU 卸载',
'models.table.layers': '层', 'models.table.layers': '层',
'models.form.backend': '后端', 'models.form.backend': '后端',
@@ -85,7 +85,7 @@ export default {
'models.form.backend.vllm': '用于非 GGUF 格式模型,仅支持 x86 Linux', 'models.form.backend.vllm': '用于非 GGUF 格式模型,仅支持 x86 Linux',
'models.form.backend.voxbox': '用于非 GGUF 格式的音频模型', 'models.form.backend.voxbox': '用于非 GGUF 格式的音频模型',
'models.form.search.gguftips': 'models.form.search.gguftips':
'当 macOS 或 Windows 作 worker 时勾选 GGUF(搜索音频模型时取消勾选)', '当 macOS 或 Windows 作 Worker 时勾选 GGUF(搜索音频模型时取消勾选)',
'models.form.button.addlabel': '添加标签', 'models.form.button.addlabel': '添加标签',
'models.filter.category': '按类别筛选', 'models.filter.category': '按类别筛选',
'models.list.more.logs': '查看更多', 'models.list.more.logs': '查看更多',
+8 -8
View File
@@ -14,11 +14,11 @@ export default {
'resources.form.placementStrategy': '放置策略', 'resources.form.placementStrategy': '放置策略',
'resources.form.workerSelector': 'Worker 选择器', 'resources.form.workerSelector': 'Worker 选择器',
'resources.form.enableDistributedInferenceAcrossWorkers': 'resources.form.enableDistributedInferenceAcrossWorkers':
'允许跨 worker 分布式推理', '允许跨 Worker 分布式推理',
'resources.form.spread.tips': 'resources.form.spread.tips':
'使得集群整体的资源在所有 Worker 之间分配得相对均匀。可能会在单个 Worker 上产生较多资源碎片。', '使得集群整体的资源在所有 Worker 之间分配得相对均匀。可能会在单个 Worker 上产生较多资源碎片。',
'resources.form.binpack.tips': 'resources.form.binpack.tips':
'优先考虑整体集群的资源最大化利用,减少 Worker/GPU 上的资源碎片。', '优先考虑整体集群的资源最大化利用,减少 GPU/Worker 上的资源碎片。',
'resources.form.workerSelector.description': 'resources.form.workerSelector.description':
'系统在部署模型实例时,会根据预定义的标签来选择最符合要求的 GPU 或 Worker。', '系统在部署模型实例时,会根据预定义的标签来选择最符合要求的 GPU 或 Worker。',
'resources.table.ip': 'IP', 'resources.table.ip': 'IP',
@@ -40,14 +40,14 @@ export default {
'resources.table.allocated': '已分配', 'resources.table.allocated': '已分配',
'resources.table.wokers': 'workers', 'resources.table.wokers': 'workers',
'resources.table.unified': '统一内存', 'resources.table.unified': '统一内存',
'resources.worker.linuxormaxos': 'Linux 或 MacOS', 'resources.worker.linuxormaxos': 'Linux 或 macOS',
'resources.worker.add.step1': 'resources.worker.add.step1':
'获取 Token <span class="note-text">(server 上运行)</span>', '获取 token<span class="note-text">Server 上运行</span>',
'resources.worker.add.step2': '注册 Worker', 'resources.worker.add.step2': '注册 Worker',
'resources.worker.add.step2.tips': 'resources.worker.add.step2.tips':
'注意:在需要添加的 worker 上运行,<span style="color: #000;font-weight: 600">mytoken</span> 为第一步获取到的 Token', '在需要添加的 Worker 上运行,<span style="color: #000;font-weight: 600">mytoken</span> 为第一步获取到的 token',
'resources.worker.add.step3': '成功后,刷新 worker 列表即可看到新的 worker', 'resources.worker.add.step3': '成功后,刷新 Worker 列表即可看到新的 Worker',
'resources.worker.container.supported': '不支持 MacOS 和 Windows', 'resources.worker.container.supported': '不支持 macOS 和 Windows',
'resources.worker.current.version': '当前版本为 {version}', 'resources.worker.current.version': '当前版本为 {version}',
'resources.worker.select.command': '选择一个标签生成命令并使用复制按钮复制', 'resources.worker.select.command': '选择一个标签生成命令并使用复制按钮复制',
'resources.worker.driver.install': 'resources.worker.driver.install':
@@ -66,7 +66,7 @@ export default {
'默认存储目录为 <span class="desc-block">/var/lib/gpustack/cache</span>,或使用 <span class="desc-block">--cache-dir</span> 指定的目录', '默认存储目录为 <span class="desc-block">/var/lib/gpustack/cache</span>,或使用 <span class="desc-block">--cache-dir</span> 指定的目录',
'resources.modelfiles.retry.download': '重新下载', 'resources.modelfiles.retry.download': '重新下载',
'resources.modelfiles.storagePath.holder': '等待下载完成...', 'resources.modelfiles.storagePath.holder': '等待下载完成...',
'resources.filter.worker': '按 worker 筛选', 'resources.filter.worker': '按 Worker 筛选',
'resources.filter.source': '按来源筛选', 'resources.filter.source': '按来源筛选',
'resources.modelfiles.delete.tips': '同时从磁盘删除文件!', 'resources.modelfiles.delete.tips': '同时从磁盘删除文件!',
'resources.modelfiles.copy.tips': '复制完整路径', 'resources.modelfiles.copy.tips': '复制完整路径',
@@ -21,6 +21,7 @@ import { CheckboxChangeEvent } from 'antd/es/checkbox';
import _ from 'lodash'; import _ from 'lodash';
import React, { useCallback, useMemo } from 'react'; import React, { useCallback, useMemo } from 'react';
import { import {
backendLabelMap,
backendOptionsMap, backendOptionsMap,
backendParamsHolderTips, backendParamsHolderTips,
modelCategories, modelCategories,
@@ -327,7 +328,7 @@ const AdvanceConfig: React.FC<AdvanceConfigProps> = (props) => {
id: 'models.form.backendVersion.tips' id: 'models.form.backendVersion.tips'
}, },
{ {
backend: backend, backend: backendLabelMap[backend],
link: backendParamsTips?.releases && ( link: backendParamsTips?.releases && (
<span <span
style={{ style={{
@@ -336,7 +337,7 @@ const AdvanceConfig: React.FC<AdvanceConfigProps> = (props) => {
> >
<Typography.Link <Typography.Link
className="flex-center" className="flex-center"
style={{ lineHeight: 1 }} style={{ display: 'inline' }}
href={backendParamsTips?.releases} href={backendParamsTips?.releases}
target="_blank" target="_blank"
> >
@@ -375,12 +376,13 @@ const AdvanceConfig: React.FC<AdvanceConfigProps> = (props) => {
options={paramsConfig} options={paramsConfig}
description={ description={
backendParamsTips && ( backendParamsTips && (
<span> <span style={{ marginLeft: 5 }}>
{intl.formatMessage( {intl.formatMessage(
{ id: 'models.form.backend_parameters.vllm.tips' }, { id: 'models.form.backend_parameters.vllm.tips' },
{ backend: backendParamsTips.backend || '' } { backend: backendParamsTips.backend || '' }
)}{' '} )}{' '}
<Typography.Link <Typography.Link
style={{ display: 'inline' }}
className="flex-center" className="flex-center"
href={backendParamsTips.link} href={backendParamsTips.link}
target="_blank" target="_blank"
@@ -85,7 +85,8 @@ const CompatibilityAlert: React.FC<CompatibilityAlertProps> = (props) => {
}, [type]); }, [type]);
return ( return (
show && ( show &&
!!message && (
<DivWrapper> <DivWrapper>
<AlertBlockInfo <AlertBlockInfo
ellipsis={false} ellipsis={false}
+5 -4
View File
@@ -9,6 +9,7 @@ import { Form } from 'antd';
import _ from 'lodash'; import _ from 'lodash';
import React, { forwardRef, useImperativeHandle } from 'react'; import React, { forwardRef, useImperativeHandle } from 'react';
import { import {
backendLabelMap,
backendOptionsMap, backendOptionsMap,
backendTipsList, backendTipsList,
excludeFields, excludeFields,
@@ -259,7 +260,7 @@ const DataForm: React.FC<DataFormProps> = forwardRef((props, ref) => {
options={ options={
backendOptions ?? [ backendOptions ?? [
{ {
label: `llama-box`, label: backendLabelMap[backendOptionsMap.llamaBox],
value: backendOptionsMap.llamaBox, value: backendOptionsMap.llamaBox,
disabled: disabled:
props.source === modelSourceMap.local_path_value props.source === modelSourceMap.local_path_value
@@ -267,7 +268,7 @@ const DataForm: React.FC<DataFormProps> = forwardRef((props, ref) => {
: !isGGUF : !isGGUF
}, },
{ {
label: 'vLLM', label: backendLabelMap[backendOptionsMap.vllm],
value: backendOptionsMap.vllm, value: backendOptionsMap.vllm,
disabled: disabled:
props.source === modelSourceMap.local_path_value props.source === modelSourceMap.local_path_value
@@ -275,7 +276,7 @@ const DataForm: React.FC<DataFormProps> = forwardRef((props, ref) => {
: isGGUF : isGGUF
}, },
{ {
label: 'Ascend Mindie', label: backendLabelMap[backendOptionsMap.ascendMindie],
value: backendOptionsMap.ascendMindie, value: backendOptionsMap.ascendMindie,
disabled: disabled:
props.source === modelSourceMap.local_path_value props.source === modelSourceMap.local_path_value
@@ -283,7 +284,7 @@ const DataForm: React.FC<DataFormProps> = forwardRef((props, ref) => {
: isGGUF : isGGUF
}, },
{ {
label: 'vox-box', label: backendLabelMap[backendOptionsMap.voxBox],
value: backendOptionsMap.voxBox, value: backendOptionsMap.voxBox,
disabled: disabled:
props.source === modelSourceMap.local_path_value props.source === modelSourceMap.local_path_value
@@ -10,6 +10,7 @@ import React, {
useRef, useRef,
useState useState
} from 'react'; } from 'react';
import styled from 'styled-components';
import { import {
evaluationsModelSpec, evaluationsModelSpec,
queryHuggingfaceModels, queryHuggingfaceModels,
@@ -26,6 +27,12 @@ import SearchStyle from '../style/search-result.less';
import SearchInput from './search-input'; import SearchInput from './search-input';
import SearchResult from './search-result'; import SearchResult from './search-result';
const UL = styled.ul`
list-style: decimal;
padding-left: 16px;
margin: 0;
`;
interface SearchInputProps { interface SearchInputProps {
hasLinuxWorker?: boolean; hasLinuxWorker?: boolean;
modelSource: string; modelSource: string;
@@ -315,7 +322,7 @@ const SearchModel: React.FC<SearchInputProps> = (props) => {
<Tooltip <Tooltip
overlayInnerStyle={{ width: 'max-content' }} overlayInnerStyle={{ width: 'max-content' }}
title={ title={
<ul className="tips-desc-list"> <UL>
<li>{intl.formatMessage({ id: 'models.search.gguf.tips' })}</li> <li>{intl.formatMessage({ id: 'models.search.gguf.tips' })}</li>
<li>{intl.formatMessage({ id: 'models.search.vllm.tips' })}</li> <li>{intl.formatMessage({ id: 'models.search.vllm.tips' })}</li>
<li> <li>
@@ -323,7 +330,7 @@ const SearchModel: React.FC<SearchInputProps> = (props) => {
id: 'models.search.voxbox.tips' id: 'models.search.voxbox.tips'
})} })}
</li> </li>
</ul> </UL>
} }
> >
GGUF GGUF
@@ -12,6 +12,7 @@ import { Button, Form, Modal, Typography } from 'antd';
import _ from 'lodash'; import _ from 'lodash';
import React, { useEffect, useMemo, useRef } from 'react'; import React, { useEffect, useMemo, useRef } from 'react';
import { import {
backendLabelMap,
backendOptionsMap, backendOptionsMap,
backendTipsList, backendTipsList,
excludeFields, excludeFields,
@@ -504,7 +505,7 @@ const UpdateModal: React.FC<AddModalProps> = (props) => {
description={<TooltipList list={backendTipsList}></TooltipList>} description={<TooltipList list={backendTipsList}></TooltipList>}
options={[ options={[
{ {
label: `llama-box`, label: backendLabelMap[backendOptionsMap.llamaBox],
value: backendOptionsMap.llamaBox, value: backendOptionsMap.llamaBox,
disabled: disabled:
formData?.source === modelSourceMap.local_path_value formData?.source === modelSourceMap.local_path_value
@@ -512,7 +513,7 @@ const UpdateModal: React.FC<AddModalProps> = (props) => {
: !isGGUF : !isGGUF
}, },
{ {
label: 'vLLM', label: backendLabelMap[backendOptionsMap.vllm],
value: backendOptionsMap.vllm, value: backendOptionsMap.vllm,
disabled: disabled:
formData?.source === modelSourceMap.local_path_value formData?.source === modelSourceMap.local_path_value
@@ -520,7 +521,7 @@ const UpdateModal: React.FC<AddModalProps> = (props) => {
: isGGUF : isGGUF
}, },
{ {
label: 'Ascend Mindie', label: backendLabelMap[backendOptionsMap.ascendMindie],
value: backendOptionsMap.ascendMindie, value: backendOptionsMap.ascendMindie,
disabled: disabled:
formData?.source === modelSourceMap.local_path_value formData?.source === modelSourceMap.local_path_value
@@ -528,7 +529,7 @@ const UpdateModal: React.FC<AddModalProps> = (props) => {
: isGGUF : isGGUF
}, },
{ {
label: 'vox-box', label: backendLabelMap[backendOptionsMap.voxBox],
value: backendOptionsMap.voxBox, value: backendOptionsMap.voxBox,
disabled: disabled:
formData?.source === modelSourceMap.local_path_value formData?.source === modelSourceMap.local_path_value
+7
View File
@@ -135,6 +135,13 @@ export const backendOptionsMap = {
ascendMindie: 'ascend-mindie' ascendMindie: 'ascend-mindie'
}; };
export const backendLabelMap = {
[backendOptionsMap.llamaBox]: 'llama-box',
[backendOptionsMap.vllm]: 'vLLM',
[backendOptionsMap.voxBox]: 'vox-box',
[backendOptionsMap.ascendMindie]: 'Ascend MindIE'
};
export const backendParamsHolderTips = { export const backendParamsHolderTips = {
[backendOptionsMap.llamaBox]: { [backendOptionsMap.llamaBox]: {
holder: 'models.form.backend_parameters.llamabox.placeholder', holder: 'models.form.backend_parameters.llamabox.placeholder',
+2 -2
View File
@@ -307,8 +307,8 @@ export const useCheckCompatibility = () => {
: compatibility_messages?.join(' ') : compatibility_messages?.join(' ')
}; };
if (hasClaim) { if (hasClaim) {
const ram = convertFileSize(resource_claim.ram, 1); const ram = convertFileSize(resource_claim.ram, 2);
const vram = convertFileSize(resource_claim.vram, 1); const vram = convertFileSize(resource_claim.vram, 2);
msgData = { msgData = {
title: intl.formatMessage({ id: 'models.form.check.passed' }), title: intl.formatMessage({ id: 'models.form.check.passed' }),
message: intl.formatMessage( message: intl.formatMessage(
@@ -88,6 +88,21 @@ const ParamsSettings: React.FC<ParamsSettingsProps> = forwardRef(
[onValuesChange] [onValuesChange]
); );
const renderDescription = useCallback(
(description: any) => {
let desc = description?.text;
if (description?.isLocalized) {
desc = intl.formatMessage({ id: description?.text });
}
if (description?.html) {
return <div dangerouslySetInnerHTML={{ __html: desc }}></div>;
}
return desc;
},
[intl]
);
const renderFields = useMemo(() => { const renderFields = useMemo(() => {
if (!paramsConfig?.length) { if (!paramsConfig?.length) {
return null; return null;
@@ -108,11 +123,7 @@ const ParamsSettings: React.FC<ParamsSettingsProps> = forwardRef(
? item.disabledConfig?.when?.(formValues) ? item.disabledConfig?.when?.(formValues)
: item.disabled : item.disabled
} }
description={ description={renderDescription(item.description)}
item.description?.isLocalized
? intl.formatMessage({ id: item.description.text })
: item.description?.text
}
onChange={null} onChange={null}
{..._.omit(item, [ {..._.omit(item, [
'name', 'name',
+1
View File
@@ -64,5 +64,6 @@ export interface ParamsSchema {
text: string; text: string;
html?: boolean; html?: boolean;
isLocalized?: boolean; isLocalized?: boolean;
isLink?: boolean;
}; };
} }
@@ -99,9 +99,9 @@ const AddWorker: React.FC<ViewModalProps> = (props) => {
className="font-size-12" className="font-size-12"
style={{ color: 'var(--ant-color-text-tertiary)' }} style={{ color: 'var(--ant-color-text-tertiary)' }}
dangerouslySetInnerHTML={{ dangerouslySetInnerHTML={{
__html: `(${intl.formatMessage({ __html: `${intl.formatMessage({
id: 'resources.worker.add.step2.tips' id: 'resources.worker.add.step2.tips'
})})` })}`
}} }}
></span> ></span>
</h3> </h3>
@@ -42,7 +42,7 @@ const AddWorker: React.FC<ViewModalProps> = (props) => {
className="font-size-12" className="font-size-12"
style={{ color: 'var(--ant-color-text-tertiary)' }} style={{ color: 'var(--ant-color-text-tertiary)' }}
dangerouslySetInnerHTML={{ dangerouslySetInnerHTML={{
__html: `(${labels.step2Tips})` __html: `${labels.step2Tips}`
}} }}
></span> ></span>
</h3> </h3>