Skip to content

Commit

Permalink
Merge pull request #28 from secretflow/sprint/v1.7
Browse files Browse the repository at this point in the history
chore: 6月更新迭代
  • Loading branch information
Angelii authored Jun 25, 2024
2 parents 6b9f8cf + adac2e7 commit 48d1c30
Show file tree
Hide file tree
Showing 86 changed files with 4,038 additions and 1,051 deletions.
14 changes: 14 additions & 0 deletions .aci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
version: "2.0"

stages:
- 敏感信息检测

jobs:
Keymap扫描:
id: scan
stage: 敏感信息检测
component: keymapscan

workflow:
stages:
敏感信息检测:
3 changes: 1 addition & 2 deletions apps/platform/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,5 @@
"peerDependencies": {
"antd": "^5.0.0",
"react": "^18.0.0"
},
"repository": "https://code.alipay.com/Secret-Flow/platform-web.git"
}
}
8 changes: 8 additions & 0 deletions apps/platform/src/assets/data-source.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -1,33 +1,72 @@
import { message } from 'antd';

import { getGraphDetail, fullUpdateGraph } from '@/services/secretpad/GraphController';
import { projectGraphDomainDataSourceList } from '@/services/secretpad/ProjectController';

import { Model } from '@/util/valtio-helper';

import API from '@/services/secretpad';
import { message } from 'antd';
export type DataSourceConfig = {
editAllowed: boolean;
nodeId: string;
nodeName: string;
dataSourceId: string;
};

type SelectOption = {
label: string;
value: string;
};
interface GlobalConfig {
maxParallelism: number;
dataSourceConfig: API.GraphDetailVODataSourceConfig[];
}
export class advancedConfigService extends Model {
loading = false;

config: GlobalConfig = {
maxParallelism: 1,
dataSourceConfig: [],
};

nodeDataSourceOptionsMap: Record<string, SelectOption[]> = {};

queryAllNodeDataSources = async (projectId: string) => {
this.loading = true;
const { status, data } = await projectGraphDomainDataSourceList({
projectId,
});
this.loading = false;
if (status && status.code === 0 && data) {
const obj: Record<string, SelectOption[]> = {};
data.forEach((item) => {
const dataSources = item.dataSources?.map((source) => ({
label: source.dataSourceName,
value: source.dataSourceId,
}));
if (item.nodeId) {
obj[item.nodeId] = dataSources || [];
}
});
this.nodeDataSourceOptionsMap = obj;
}
};

getSetting = async (graphId: string, projectId: string) => {
if (!graphId || !projectId) return;
this.loading = true;
const { status, data } = await API.GraphController.getGraphDetail({
const { status, data } = await getGraphDetail({
graphId,
projectId,
});
this.loading = false;
if (status && status.code === 0) {
this.config.maxParallelism = data?.maxParallelism || 1;
this.config.dataSourceConfig = data?.dataSourceConfig || [];
}
};

setting = async (params: API.FullUpdateGraphRequest) => {
const { status } = await API.GraphController.fullUpdateGraph(params);
const { status } = await fullUpdateGraph(params);
if (status && status.code === 0) {
message.success('配置成功');
} else {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,24 @@
import { getModel, useModel } from '@/util/valtio-helper';
import { DefaultModalManager } from '@/modules/dag-modal-manager';
import { advancedConfigService } from './advanced-config-service';
import { Button, Drawer, Form, InputNumber, Space, Spin } from 'antd';
import { CloseOutlined } from '@ant-design/icons';
import { Button, Drawer, Form, InputNumber, Select, Space, Spin } from 'antd';
import { parse } from 'query-string';
import { useCallback, useEffect } from 'react';
import { useLocation } from 'umi';

import { Platform } from '@/components/platform-wrapper';
import { DefaultModalManager } from '@/modules/dag-modal-manager';
import dagLayoutStyle from '@/modules/layout/dag-layout/index.less';
import { LoginService } from '@/modules/login/login.service';
import { getModel, useModel } from '@/util/valtio-helper';

import { advancedConfigService } from './advanced-config-service';
import styles from './index.less';
import { CloseOutlined } from '@ant-design/icons';
import { useLocation } from 'umi';
import { parse } from 'query-string';

export const AdvancedConfig = () => {
const modalManager = useModel(DefaultModalManager);
const service = useModel(advancedConfigService);
const loginService = useModel(LoginService);

const { nodeDataSourceOptionsMap, config } = service;

const { search } = useLocation();
const { dagId, projectId } = parse(search);
Expand All @@ -30,26 +36,69 @@ export const AdvancedConfig = () => {
await service.getSetting(dagId as string, projectId as string);
}, [dagId]);

const getAllNodeDataSources = useCallback(async () => {
await service.queryAllNodeDataSources(projectId as string);
}, [projectId]);

useEffect(() => {
if (visible) {
getAllNodeDataSources();
getConfig();
}
}, [visible]);

useEffect(() => {
if (visible) {
form.setFieldsValue({
maxParallelism: service.config?.maxParallelism,
maxParallelism: config?.maxParallelism,
dataSourceConfig: config?.dataSourceConfig,
});
}
}, [service.config.maxParallelism, visible]);
}, [config.maxParallelism, visible, config?.dataSourceConfig]);

const getDataSourceOptions = (key: number) => {
const currentNodeConfig = config.dataSourceConfig[key];
return nodeDataSourceOptionsMap[currentNodeConfig?.nodeId];
};

const handleDisabled = (key: number) => {
/**
* editAllowed 为 true 才可以编辑, 并且要满足下面的条件
* 1. center 模式下
* - center 账号可以全部编辑
* - - edge 账号只能编辑自己节点以及内置节点
* 2. p2p 模式下只能编辑当前节点
*/
const editAllowed = service.config?.dataSourceConfig[key]?.editEnable;
const currentNodeId = service.config?.dataSourceConfig[key]?.nodeId;
const ownerId = loginService?.userInfo?.ownerId;

if (loginService?.userInfo?.platformType === Platform.CENTER) {
if (loginService?.userInfo?.ownerType === 'EDGE') {
// editAllowed 服务端已经做了关于当前登陆用户是不是当前节点的判断了,所有直接返回 editAllowed
return editAllowed;
} else if (loginService?.userInfo?.ownerType === 'CENTER') {
return editAllowed;
}
} else if (loginService?.userInfo?.platformType === Platform.AUTONOMY) {
// p2p 模式下只能编辑当前节点
return editAllowed && ownerId === currentNodeId;
}
return false;
};

const handleOk = () => {
form.validateFields().then(async (value) => {
const params = {
maxParallelism: value.maxParallelism,
graphId: dagId as string,
projectId: projectId as string,
dataSourceConfig: value.dataSourceConfig
.filter((item: { editEnable: boolean }) => item.editEnable === true)
.map((item: { nodeId: string; dataSourceId: string }) => ({
nodeId: item.nodeId,
dataSourceId: item.dataSourceId,
})),
};
await service.setting(params);
onClose();
Expand Down Expand Up @@ -80,7 +129,12 @@ export const AdvancedConfig = () => {
}
>
<Spin spinning={service.loading}>
<Form form={form}>
<Form
form={form}
initialValues={{
maxParallelism: 1,
}}
>
<Form.Item
name={'maxParallelism'}
label={<div className={styles.task}>任务并发数</div>}
Expand All @@ -89,14 +143,44 @@ export const AdvancedConfig = () => {
wrapperCol={{ offset: 4, span: 12 }}
>
<InputNumber
defaultValue={1}
step={1}
min={1}
max={100}
style={{ width: '100%' }}
precision={0}
/>
</Form.Item>
<Form.List name="dataSourceConfig">
{(fields) => {
return (
<>
{fields.map((field) => (
<div key={field.key} className={styles.nodeStoragePath}>
<Form.Item
{...field}
label={
<span className={styles.label}>{`节点${
config?.dataSourceConfig[field.key]?.nodeName
}默认存储数据源`}</span>
}
name={[field.name, 'dataSourceId']}
rules={[{ required: true, message: '请选择' }]}
labelCol={{ span: 24 }}
wrapperCol={{ span: 24 }}
extra="保存后将不可修改"
>
<Select
placeholder="请选择"
disabled={!handleDisabled(field.key)}
options={getDataSourceOptions(field.key)}
/>
</Form.Item>
</div>
))}
</>
);
}}
</Form.List>
<div className={styles.footer}>
<Space>
<Button type="primary" size="small" onClick={handleOk}>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
.configDrawer {
position: absolute;

.fontSizeSmall() {
color: rgb(0 0 0 / 88%);
font-size: 12px !important;
line-height: 20px;
}

:global {
.ant-drawer-content-wrapper {
box-shadow: 0 1px 4px 0 rgb(0 0 0 / 15%);
Expand All @@ -20,7 +26,7 @@
}

.ant-form-item {
margin-bottom: 16px;
margin-bottom: 12px;
}

.ant-alert-message {
Expand All @@ -42,8 +48,22 @@
}

.task {
color: rgb(0 0 0 / 88%);
font-size: 12px !important;
line-height: 20px;
.fontSizeSmall();
}

.nodeStoragePath {
:global(.ant-col-24.ant-form-item-label) {
padding: 0;
}

:global(.ant-form-item .ant-form-item-extra) {
min-height: 16px;
margin-top: 4px;
font-size: 12px;
}

.label {
.fontSizeSmall();
}
}
}
Loading

0 comments on commit 48d1c30

Please sign in to comment.