diff --git a/config/routes.ts b/config/routes.ts index 416fbade..9ebeb957 100644 --- a/config/routes.ts +++ b/config/routes.ts @@ -319,7 +319,7 @@ const baseRoutes = [ // Cross-resource consumption (tokens + GPU/CPU instances + storage). // A folder so it matches the other top-level groups; more usage views can // graduate in here later. - name: 'usage', + name: 'billingAndUsage', path: '/usage', key: 'usageGroup', icon: 'icon-usage-outlined', diff --git a/src/locales/en-US/usage.ts b/src/locales/en-US/usage.ts index e44e0e7b..ece2734d 100644 --- a/src/locales/en-US/usage.ts +++ b/src/locales/en-US/usage.ts @@ -21,6 +21,11 @@ export default { 'usage.filter.granularity.day': 'Day', 'usage.filter.granularity.week': 'Week', 'usage.filter.granularity.month': 'Month', + 'usage.tabs.summary': 'Summary', + 'usage.tabs.tokens': 'Tokens', + 'usage.tabs.gpuInstances': 'GPU Instances', + 'usage.tabs.storage': 'Storage', + 'usage.tabs.resourceEvents': 'Resource Events', 'usage.tabs.models': 'Models', 'usage.tabs.apikeys': 'API Keys', 'usage.tabs.users': 'User', diff --git a/src/locales/ja-JP/usage.ts b/src/locales/ja-JP/usage.ts index 5bfb4474..522000ae 100644 --- a/src/locales/ja-JP/usage.ts +++ b/src/locales/ja-JP/usage.ts @@ -21,6 +21,11 @@ export default { 'usage.filter.granularity.day': 'Day', 'usage.filter.granularity.week': 'Week', 'usage.filter.granularity.month': 'Month', + 'usage.tabs.summary': '概要', + 'usage.tabs.tokens': 'トークン', + 'usage.tabs.gpuInstances': 'GPU インスタンス', + 'usage.tabs.storage': 'ストレージ', + 'usage.tabs.resourceEvents': 'リソースイベント', 'usage.tabs.models': 'Models', 'usage.tabs.apikeys': 'API Keys', 'usage.tabs.users': 'User', diff --git a/src/locales/ru-RU/usage.ts b/src/locales/ru-RU/usage.ts index 9dc7e355..1dd8c058 100644 --- a/src/locales/ru-RU/usage.ts +++ b/src/locales/ru-RU/usage.ts @@ -21,6 +21,11 @@ export default { 'usage.filter.granularity.day': 'Day', 'usage.filter.granularity.week': 'Week', 'usage.filter.granularity.month': 'Month', + 'usage.tabs.summary': 'Обзор', + 'usage.tabs.tokens': 'Токены', + 'usage.tabs.gpuInstances': 'GPU-инстансы', + 'usage.tabs.storage': 'Хранилище', + 'usage.tabs.resourceEvents': 'События ресурсов', 'usage.tabs.models': 'Models', 'usage.tabs.apikeys': 'API Keys', 'usage.tabs.users': 'User', diff --git a/src/locales/tr-TR/usage.ts b/src/locales/tr-TR/usage.ts index f627415f..f9f94481 100644 --- a/src/locales/tr-TR/usage.ts +++ b/src/locales/tr-TR/usage.ts @@ -21,6 +21,11 @@ export default { 'usage.filter.granularity.day': 'Day', 'usage.filter.granularity.week': 'Week', 'usage.filter.granularity.month': 'Month', + 'usage.tabs.summary': 'Özet', + 'usage.tabs.tokens': 'Token', + 'usage.tabs.gpuInstances': 'GPU Örnekleri', + 'usage.tabs.storage': 'Depolama', + 'usage.tabs.resourceEvents': 'Kaynak Olayları', 'usage.tabs.models': 'Models', 'usage.tabs.apikeys': 'API Keys', 'usage.tabs.users': 'User', diff --git a/src/locales/zh-CN/usage.ts b/src/locales/zh-CN/usage.ts index abd40e73..8ed8f2f3 100644 --- a/src/locales/zh-CN/usage.ts +++ b/src/locales/zh-CN/usage.ts @@ -21,6 +21,11 @@ export default { 'usage.filter.granularity.day': '按天', 'usage.filter.granularity.week': '按周', 'usage.filter.granularity.month': '按月', + 'usage.tabs.summary': '总览', + 'usage.tabs.tokens': 'Token', + 'usage.tabs.gpuInstances': 'GPU 实例', + 'usage.tabs.storage': '存储', + 'usage.tabs.resourceEvents': '资源事件', 'usage.tabs.models': '模型', 'usage.tabs.apikeys': 'API 密钥', 'usage.tabs.users': '用户', diff --git a/src/pages/gpu-service/instances/components/instance-type-cell.tsx b/src/pages/gpu-service/instances/components/instance-type-cell.tsx index e8d3e271..135a63f5 100644 --- a/src/pages/gpu-service/instances/components/instance-type-cell.tsx +++ b/src/pages/gpu-service/instances/components/instance-type-cell.tsx @@ -51,7 +51,14 @@ const InstanceTypeCell: React.FC<{ {sec.name} -
+
{rows.map(([label, value], i) => (
{label || ''} - {value} + + {value} +
))}
diff --git a/src/pages/gpu-service/instances/forms/index.tsx b/src/pages/gpu-service/instances/forms/index.tsx index dd057ceb..aebf1fbd 100644 --- a/src/pages/gpu-service/instances/forms/index.tsx +++ b/src/pages/gpu-service/instances/forms/index.tsx @@ -245,7 +245,12 @@ const GPUServiceInstanceForm: React.FC = forwardRef( const unitResourcesParsed = instanceType?.spec?.unitResourcesParsed; const { count = 0 } = options; - return { + console.log('building resources data with', { + unitResourcesParsed, + count + }); + + const result = { accelerator: _.toString(count), cpu: unitResourcesParsed?.cpu?.cores ? count * unitResourcesParsed?.cpu?.cores @@ -254,6 +259,8 @@ const GPUServiceInstanceForm: React.FC = forwardRef( ? count * unitResourcesParsed?.ram?.value : null }; + console.log('built resources data', result); + return result; }; const buildResourcesDataForSubmit = (values: FormData) => { @@ -475,7 +482,6 @@ const GPUServiceInstanceForm: React.FC = forwardRef( }, getFieldsValue: () => form.getFieldsValue(), applyInstanceType: (instanceType?: InstanceTypeItem) => { - console.log('applying instance type', instanceType); if (!instanceType) { resolveAndApply(undefined, 0); return; diff --git a/src/pages/gpu-service/instances/forms/instance-type.tsx b/src/pages/gpu-service/instances/forms/instance-type.tsx index c05683c8..d356d704 100644 --- a/src/pages/gpu-service/instances/forms/instance-type.tsx +++ b/src/pages/gpu-service/instances/forms/instance-type.tsx @@ -273,7 +273,10 @@ const InstanceTypeFormItem: React.FC = ({
{isGPU && (
- name={['spec', 'resources', 'cpu']}> + + name={['spec', 'resources', 'cpu']} + key="cpu_input" + > { const access = useAccess(); + const intl = useIntl(); // Land on the cross-resource Summary by default. const [activeKey, setActiveKey] = useState('summary'); @@ -31,31 +32,31 @@ const Usage: React.FC = () => { () => [ { key: 'summary', - label: 'Summary', + label: intl.formatMessage({ id: 'usage.tabs.summary' }), children: }, { key: 'tokens', - label: 'Tokens', + label: intl.formatMessage({ id: 'usage.tabs.tokens' }), children: }, { key: 'gpu-instances', - label: 'GPU Instances', + label: intl.formatMessage({ id: 'usage.tabs.gpuInstances' }), children: }, { key: 'storage', - label: 'Storage', + label: intl.formatMessage({ id: 'usage.tabs.storage' }), children: }, { key: 'resource-events', - label: 'Resource Events', + label: intl.formatMessage({ id: 'usage.tabs.resourceEvents' }), children: } ], - [] + [intl] ); // Users who can't see GPU Service (MaaS-only: no cluster, no resource usage)