feat: update eslint & prettier rules

This commit is contained in:
HYana
2025-04-30 17:36:46 +08:00
parent d4af2d4326
commit 460e065eed
53 changed files with 2241 additions and 2102 deletions
@@ -1,30 +1,21 @@
import {IDynamicFormItemConfig} from "@/app/home/components/dynamic-form/DynamicFormItemConfig";
import {Form, FormInstance} from "antd";
import DynamicFormItemComponent from "@/app/home/components/dynamic-form/DynamicFormItemComponent";
import { IDynamicFormItemConfig } from '@/app/home/components/dynamic-form/DynamicFormItemConfig';
import { Form, FormInstance } from 'antd';
import DynamicFormItemComponent from '@/app/home/components/dynamic-form/DynamicFormItemComponent';
export default function DynamicFormComponent({
form,
itemConfigList,
onSubmit,
form,
itemConfigList,
onSubmit,
}: {
form: FormInstance<object>
itemConfigList: IDynamicFormItemConfig[]
onSubmit?: (val: object) => unknown
form: FormInstance<object>;
itemConfigList: IDynamicFormItemConfig[];
onSubmit?: (val: object) => unknown;
}) {
return (
<Form
form={form}
onFinish={onSubmit}
layout={"vertical"}
>
{
itemConfigList.map(config =>
<DynamicFormItemComponent
key={config.id}
config={config}
/>
)
}
</Form>
)
}
return (
<Form form={form} onFinish={onSubmit} layout={'vertical'}>
{itemConfigList.map((config) => (
<DynamicFormItemComponent key={config.id} config={config} />
))}
</Form>
);
}
@@ -1,38 +1,30 @@
import {Form, Input, InputNumber, Select, Switch} from "antd";
import {DynamicFormItemType, IDynamicFormItemConfig} from "@/app/home/components/dynamic-form/DynamicFormItemConfig";
import { Form, Input, InputNumber, Select, Switch } from 'antd';
import {
DynamicFormItemType,
IDynamicFormItemConfig,
} from '@/app/home/components/dynamic-form/DynamicFormItemConfig';
export default function DynamicFormItemComponent({
config
config,
}: {
config: IDynamicFormItemConfig
config: IDynamicFormItemConfig;
}) {
return (
<Form.Item
label={config.label.zh_CN}
name={config.name}
rules={[{required: config.required, message: "该项为必填项哦~"}]}
initialValue={config.default}
>
{
config.type === DynamicFormItemType.INT &&
<InputNumber/>
}
return (
<Form.Item
label={config.label.zh_CN}
name={config.name}
rules={[{ required: config.required, message: '该项为必填项哦~' }]}
initialValue={config.default}
>
{config.type === DynamicFormItemType.INT && <InputNumber />}
{
config.type === DynamicFormItemType.STRING &&
<Input/>
}
{config.type === DynamicFormItemType.STRING && <Input />}
{
config.type === DynamicFormItemType.BOOLEAN &&
<Switch defaultChecked/>
}
{config.type === DynamicFormItemType.BOOLEAN && <Switch defaultChecked />}
{
config.type === DynamicFormItemType.STRING_ARRAY &&
<Select options={[]}/>
}
</Form.Item>
)
}
{config.type === DynamicFormItemType.STRING_ARRAY && (
<Select options={[]} />
)}
</Form.Item>
);
}
@@ -1,51 +1,54 @@
export interface IDynamicFormItemConfig {
id: string;
default: string | number | boolean | Array<unknown>;
label: IDynamicFormItemLabel;
name: string;
required: boolean;
type: DynamicFormItemType
description?: IDynamicFormItemLabel;
id: string;
default: string | number | boolean | Array<unknown>;
label: IDynamicFormItemLabel;
name: string;
required: boolean;
type: DynamicFormItemType;
description?: IDynamicFormItemLabel;
}
export class DynamicFormItemConfig implements IDynamicFormItemConfig {
id: string;
name: string;
default: string | number | boolean | Array<unknown>;
label: IDynamicFormItemLabel;
required: boolean;
type: DynamicFormItemType;
description?: IDynamicFormItemLabel;
constructor(params: IDynamicFormItemConfig) {
this.id = params.id;
this.name = params.name;
this.default = params.default;
this.label = params.label;
this.required = params.required;
this.type = params.type;
this.description = params.description;
}
id: string;
name: string;
default: string | number | boolean | Array<unknown>;
label: IDynamicFormItemLabel;
required: boolean;
type: DynamicFormItemType;
description?: IDynamicFormItemLabel;
constructor(params: IDynamicFormItemConfig) {
this.id = params.id;
this.name = params.name;
this.default = params.default;
this.label = params.label;
this.required = params.required;
this.type = params.type;
this.description = params.description;
}
}
export interface IDynamicFormItemLabel {
en_US: string,
zh_CN: string,
en_US: string;
zh_CN: string;
}
export enum DynamicFormItemType {
INT = "integer",
STRING = "string",
BOOLEAN = "boolean",
STRING_ARRAY = "array[string]",
UNKNOWN = "unknown",
INT = 'integer',
STRING = 'string',
BOOLEAN = 'boolean',
STRING_ARRAY = 'array[string]',
UNKNOWN = 'unknown',
}
export function isDynamicFormItemType(value: string): value is DynamicFormItemType {
return Object.values(DynamicFormItemType).includes(value as DynamicFormItemType);
export function isDynamicFormItemType(
value: string,
): value is DynamicFormItemType {
return Object.values(DynamicFormItemType).includes(
value as DynamicFormItemType,
);
}
export function parseDynamicFormItemType(value: string): DynamicFormItemType {
return isDynamicFormItemType(value) ? value : DynamicFormItemType.UNKNOWN;
}
return isDynamicFormItemType(value) ? value : DynamicFormItemType.UNKNOWN;
}
@@ -1,41 +1,41 @@
import {
DynamicFormItemConfig,
DynamicFormItemType,
IDynamicFormItemConfig
} from "@/app/home/components/dynamic-form/DynamicFormItemConfig";
DynamicFormItemConfig,
DynamicFormItemType,
IDynamicFormItemConfig,
} from '@/app/home/components/dynamic-form/DynamicFormItemConfig';
export const testDynamicConfigList: IDynamicFormItemConfig[] = [
new DynamicFormItemConfig({
default: "",
id: "111",
label: {
zh_CN: "测试字段string",
en_US: "eng test"
},
name: "string_test",
required: false,
type: DynamicFormItemType.STRING
}),
new DynamicFormItemConfig({
default: "",
id: "222",
label: {
zh_CN: "测试字段int",
en_US: "int eng test"
},
name: "int_test",
required: true,
type: DynamicFormItemType.INT
}),
new DynamicFormItemConfig({
default: "",
id: "333",
label: {
zh_CN: "测试字段boolean",
en_US: "boolean eng test"
},
name: "boolean_test",
required: false,
type: DynamicFormItemType.BOOLEAN
}),
]
new DynamicFormItemConfig({
default: '',
id: '111',
label: {
zh_CN: '测试字段string',
en_US: 'eng test',
},
name: 'string_test',
required: false,
type: DynamicFormItemType.STRING,
}),
new DynamicFormItemConfig({
default: '',
id: '222',
label: {
zh_CN: '测试字段int',
en_US: 'int eng test',
},
name: 'int_test',
required: true,
type: DynamicFormItemType.INT,
}),
new DynamicFormItemConfig({
default: '',
id: '333',
label: {
zh_CN: '测试字段boolean',
en_US: 'boolean eng test',
},
name: 'boolean_test',
required: false,
type: DynamicFormItemType.BOOLEAN,
}),
];
@@ -1,35 +1,27 @@
import styles from "./emptyAndCreate.module.css";
import styles from './emptyAndCreate.module.css';
export default function EmptyAndCreateComponent({
title,
subTitle,
buttonText,
onButtonClick,
export default function EmptyAndCreateComponent({
title,
subTitle,
buttonText,
onButtonClick,
}: {
title: string,
subTitle: string,
buttonText: string,
onButtonClick: () => void,
title: string;
subTitle: string;
buttonText: string;
onButtonClick: () => void;
}) {
return (
<div className={`${styles.emptyPageContainer}`}>
<div className={`${styles.emptyContainer}`}>
<div className={`${styles.emptyInfoContainer}`}>
<div className={`${styles.emptyInfoText}`}>
{title}
</div>
<div className={`${styles.emptyInfoSubText}`}>
{subTitle}
</div>
</div>
<div
className={`${styles.emptyCreateButton}`}
onClick={onButtonClick}
>
{buttonText}
</div>
</div>
return (
<div className={`${styles.emptyPageContainer}`}>
<div className={`${styles.emptyContainer}`}>
<div className={`${styles.emptyInfoContainer}`}>
<div className={`${styles.emptyInfoText}`}>{title}</div>
<div className={`${styles.emptyInfoSubText}`}>{subTitle}</div>
</div>
)
}
<div className={`${styles.emptyCreateButton}`} onClick={onButtonClick}>
{buttonText}
</div>
</div>
</div>
);
}
@@ -1,17 +1,17 @@
"use client";
'use client';
import styles from "./HomeSidebar.module.css";
import { useEffect, useState } from "react";
import styles from './HomeSidebar.module.css';
import { useEffect, useState } from 'react';
import {
SidebarChild,
SidebarChildVO
} from "@/app/home/components/home-sidebar/HomeSidebarChild";
import { useRouter, usePathname } from "next/navigation";
import { sidebarConfigList } from "@/app/home/components/home-sidebar/sidbarConfigList";
SidebarChildVO,
} from '@/app/home/components/home-sidebar/HomeSidebarChild';
import { useRouter, usePathname } from 'next/navigation';
import { sidebarConfigList } from '@/app/home/components/home-sidebar/sidbarConfigList';
// TODO 侧边导航栏要加动画
export default function HomeSidebar({
onSelectedChangeAction
onSelectedChangeAction,
}: {
onSelectedChangeAction: (sidebarChild: SidebarChildVO) => void;
}) {
@@ -24,13 +24,13 @@ export default function HomeSidebar({
}, [pathname]);
const [selectedChild, setSelectedChild] = useState<SidebarChildVO>(
sidebarConfigList[0]
sidebarConfigList[0],
);
useEffect(() => {
console.log("HomeSidebar挂载完成");
console.log('HomeSidebar挂载完成');
initSelect();
return () => console.log("HomeSidebar卸载");
return () => console.log('HomeSidebar卸载');
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
@@ -52,14 +52,14 @@ export default function HomeSidebar({
function handleRouteChange(pathname: string) {
// TODO 这段逻辑并不好,未来router封装好后改掉
// 判断在home下,并且路由更改的是自己的路由子组件则更新UI
const routeList = pathname.split("/");
const routeList = pathname.split('/');
if (
routeList[1] === "home" &&
routeList[1] === 'home' &&
sidebarConfigList.find((childConfig) => childConfig.route === pathname)
) {
console.log("find success");
console.log('find success');
const routeSelectChild = sidebarConfigList.find(
(childConfig) => childConfig.route === pathname
(childConfig) => childConfig.route === pathname,
);
if (routeSelectChild) {
setSelectedChild(routeSelectChild);
@@ -67,42 +67,34 @@ export default function HomeSidebar({
}
}
return (
<div className={`${styles.sidebarContainer}`}>
{/* LangBot、ICON区域 */}
<div className={`${styles.langbotIconContainer}`}>
{/* icon */}
<div className={`${styles.langbotIcon}`}>
L
</div>
<div className={`${styles.langbotText}`}>
Langbot
</div>
return (
<div className={`${styles.sidebarContainer}`}>
{/* LangBot、ICON区域 */}
<div className={`${styles.langbotIconContainer}`}>
{/* icon */}
<div className={`${styles.langbotIcon}`}>L</div>
<div className={`${styles.langbotText}`}>Langbot</div>
</div>
{/* 菜单列表,后期可升级成配置驱动 */}
<div>
{sidebarConfigList.map((config) => {
return (
<div
key={config.id}
onClick={() => {
console.log('click:', config.id);
handleChildClick(config);
}}
>
<SidebarChild
isSelected={selectedChild.id === config.id}
icon={config.icon}
name={config.name}
/>
</div>
{/* 菜单列表,后期可升级成配置驱动 */}
<div>
{
sidebarConfigList.map(config => {
return (
<div
key={config.id}
onClick={() => {
console.log('click:', config.id)
handleChildClick(config)
}}
>
<SidebarChild
isSelected={selectedChild.id === config.id}
icon={config.icon}
name={config.name}
/>
</div>
)
})
}
</div>
</div>
);
}
);
})}
</div>
</div>
);
}
@@ -1,4 +1,4 @@
import styles from "./HomeSidebar.module.css";
import styles from './HomeSidebar.module.css';
export interface ISidebarChildVO {
id: string;
@@ -24,7 +24,7 @@ export class SidebarChildVO {
export function SidebarChild({
icon,
name,
isSelected
isSelected,
}: {
icon: string;
name: string;
@@ -1,28 +1,28 @@
import {SidebarChildVO} from "@/app/home/components/home-sidebar/HomeSidebarChild";
import { SidebarChildVO } from '@/app/home/components/home-sidebar/HomeSidebarChild';
export const sidebarConfigList = [
new SidebarChildVO({
id: "models",
name: "模型配置",
icon: "",
route: "/home/models",
}),
new SidebarChildVO({
id: "bots",
name: "机器人",
icon: "",
route: "/home/bots",
}),
new SidebarChildVO({
id: "pipelines",
name: "流水线",
icon: "",
route: "/home/pipelines",
}),
new SidebarChildVO({
id: "plugins",
name: "插件管理",
icon: "",
route: "/home/plugins",
}),
]
new SidebarChildVO({
id: 'models',
name: '模型配置',
icon: '',
route: '/home/models',
}),
new SidebarChildVO({
id: 'bots',
name: '机器人',
icon: '',
route: '/home/bots',
}),
new SidebarChildVO({
id: 'pipelines',
name: '流水线',
icon: '',
route: '/home/pipelines',
}),
new SidebarChildVO({
id: 'plugins',
name: '插件管理',
icon: '',
route: '/home/plugins',
}),
];
@@ -1,16 +1,9 @@
import styles from "./HomeTittleBar.module.css"
import styles from './HomeTittleBar.module.css';
export default function HomeTitleBar({
title,
}: {
title: string
}) {
return (
<div className={`${styles.titleBarContainer}`}>
<div
className={`${styles.titleText}`}
>{title}</div>
</div>
);
}
export default function HomeTitleBar({ title }: { title: string }) {
return (
<div className={`${styles.titleBarContainer}`}>
<div className={`${styles.titleText}`}>{title}</div>
</div>
);
}