Commit baf74eea by zhaochengxiang

增加项目视角

parent f375b379
...@@ -602,4 +602,16 @@ export function* getSupportDBTypes() { ...@@ -602,4 +602,16 @@ export function* getSupportDBTypes() {
export function* getColumnTypes(payload) { export function* getColumnTypes(payload) {
return yield call(datamodelerService.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() { ...@@ -548,4 +548,17 @@ export function getSupportDBTypes() {
export function getColumnTypes(payload) { export function getColumnTypes(payload) {
return GetJSON("/datamodeler/easyDataModelerColumnDataType/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"; ...@@ -12,6 +12,7 @@ import { AppContext } from "../../../../App";
import './ModelTree.less'; import './ModelTree.less';
import 'react-contexify/dist/ReactContexify.css'; import 'react-contexify/dist/ReactContexify.css';
import produce from "immer";
const { Option } = AutoComplete; const { Option } = AutoComplete;
...@@ -22,7 +23,11 @@ const viewModes = [ ...@@ -22,7 +23,11 @@ const viewModes = [
}, },
{ {
key: 'state', key: 'state',
name: '模型状态视角' name: '状态视角'
},
{
key: 'branch',
name: '项目视角'
} }
]; ];
...@@ -271,6 +276,33 @@ const ModelTree = (props) => { ...@@ -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) => { const generateList = (treeData, list, path = null) => {
for (let i = 0; i < treeData.length; i++) { for (let i = 0; i < treeData.length; i++) {
const node = treeData[i]; const node = treeData[i];
...@@ -310,12 +342,15 @@ const ModelTree = (props) => { ...@@ -310,12 +342,15 @@ const ModelTree = (props) => {
setViewSelectedKey(key); setViewSelectedKey(key);
setSearchKeyword(''); setSearchKeyword('');
setOptions([]);
onViewChange && onViewChange(key); onViewChange && onViewChange(key);
if (key === 'dir') { if (key === 'dir') {
getDirTreeData(); getDirTreeData();
} else { } else if (key === 'state') {
getStateTreeData(); getStateTreeData();
} else if (key === 'branch') {
getBranchTreeData();
} }
} }
...@@ -362,8 +397,10 @@ const ModelTree = (props) => { ...@@ -362,8 +397,10 @@ const ModelTree = (props) => {
const refresh = () => { const refresh = () => {
if (viewSelectedKey==='dir') { if (viewSelectedKey==='dir') {
getDirTreeData(item?.key||''); getDirTreeData(item?.key||'');
} else { } else if (viewSelectedKey === 'state') {
getStateTreeData(item?.key||''); getStateTreeData(item?.key||'');
} else if (viewSelectedKey === 'branch') {
getBranchTreeData()
} }
} }
...@@ -483,7 +520,15 @@ const ModelTree = (props) => { ...@@ -483,7 +520,15 @@ const ModelTree = (props) => {
const onAutoCompleteSelect = (value, option) => { const onAutoCompleteSelect = (value, option) => {
const paths = value.split('/'); const paths = value.split('/');
setSearchKeyword(paths[paths.length-1]); 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) => { const displayMenu = (e) => {
...@@ -601,7 +646,7 @@ const ModelTree = (props) => { ...@@ -601,7 +646,7 @@ const ModelTree = (props) => {
<div className='p-3'> <div className='p-3'>
<Spin spinning={loading} > <Spin spinning={loading} >
{ {
(viewSelectedKey==='dir') && <AutoComplete (viewSelectedKey==='dir'||viewSelectedKey==='branch') && <AutoComplete
allowClear allowClear
value={searchKeyword} value={searchKeyword}
style={{ marginBottom: 10, width: '100%' }} 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