Commit baf74eea by zhaochengxiang

增加项目视角

parent f375b379
......@@ -602,4 +602,16 @@ export function* getSupportDBTypes() {
export function* getColumnTypes(payload) {
return yield call(datamodelerService.getColumnTypes, payload)
}
export function* getAllBranches() {
return yield call(datamodelerService.getAllBranches)
}
export function* saveBranch(payload) {
return yield call(datamodelerService.saveBranch, payload)
}
export function* deleteBranch(payload) {
return yield call(datamodelerService.deleteBranch, payload)
}
\ No newline at end of file
......@@ -548,4 +548,17 @@ export function getSupportDBTypes() {
export function getColumnTypes(payload) {
return GetJSON("/datamodeler/easyDataModelerColumnDataType/getColumnTypes", payload)
}
/*branch*/
export function getAllBranches() {
return GetJSON("/datamodeler/easyDataModelerBranching/getAllBranches")
}
export function saveBranch(payload) {
return PostJSON("/datamodeler/easyDataModelerBranching/saveBranch", payload)
}
export function deleteBranch(payload) {
return Delete1("/datamodeler/easyDataModelerBranching/deleteBranch", payload)
}
\ No newline at end of file
......@@ -12,6 +12,7 @@ import { AppContext } from "../../../../App";
import './ModelTree.less';
import 'react-contexify/dist/ReactContexify.css';
import produce from "immer";
const { Option } = AutoComplete;
......@@ -22,7 +23,11 @@ const viewModes = [
},
{
key: 'state',
name: '模型状态视角'
name: '状态视角'
},
{
key: 'branch',
name: '项目视角'
}
];
......@@ -271,6 +276,33 @@ const ModelTree = (props) => {
});
}
const getBranchTreeData = () => {
setLoading(true);
dispatch({
type: 'datamodel.getAllBranches',
callback: data => {
setLoading(false);
const newData = produce(data??[], (draft) => {
draft.forEach(item => {
item.title = item.name;
item.key = item.id;
})
})
const _dataList = [];
generateList(data??[], _dataList);
setDataList(_dataList);
setTreeData(newData);
setItem((newData??[]).length>0?newData[0]:{});
onSelect && onSelect((newData??[]).length>0?newData[0].key:'');
},
error: () => {
setLoading(false);
}
});
}
const generateList = (treeData, list, path = null) => {
for (let i = 0; i < treeData.length; i++) {
const node = treeData[i];
......@@ -310,12 +342,15 @@ const ModelTree = (props) => {
setViewSelectedKey(key);
setSearchKeyword('');
setOptions([]);
onViewChange && onViewChange(key);
if (key === 'dir') {
getDirTreeData();
} else {
} else if (key === 'state') {
getStateTreeData();
} else if (key === 'branch') {
getBranchTreeData();
}
}
......@@ -362,8 +397,10 @@ const ModelTree = (props) => {
const refresh = () => {
if (viewSelectedKey==='dir') {
getDirTreeData(item?.key||'');
} else {
} else if (viewSelectedKey === 'state') {
getStateTreeData(item?.key||'');
} else if (viewSelectedKey === 'branch') {
getBranchTreeData()
}
}
......@@ -483,7 +520,15 @@ const ModelTree = (props) => {
const onAutoCompleteSelect = (value, option) => {
const paths = value.split('/');
setSearchKeyword(paths[paths.length-1]);
treeDirectoryChanged(option.key);
if (viewSelectedKey === 'dir') {
treeDirectoryChanged(option.key);
} else if (viewSelectedKey === 'branch') {
const index = (treeData??[]).findIndex(item => item.id === option.key)
if (index !== -1) {
setItem(treeData[index])
onSelect?.(treeData[index].id)
}
}
};
const displayMenu = (e) => {
......@@ -601,7 +646,7 @@ const ModelTree = (props) => {
<div className='p-3'>
<Spin spinning={loading} >
{
(viewSelectedKey==='dir') && <AutoComplete
(viewSelectedKey==='dir'||viewSelectedKey==='branch') && <AutoComplete
allowClear
value={searchKeyword}
style={{ marginBottom: 10, width: '100%' }}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment