feat: model list add stop and start button

This commit is contained in:
jialin
2024-12-18 16:13:58 +08:00
parent 57a1af9392
commit f44aee0af4
7 changed files with 54 additions and 69 deletions
@@ -38,6 +38,7 @@ const DropdownButtons: React.FC<DropdownButtonsProps> = ({
{items?.length === 1 ? ( {items?.length === 1 ? (
<Tooltip title={intl.formatMessage({ id: _.head(items)?.label })}> <Tooltip title={intl.formatMessage({ id: _.head(items)?.label })}>
<Button <Button
className={classNames('dropdown-button', size)}
{..._.head(items)} {..._.head(items)}
icon={_.get(items, '0.icon')} icon={_.get(items, '0.icon')}
size={size} size={size}
+2 -2
View File
@@ -1,8 +1,8 @@
import { createFromIconfontCN } from '@ant-design/icons'; import { createFromIconfontCN } from '@ant-design/icons';
import './iconfont/iconfont.js'; // import './iconfont/iconfont.js';
const IconFont = createFromIconfontCN({ const IconFont = createFromIconfontCN({
scriptUrl: '' scriptUrl: '//at.alicdn.com/t/c/font_4613488_v10ij8hozhi.js'
}); });
export default IconFont; export default IconFont;
+2 -1
View File
@@ -210,5 +210,6 @@ export default {
'common.text.here': 'here', 'common.text.here': 'here',
'common.text.latest': 'Latest', 'common.text.latest': 'Latest',
'common.text.new': 'New', 'common.text.new': 'New',
'common.text.changelog': 'Release Notes' 'common.text.changelog': 'Release Notes',
'common.button.recreate': 'Recreate'
}; };
+2 -1
View File
@@ -203,5 +203,6 @@ export default {
'common.text.here': '这里', 'common.text.here': '这里',
'common.text.latest': '最新', 'common.text.latest': '最新',
'common.text.new': '新', 'common.text.new': '新',
'common.text.changelog': '更新日志' 'common.text.changelog': '更新日志',
'common.button.recreate': '重新创建'
}; };
@@ -8,8 +8,8 @@ import {
ListItem as WorkerListItem ListItem as WorkerListItem
} from '@/pages/resources/config/types'; } from '@/pages/resources/config/types';
import { import {
DeleteOutlined,
FieldTimeOutlined, FieldTimeOutlined,
FileSyncOutlined,
InfoCircleOutlined InfoCircleOutlined
} from '@ant-design/icons'; } from '@ant-design/icons';
import { useIntl } from '@umijs/max'; import { useIntl } from '@umijs/max';
@@ -71,12 +71,12 @@ const InstanceItem: React.FC<InstanceItemProps> = ({
icon: <FieldTimeOutlined /> icon: <FieldTimeOutlined />
}, },
{ {
label: 'common.button.delete', label: 'common.button.recreate',
key: 'delete', key: 'delete',
props: { props: {
danger: true danger: false
}, },
icon: <DeleteOutlined /> icon: <FileSyncOutlined />
} }
]; ];
@@ -240,6 +240,16 @@ const Models: React.FC<ModelsProps> = ({
key: 'edit', key: 'edit',
icon: <EditOutlined /> icon: <EditOutlined />
}, },
{
label: 'common.button.stop',
key: 'stop',
icon: <IconFont type="icon-stop1"></IconFont>
},
{
label: 'common.button.start',
key: 'start',
icon: <IconFont type="icon-playcircle"></IconFont>
},
{ {
label: 'models.openinplayground', label: 'models.openinplayground',
key: 'chat', key: 'chat',
@@ -260,6 +270,13 @@ const Models: React.FC<ModelsProps> = ({
if (action.key === 'chat') { if (action.key === 'chat') {
return record.ready_replicas > 0; return record.ready_replicas > 0;
} }
if (action.key === 'start') {
return record.replicas === 0;
}
if (action.key === 'stop') {
return record.replicas > 0;
}
return true; return true;
}); });
@@ -284,6 +301,27 @@ const Models: React.FC<ModelsProps> = ({
message.success(intl.formatMessage({ id: 'common.message.success' })); message.success(intl.formatMessage({ id: 'common.message.success' }));
}; };
const handleToggleStart = async (row: ListItem, action: string) => {
try {
await updateModel({
id: row.id,
data: {
..._.omit(row, [
'id',
'ready_replicas',
'created_at',
'updated_at',
'rowIndex'
]),
replicas: action === 'start' ? 1 : 0
}
});
message.success(intl.formatMessage({ id: 'common.message.success' }));
} catch (error) {
// ingore
}
};
const handleModalOk = useCallback( const handleModalOk = useCallback(
async (data: FormData) => { async (data: FormData) => {
try { try {
@@ -448,6 +486,9 @@ const Models: React.FC<ModelsProps> = ({
if (val === 'delete') { if (val === 'delete') {
handleDelete(row); handleDelete(row);
} }
if (val === 'start' || val === 'stop') {
handleToggleStart(row, val);
}
}, },
[handleEdit, handleOpenPlayGround, handleDelete] [handleEdit, handleOpenPlayGround, handleDelete]
); );
+2 -61
View File
@@ -4,14 +4,7 @@ export const TTSParamsConfig: ParamsSchema[] = [
{ {
type: 'Select', type: 'Select',
name: 'voice', name: 'voice',
options: [ options: [],
// { label: 'Alloy', value: 'Alloy' },
// { label: 'Echo', value: 'Echo' },
// { label: 'Fable', value: 'Fable' },
// { label: 'Onyx', value: 'Onyx' },
// { label: 'Nova', value: 'Nova' },
// { label: 'Shimmer', value: 'Shimmer' }
],
label: { label: {
text: 'playground.params.voice', text: 'playground.params.voice',
isLocalized: true isLocalized: true
@@ -115,6 +108,7 @@ export const ImageParamsConfig: ParamsSchema[] = [
{ label: 'playground.params.custom', value: 'custom', locale: true }, { label: 'playground.params.custom', value: 'custom', locale: true },
{ label: '512x512', value: '512x512' }, { label: '512x512', value: '512x512' },
{ label: '768x1024', value: '768x1024' }, { label: '768x1024', value: '768x1024' },
{ label: '1024x768', value: '1024x768' },
{ label: '1024x1024', value: '1024x1024' } { label: '1024x1024', value: '1024x1024' }
], ],
description: { description: {
@@ -132,59 +126,6 @@ export const ImageParamsConfig: ParamsSchema[] = [
} }
] ]
} }
// {
// type: 'Select',
// name: 'quality',
// options: [
// { label: 'standard', value: 'standard' },
// { label: 'hd', value: 'hd' }
// ],
// label: {
// text: 'playground.params.quality',
// isLocalized: true
// },
// rules: [
// {
// required: false
// }
// ]
// },
// {
// type: 'Select',
// name: 'style',
// options: [
// { label: 'vivid', value: 'vivid' },
// { label: 'natural', value: 'natural' }
// ],
// label: {
// text: 'playground.params.style',
// isLocalized: true
// },
// rules: [
// {
// required: false
// }
// ]
// }
// {
// type: 'TextArea',
// name: 'prompt',
// label: {
// text: 'Prompt',
// isLocalized: false
// },
// attrs: {
// autoSize: {
// minRows: 2,
// maxRows: 3
// }
// },
// rules: [
// {
// required: false
// }
// ]
// }
]; ];
export const ImageconstExtraConfig: ParamsSchema[] = [ export const ImageconstExtraConfig: ParamsSchema[] = [