style: playround params collapse

This commit is contained in:
jialin
2024-07-17 09:30:42 +08:00
parent b05595f84b
commit 67d26f18c3
8 changed files with 135 additions and 41 deletions
@@ -11,7 +11,7 @@ import { Col, Row, Space, Tooltip } from 'antd';
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import _ from 'lodash'; import _ from 'lodash';
import React from 'react'; import React from 'react';
import { InstanceStatusMap, status } from '../config'; import { InstanceStatusMap, InstanceStatusMapValue, status } from '../config';
import { ModelInstanceListItem } from '../config/types'; import { ModelInstanceListItem } from '../config/types';
interface InstanceItemProps { interface InstanceItemProps {
@@ -23,11 +23,6 @@ interface InstanceItemProps {
) => void; ) => void;
} }
const testStatus = {
state: InstanceStatusMap.Downloading,
text: 'Downloading'
};
const InstanceItem: React.FC<InstanceItemProps> = ({ const InstanceItem: React.FC<InstanceItemProps> = ({
list, list,
handleChildSelect handleChildSelect
@@ -112,7 +107,7 @@ const InstanceItem: React.FC<InstanceItemProps> = ({
} }
statusValue={{ statusValue={{
status: status[item.state] as any, status: status[item.state] as any,
text: item.state, text: InstanceStatusMapValue[item.state],
message: item.state_message message: item.state_message
}} }}
></StatusTag> ></StatusTag>
+19 -8
View File
@@ -22,14 +22,25 @@ export const modelSourceMap: Record<string, string> = {
}; };
export const InstanceStatusMap = { export const InstanceStatusMap = {
Initializing: 'Initializing', Initializing: 'initializing',
Pending: 'Pending', Pending: 'pending',
Running: 'Running', Running: 'running',
Scheduled: 'Scheduled', Scheduled: 'scheduled',
Error: 'Error', Error: 'error',
Downloading: 'Downloading', Downloading: 'downloading',
Unknown: 'Unknown', Unknown: 'unknown',
Analyzing: 'Analyzing' Analyzing: 'analyzing'
};
export const InstanceStatusMapValue = {
[InstanceStatusMap.Initializing]: 'Initializing',
[InstanceStatusMap.Pending]: 'Pending',
[InstanceStatusMap.Running]: 'Running',
[InstanceStatusMap.Scheduled]: 'Scheduled',
[InstanceStatusMap.Error]: 'Error',
[InstanceStatusMap.Downloading]: 'Downloading',
[InstanceStatusMap.Unknown]: 'Unknown',
[InstanceStatusMap.Analyzing]: 'Analyzing'
}; };
export const status: any = { export const status: any = {
@@ -150,7 +150,7 @@ const ParamsSettings: React.FC<ParamsSettingsProps> = ({
</h3> </h3>
<Form.Item<ParamsSettingsFormProps> <Form.Item<ParamsSettingsFormProps>
name="model" name="model"
rules={[{ required: true }]} rules={[{ required: false }]}
> >
<SealSelect <SealSelect
options={ModelList} options={ModelList}
@@ -162,7 +162,7 @@ const ParamsSettings: React.FC<ParamsSettingsProps> = ({
</h3> </h3>
<Form.Item<ParamsSettingsFormProps> <Form.Item<ParamsSettingsFormProps>
name="temperature" name="temperature"
rules={[{ required: true }]} rules={[{ required: false }]}
> >
<FieldWrapper <FieldWrapper
label={renderLabel({ label={renderLabel({
@@ -188,7 +188,7 @@ const ParamsSettings: React.FC<ParamsSettingsProps> = ({
</Form.Item> </Form.Item>
<Form.Item<ParamsSettingsFormProps> <Form.Item<ParamsSettingsFormProps>
name="max_tokens" name="max_tokens"
rules={[{ required: true }]} rules={[{ required: false }]}
> >
<FieldWrapper <FieldWrapper
label={renderLabel({ label={renderLabel({
@@ -214,7 +214,7 @@ const ParamsSettings: React.FC<ParamsSettingsProps> = ({
</Form.Item> </Form.Item>
<Form.Item<ParamsSettingsFormProps> <Form.Item<ParamsSettingsFormProps>
name="top_p" name="top_p"
rules={[{ required: true }]} rules={[{ required: false }]}
> >
<FieldWrapper <FieldWrapper
label={renderLabel({ label={renderLabel({
@@ -240,7 +240,7 @@ const ParamsSettings: React.FC<ParamsSettingsProps> = ({
</Form.Item> </Form.Item>
<Form.Item<ParamsSettingsFormProps> <Form.Item<ParamsSettingsFormProps>
name="seed" name="seed"
rules={[{ required: true }]} rules={[{ required: false }]}
> >
<SealInput.Number <SealInput.Number
label="Seed" label="Seed"
@@ -253,7 +253,7 @@ const ParamsSettings: React.FC<ParamsSettingsProps> = ({
</Form.Item> </Form.Item>
<Form.Item<ParamsSettingsFormProps> <Form.Item<ParamsSettingsFormProps>
name="stop" name="stop"
rules={[{ required: true }]} rules={[{ required: false }]}
> >
<SealInput.Input <SealInput.Input
label="Stop Sequence" label="Stop Sequence"
+40 -13
View File
@@ -1,6 +1,8 @@
import { MenuFoldOutlined, MenuUnfoldOutlined } from '@ant-design/icons';
import { PageContainer } from '@ant-design/pro-components'; import { PageContainer } from '@ant-design/pro-components';
import { useSearchParams } from '@umijs/max'; import { useSearchParams } from '@umijs/max';
import { Divider } from 'antd'; import { Button, Divider } from 'antd';
import classNames from 'classnames';
import { useState } from 'react'; import { useState } from 'react';
import GroundLeft from './components/ground-left'; import GroundLeft from './components/ground-left';
import ParamsSettings from './components/params-settings'; import ParamsSettings from './components/params-settings';
@@ -10,24 +12,49 @@ const Playground: React.FC = () => {
const [searchParams] = useSearchParams(); const [searchParams] = useSearchParams();
const selectModel = searchParams.get('model') || ''; const selectModel = searchParams.get('model') || '';
const [params, setParams] = useState({}); const [params, setParams] = useState({});
const [collapse, setCollapse] = useState(false);
return ( return (
<> <PageContainer ghost extra={[]} className="playground-container">
<PageContainer ghost extra={[]}> <div className="play-ground">
<div className="play-ground"> <div className="chat">
<div className="chat"> <GroundLeft parameters={params}></GroundLeft>
<GroundLeft parameters={params}></GroundLeft> </div>
</div> <div
<div className="divider-line"> className={classNames('left', {
collapse: collapse
})}
>
<Button
onClick={() => setCollapse(!collapse)}
icon={collapse ? <MenuFoldOutlined /> : <MenuUnfoldOutlined />}
style={{ color: 'var(--ant-color-text-tertiary)' }}
size="small"
type="text"
className="collapse-btn"
></Button>
<div
className={classNames('divider-line', {
collapse: collapse
})}
>
<Divider type="vertical" /> <Divider type="vertical" />
</div> </div>
<div className={classNames('params')}>
<div className="params"> <div
<ParamsSettings setParams={setParams} selectedModel={selectModel} /> className={classNames('params-box', {
collapse: collapse
})}
>
<ParamsSettings
setParams={setParams}
selectedModel={selectModel}
/>
</div>
</div> </div>
</div> </div>
</PageContainer> </div>
</> </PageContainer>
); );
}; };
+47 -3
View File
@@ -2,6 +2,28 @@
display: flex; display: flex;
align-items: flex-start; align-items: flex-start;
.left {
position: relative;
display: flex;
justify-content: flex-start;
width: 391px;
.collapse-btn {
position: absolute;
top: 0;
left: 0;
z-index: 1;
}
transition: width 0.3s ease;
&.collapse {
width: 0;
padding-left: 32px;
transition: width 0.3s ease;
}
}
.chat { .chat {
flex: 1; flex: 1;
display: flex; display: flex;
@@ -9,16 +31,38 @@
} }
.params { .params {
padding: 20px; overflow: hidden;
padding-top: 0; height: calc(100vh - 136px);
.collapse {
width: 0;
overflow: hidden;
}
}
.params-box {
padding-inline: 32px;
height: 100%;
overflow-y: auto;
} }
.divider-line { .divider-line {
width: 1px; width: 1px;
&.collapse {
width: 0;
transition: width 0.3s;
}
.ant-divider { .ant-divider {
margin: 0; margin: 0;
min-height: calc(100vh - 136px); height: calc(100vh - 136px);
} }
} }
} }
.playground-container {
.ant-pro-page-container-children-container {
padding-right: 0;
}
}
+4 -4
View File
@@ -10,6 +10,7 @@ import { Button, Input, Modal, Space, Table, Tooltip, message } from 'antd';
import _ from 'lodash'; import _ from 'lodash';
import { memo, useEffect, useState } from 'react'; import { memo, useEffect, useState } from 'react';
import { deleteWorker, queryWorkersList } from '../apis'; import { deleteWorker, queryWorkersList } from '../apis';
import { WorkerStatusMapValue, status } from '../config';
import { Filesystem, GPUDeviceItem, ListItem } from '../config/types'; import { Filesystem, GPUDeviceItem, ListItem } from '../config/types';
const { Column } = Table; const { Column } = Table;
@@ -218,10 +219,9 @@ const Resources: React.FC = () => {
return ( return (
<StatusTag <StatusTag
statusValue={{ statusValue={{
status: ['Inactive', 'Unknown'].includes(record.state) status: status[record.state] as any,
? 'inactive' text: WorkerStatusMapValue[record.state],
: 'success', message: record.state_message
text: record.state
}} }}
></StatusTag> ></StatusTag>
); );
+16
View File
@@ -0,0 +1,16 @@
import { StatusMaps } from '@/config';
export const WorkerStatusMap = {
ready: 'ready',
not_ready: 'not_ready'
};
export const WorkerStatusMapValue = {
[WorkerStatusMap.ready]: 'Ready',
[WorkerStatusMap.not_ready]: 'Not Ready'
};
export const status: any = {
[WorkerStatusMap.ready]: StatusMaps.success,
[WorkerStatusMap.not_ready]: StatusMaps.error
};
+1
View File
@@ -64,6 +64,7 @@ export interface ListItem {
labels: object; labels: object;
state: string; state: string;
ip: string; ip: string;
state_message: string;
status: { status: {
cpu: { cpu: {
total: number; total: number;