fix: locales, empty link in add worker
This commit is contained in:
@@ -39,7 +39,7 @@ export default {
|
|||||||
'clusters.workerpool.batchSize.desc':
|
'clusters.workerpool.batchSize.desc':
|
||||||
'Number of workers created simultaneously in the Worker pool',
|
'Number of workers created simultaneously in the Worker pool',
|
||||||
'clusters.create.addworker.tips':
|
'clusters.create.addworker.tips':
|
||||||
'Please make sure the <a href={link} target="_blank">prerequisites</a> for {label} are met before executing the following command.',
|
'Please make sure the <a href={link} target="_blank">prerequisites</a> are met before executing the following command.',
|
||||||
'clusters.create.addCommand.tips':
|
'clusters.create.addCommand.tips':
|
||||||
'On the Worker that needs to be added, run the following command to join it to the cluster.',
|
'On the Worker that needs to be added, run the following command to join it to the cluster.',
|
||||||
'clusters.create.addCommand.k8s.tips':
|
'clusters.create.addCommand.k8s.tips':
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ export default {
|
|||||||
'menu.login': 'Login',
|
'menu.login': 'Login',
|
||||||
'menu.usage': 'Usage',
|
'menu.usage': 'Usage',
|
||||||
'menu.usage.usage': 'Usage',
|
'menu.usage.usage': 'Usage',
|
||||||
'menu.billingAndUsage': 'Billing & Usage',
|
'menu.billingAndUsage': 'Usage & Billing',
|
||||||
'menu.billingAndUsage.usage': 'Usage',
|
'menu.billingAndUsage.usage': 'Usage',
|
||||||
'menu.404': '404',
|
'menu.404': '404',
|
||||||
'menu.resources.clusters': 'Clusters',
|
'menu.resources.clusters': 'Clusters',
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ export default {
|
|||||||
'clusters.workerpool.batchSize.desc':
|
'clusters.workerpool.batchSize.desc':
|
||||||
'Number of workers created simultaneously in the Worker pool',
|
'Number of workers created simultaneously in the Worker pool',
|
||||||
'clusters.create.addworker.tips':
|
'clusters.create.addworker.tips':
|
||||||
'Please make sure the <a href={link} target="_blank">prerequisites</a> for {label} are met before executing the following command.',
|
'Please make sure the <a href={link} target="_blank">prerequisites</a> are met before executing the following command.',
|
||||||
'clusters.create.addCommand.tips':
|
'clusters.create.addCommand.tips':
|
||||||
'On the Worker that needs to be added, run the following command to join it to the cluster.',
|
'On the Worker that needs to be added, run the following command to join it to the cluster.',
|
||||||
'clusters.create.addCommand.k8s.tips':
|
'clusters.create.addCommand.k8s.tips':
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ export default {
|
|||||||
'menu.login': 'ログイン',
|
'menu.login': 'ログイン',
|
||||||
'menu.usage': '使用状況',
|
'menu.usage': '使用状況',
|
||||||
'menu.usage.usage': '使用状況',
|
'menu.usage.usage': '使用状況',
|
||||||
'menu.billingAndUsage': '請求と使用状況',
|
'menu.billingAndUsage': '使用状況と請求',
|
||||||
'menu.billingAndUsage.usage': '使用状況',
|
'menu.billingAndUsage.usage': '使用状況',
|
||||||
'menu.404': '404',
|
'menu.404': '404',
|
||||||
'menu.settings': 'Settings',
|
'menu.settings': 'Settings',
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ export default {
|
|||||||
'clusters.workerpool.batchSize.desc':
|
'clusters.workerpool.batchSize.desc':
|
||||||
'Количество воркеров, создаваемых одновременно в пуле воркеров',
|
'Количество воркеров, создаваемых одновременно в пуле воркеров',
|
||||||
'clusters.create.addworker.tips':
|
'clusters.create.addworker.tips':
|
||||||
'Пожалуйста, убедитесь, что выполнены <a href={link} target="_blank">предварительные условия</a> для {label} перед выполнением следующей команды.',
|
'Пожалуйста, убедитесь, что выполнены <a href={link} target="_blank">предварительные условия</a> перед выполнением следующей команды.',
|
||||||
'clusters.create.addCommand.tips':
|
'clusters.create.addCommand.tips':
|
||||||
'На воркере, который необходимо добавить, выполните следующую команду, чтобы присоединить его к кластеру.',
|
'На воркере, который необходимо добавить, выполните следующую команду, чтобы присоединить его к кластеру.',
|
||||||
'clusters.create.addCommand.k8s.tips':
|
'clusters.create.addCommand.k8s.tips':
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ export default {
|
|||||||
'menu.login': 'Авторизация',
|
'menu.login': 'Авторизация',
|
||||||
'menu.usage': 'Использование',
|
'menu.usage': 'Использование',
|
||||||
'menu.usage.usage': 'Использование',
|
'menu.usage.usage': 'Использование',
|
||||||
'menu.billingAndUsage': 'Биллинг и использование',
|
'menu.billingAndUsage': 'Использование и биллинг',
|
||||||
'menu.billingAndUsage.usage': 'Использование',
|
'menu.billingAndUsage.usage': 'Использование',
|
||||||
'menu.404': 'Ошибка 404',
|
'menu.404': 'Ошибка 404',
|
||||||
'menu.resources.workers': 'Воркеры',
|
'menu.resources.workers': 'Воркеры',
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ export default {
|
|||||||
'clusters.workerpool.batchSize.desc':
|
'clusters.workerpool.batchSize.desc':
|
||||||
'İşçi havuzunda eşzamanlı olarak oluşturulan işçi düğüm sayısı',
|
'İşçi havuzunda eşzamanlı olarak oluşturulan işçi düğüm sayısı',
|
||||||
'clusters.create.addworker.tips':
|
'clusters.create.addworker.tips':
|
||||||
'Aşağıdaki komutu çalıştırmadan önce lütfen {label} için <a href={link} target="_blank">ön koşulların</a> karşılandığından emin olun.',
|
'Aşağıdaki komutu çalıştırmadan önce lütfen <a href={link} target="_blank">ön koşulların</a> karşılandığından emin olun.',
|
||||||
'clusters.create.addCommand.tips':
|
'clusters.create.addCommand.tips':
|
||||||
'Eklenmesi gereken İşçi Düğümde, kümeye katılması için aşağıdaki komutu çalıştırın.',
|
'Eklenmesi gereken İşçi Düğümde, kümeye katılması için aşağıdaki komutu çalıştırın.',
|
||||||
'clusters.create.addCommand.k8s.tips':
|
'clusters.create.addCommand.k8s.tips':
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ export default {
|
|||||||
'menu.login': 'Giriş',
|
'menu.login': 'Giriş',
|
||||||
'menu.usage': 'Kullanım',
|
'menu.usage': 'Kullanım',
|
||||||
'menu.usage.usage': 'Kullanım',
|
'menu.usage.usage': 'Kullanım',
|
||||||
'menu.billingAndUsage': 'Faturalandırma ve Kullanım',
|
'menu.billingAndUsage': 'Kullanım ve Faturalandırma',
|
||||||
'menu.billingAndUsage.usage': 'Kullanım',
|
'menu.billingAndUsage.usage': 'Kullanım',
|
||||||
'menu.404': '404',
|
'menu.404': '404',
|
||||||
'menu.resources.clusters': 'Kümeler',
|
'menu.resources.clusters': 'Kümeler',
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ export default {
|
|||||||
'clusters.create.noRegions': '无可用的区域',
|
'clusters.create.noRegions': '无可用的区域',
|
||||||
'clusters.workerpool.batchSize.desc': '节点池中同时创建的节点数量。',
|
'clusters.workerpool.batchSize.desc': '节点池中同时创建的节点数量。',
|
||||||
'clusters.create.addworker.tips':
|
'clusters.create.addworker.tips':
|
||||||
'在执行以下命令之前,请确保已满足 {label} 的<a href={link} target="_blank">先决条件</a>。',
|
'在执行以下命令之前,请确保已满足<a href={link} target="_blank">先决条件</a>。',
|
||||||
'clusters.create.addCommand.tips':
|
'clusters.create.addCommand.tips':
|
||||||
'在需要添加的节点上运行以下命令,将其加入到集群中。',
|
'在需要添加的节点上运行以下命令,将其加入到集群中。',
|
||||||
'clusters.create.addCommand.k8s.tips':
|
'clusters.create.addCommand.k8s.tips':
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ export default {
|
|||||||
'dashboard.workers': '节点',
|
'dashboard.workers': '节点',
|
||||||
'dashboard.deployments': '部署',
|
'dashboard.deployments': '部署',
|
||||||
'dashboard.clusters': '集群',
|
'dashboard.clusters': '集群',
|
||||||
'dashboard.totalgpus': 'GPUs',
|
'dashboard.totalgpus': 'GPU',
|
||||||
'dashboard.systemload': '系统负载',
|
'dashboard.systemload': '系统负载',
|
||||||
'dashboard.memory': '内存',
|
'dashboard.memory': '内存',
|
||||||
'dashboard.vram': '显存',
|
'dashboard.vram': '显存',
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ export default {
|
|||||||
'menu.login': '登录',
|
'menu.login': '登录',
|
||||||
'menu.usage': '使用量',
|
'menu.usage': '使用量',
|
||||||
'menu.usage.usage': '使用量',
|
'menu.usage.usage': '使用量',
|
||||||
'menu.billingAndUsage': '计费与用量',
|
'menu.billingAndUsage': '用量与计费',
|
||||||
'menu.billingAndUsage.usage': '用量统计',
|
'menu.billingAndUsage.usage': '用量统计',
|
||||||
'menu.404': '404',
|
'menu.404': '404',
|
||||||
'menu.resources.workers': '节点',
|
'menu.resources.workers': '节点',
|
||||||
|
|||||||
@@ -36,9 +36,7 @@ const SelectVendor: React.FC<AddWorkerStepProps> = ({ disabled }) => {
|
|||||||
// for the Kubernetes provider; other providers stay single-select.
|
// for the Kubernetes provider; other providers stay single-select.
|
||||||
const multiCapable = provider === ProviderValueMap.Kubernetes;
|
const multiCapable = provider === ProviderValueMap.Kubernetes;
|
||||||
|
|
||||||
const [selectedKeys, setSelectedKeys] = useState<string[]>([
|
const [selectedKeys, setSelectedKeys] = useState<string[]>([]);
|
||||||
GPUDriverMap.NVIDIA
|
|
||||||
]);
|
|
||||||
|
|
||||||
// No vendor is gated anymore — every card stays selectable.
|
// No vendor is gated anymore — every card stays selectable.
|
||||||
const availableKeys = undefined;
|
const availableKeys = undefined;
|
||||||
@@ -49,18 +47,6 @@ const SelectVendor: React.FC<AddWorkerStepProps> = ({ disabled }) => {
|
|||||||
{}
|
{}
|
||||||
);
|
);
|
||||||
|
|
||||||
// Push current selection into the shared summary so consumers
|
|
||||||
// (K8sRunCommand, CheckEnvironment, VendorNotes) can read it.
|
|
||||||
useEffect(() => {
|
|
||||||
const primary = selectedKeys[0] || '';
|
|
||||||
updateField('currentGPU', primary);
|
|
||||||
updateField('selectedGPUs', selectedKeys);
|
|
||||||
updateField(
|
|
||||||
'workerCommand',
|
|
||||||
primary ? buildWorkerCommand(primary, itemMetaRef.current[primary]) : null
|
|
||||||
);
|
|
||||||
}, [selectedKeys]);
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const unregister1 = registerField('currentGPU');
|
const unregister1 = registerField('currentGPU');
|
||||||
const unregister2 = registerField('workerCommand');
|
const unregister2 = registerField('workerCommand');
|
||||||
@@ -72,6 +58,29 @@ const SelectVendor: React.FC<AddWorkerStepProps> = ({ disabled }) => {
|
|||||||
};
|
};
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
const buildSelectedKeys = (key: string) => {
|
||||||
|
const prev = [...selectedKeys];
|
||||||
|
const has = prev.includes(key);
|
||||||
|
if (has) {
|
||||||
|
// Clicking a selected card always toggles it off.
|
||||||
|
return prev.filter((v) => v !== key);
|
||||||
|
}
|
||||||
|
// K8s clusters support multiple GPU runtimes, so accumulate picks.
|
||||||
|
// Other providers stay single-select and replace the current pick.
|
||||||
|
if (multiCapable) return [...prev, key];
|
||||||
|
return [key];
|
||||||
|
};
|
||||||
|
|
||||||
|
const updateFieldsOnSelect = (keys: string[]) => {
|
||||||
|
const primary = keys[0] || '';
|
||||||
|
updateField('currentGPU', primary);
|
||||||
|
updateField('selectedGPUs', keys);
|
||||||
|
updateField(
|
||||||
|
'workerCommand',
|
||||||
|
primary ? buildWorkerCommand(primary, itemMetaRef.current[primary]) : null
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
const handleSelect = (key: string, item: any) => {
|
const handleSelect = (key: string, item: any) => {
|
||||||
if (item) {
|
if (item) {
|
||||||
itemMetaRef.current[key] = {
|
itemMetaRef.current[key] = {
|
||||||
@@ -79,19 +88,25 @@ const SelectVendor: React.FC<AddWorkerStepProps> = ({ disabled }) => {
|
|||||||
link: item.link
|
link: item.link
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
setSelectedKeys((prev) => {
|
const keys = buildSelectedKeys(key);
|
||||||
const has = prev.includes(key);
|
updateFieldsOnSelect(keys);
|
||||||
if (has) {
|
setSelectedKeys(keys);
|
||||||
// Clicking a selected card always toggles it off.
|
|
||||||
return prev.filter((v) => v !== key);
|
|
||||||
}
|
|
||||||
// K8s clusters support multiple GPU runtimes, so accumulate picks.
|
|
||||||
// Other providers stay single-select and replace the current pick.
|
|
||||||
if (multiCapable) return [...prev, key];
|
|
||||||
return [key];
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
// init a default selection
|
||||||
|
handleSelect(GPUDriverMap.NVIDIA, {
|
||||||
|
label: 'NVIDIA',
|
||||||
|
hiddenTitle: true,
|
||||||
|
value: GPUDriverMap.NVIDIA,
|
||||||
|
description: '',
|
||||||
|
key: GPUDriverMap.NVIDIA,
|
||||||
|
locale: false,
|
||||||
|
notes: AddWorkerDockerNotes[GPUDriverMap.NVIDIA],
|
||||||
|
link: 'https://docs.gpustack.ai/latest/installation/requirements/#nvidia-gpu'
|
||||||
|
});
|
||||||
|
}, []);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<StepCollapse
|
<StepCollapse
|
||||||
disabled={disabled}
|
disabled={disabled}
|
||||||
|
|||||||
Reference in New Issue
Block a user