Commit a4e80d92 by zhaochengxiang

分支目录以及列表显示

parent d2e324a6
...@@ -40,7 +40,7 @@ const ModelTree = (props) => { ...@@ -40,7 +40,7 @@ const ModelTree = (props) => {
id: MENU_ID, id: MENU_ID,
}); });
const { onSelect, onViewChange, refrence='', importStockModel, keyword, searchProperties } = props; const { onSelect, onViewChange, refrence='', importStockModel, keyword, searchProperties, setRootNode } = props;
const { user } = useContext(AppContext); const { user } = useContext(AppContext);
const [ loading, setLoading ] = useState(false); const [ loading, setLoading ] = useState(false);
...@@ -62,6 +62,7 @@ const ModelTree = (props) => { ...@@ -62,6 +62,7 @@ const ModelTree = (props) => {
const [ dataList, setDataList ] = useState([]); const [ dataList, setDataList ] = useState([]);
const [options, setOptions] = useState([]); const [options, setOptions] = useState([]);
const [ isAdmin, setAdmin ] = useState(false); const [ isAdmin, setAdmin ] = useState(false);
const [loadingRoot, setLoadingRoot] = useState(false);
const [modal, contextHolder] = Modal.useModal(); const [modal, contextHolder] = Modal.useModal();
...@@ -95,22 +96,24 @@ const ModelTree = (props) => { ...@@ -95,22 +96,24 @@ const ModelTree = (props) => {
}, [timestamp]) }, [timestamp])
useEffect(() => { useEffect(() => {
if (keyword!=='') { if (viewSelectedKey !== 'branch') {
if (item && !prevItem) { if (keyword!=='') {
setPrevItem(item); if (item && !prevItem) {
} setPrevItem(item);
}
setItem(null);
} else { setItem(null);
if (prevItem && !item) { } else {
setItem(prevItem); if (prevItem && !item) {
onSelect && onSelect(prevItem?.key||''); setItem(prevItem);
setPrevItem(null); onSelect && onSelect(prevItem?.key||'');
setPrevItem(null);
}
} }
} }
//eslint-disable-next-line react-hooks/exhaustive-deps //eslint-disable-next-line react-hooks/exhaustive-deps
}, [ keyword ]) }, [ keyword, viewSelectedKey])
useEffect(() => { useEffect(() => {
if ((searchProperties??[]).length > 0) { if ((searchProperties??[]).length > 0) {
...@@ -277,6 +280,21 @@ const ModelTree = (props) => { ...@@ -277,6 +280,21 @@ const ModelTree = (props) => {
}); });
} }
const getRootThenGetBranchTreeData = () => {
setLoadingRoot(true)
dispatch({
type: 'datamodel.refreshDataModelCatalog',
callback: data => {
setLoadingRoot(false)
setRootNode?.(data)
getBranchTreeData()
},
error: () => {
setLoadingRoot(false)
}
});
}
const getBranchTreeData = (defaultSelectedId) => { const getBranchTreeData = (defaultSelectedId) => {
setLoading(true); setLoading(true);
dispatch({ dispatch({
...@@ -363,7 +381,7 @@ const ModelTree = (props) => { ...@@ -363,7 +381,7 @@ const ModelTree = (props) => {
} else if (key === 'state') { } else if (key === 'state') {
getStateTreeData(); getStateTreeData();
} else if (key === 'branch') { } else if (key === 'branch') {
getBranchTreeData(); getRootThenGetBranchTreeData()
} }
} }
...@@ -677,7 +695,7 @@ const ModelTree = (props) => { ...@@ -677,7 +695,7 @@ const ModelTree = (props) => {
</div> </div>
} }
<div className='p-3'> <div className='p-3'>
<Spin spinning={loading} > <Spin spinning={loading||loadingRoot} >
{ {
(viewSelectedKey==='dir'||viewSelectedKey==='branch') && <AutoComplete (viewSelectedKey==='dir'||viewSelectedKey==='branch') && <AutoComplete
allowClear allowClear
......
...@@ -76,6 +76,7 @@ class Model extends React.Component { ...@@ -76,6 +76,7 @@ class Model extends React.Component {
items: undefined items: undefined
}, },
batchAddTagChange: false, batchAddTagChange: false,
rootNode: undefined,
} }
} }
...@@ -212,7 +213,7 @@ class Model extends React.Component { ...@@ -212,7 +213,7 @@ class Model extends React.Component {
} }
onTableChange = () => { onTableChange = () => {
const { currentView, catalogId, keyword, currentModelState, searchProperties } = this.state; const { currentView, catalogId, keyword, currentModelState, searchProperties, rootNode } = this.state;
this.setState({ loadingTableData: true }, () => { this.setState({ loadingTableData: true }, () => {
if (keyword) { if (keyword) {
...@@ -224,6 +225,10 @@ class Model extends React.Component { ...@@ -224,6 +225,10 @@ class Model extends React.Component {
params.stateId = currentModelState; params.stateId = currentModelState;
} }
if (currentView === 'branch') {
params.branchId = catalogId;
}
dispatchLatestHomepage({ dispatchLatestHomepage({
type: 'datamodel.searchModel', type: 'datamodel.searchModel',
payload: params, payload: params,
...@@ -249,7 +254,6 @@ class Model extends React.Component { ...@@ -249,7 +254,6 @@ class Model extends React.Component {
}) })
} else { } else {
if (currentView === 'dir') { if (currentView === 'dir') {
const params = { const params = {
easyDataModelerCatalogId: catalogId, easyDataModelerCatalogId: catalogId,
}; };
...@@ -268,7 +272,7 @@ class Model extends React.Component { ...@@ -268,7 +272,7 @@ class Model extends React.Component {
this.setState({ loadingTableData: false }); this.setState({ loadingTableData: false });
} }
}) })
} else { } else if (currentView === 'state') {
dispatchLatestHomepage({ dispatchLatestHomepage({
type: 'datamodel.getCurrentDataModelStateCatalog', type: 'datamodel.getCurrentDataModelStateCatalog',
payload: { payload: {
...@@ -281,6 +285,26 @@ class Model extends React.Component { ...@@ -281,6 +285,26 @@ class Model extends React.Component {
this.setState({ loadingTableData: false }); this.setState({ loadingTableData: false });
} }
}) })
} else if (currentView === 'branch') {
const params = {
easyDataModelerCatalogId: rootNode?.id,
branchId: catalogId,
};
if (currentModelState !== '') {
params.stateId = currentModelState;
}
dispatchLatestHomepage({
type: 'datamodel.getCurrentDataModelCatalog',
payload: params,
callback: data => {
this.setState({ loadingTableData: false, tableData: data.easyDataModelerDataModels||[], filterTableData: data.easyDataModelerDataModels||[] });
},
error: () => {
this.setState({ loadingTableData: false });
}
})
} }
} }
}) })
...@@ -303,11 +327,18 @@ class Model extends React.Component { ...@@ -303,11 +327,18 @@ class Model extends React.Component {
} }
onSearchInputChange = (value) => { onSearchInputChange = (value) => {
this.setState({ keyword: value||'', catalogId: '' }, () => { const { currentView } = this.state;
if (value !== '') { if (currentView === 'branch') {
this.setState({ keyword: value}, () => {
this.onTableChange(); this.onTableChange();
} })
}); } else {
this.setState({ keyword: value||'', catalogId: '' }, () => {
if (value !== '') {
this.onTableChange();
}
});
}
} }
onSearchPropertiesClick = () => { onSearchPropertiesClick = () => {
...@@ -598,7 +629,16 @@ class Model extends React.Component { ...@@ -598,7 +629,16 @@ class Model extends React.Component {
axis='x' axis='x'
minConstraints={[230, Infinity]} maxConstraints={[Infinity, Infinity]} minConstraints={[230, Infinity]} maxConstraints={[Infinity, Infinity]}
> >
<ModelTree onViewChange={this.onViewChange} onSelect={this.onTreeSelect} importStockModel={this.importStockModel} keyword={keyword} searchProperties={this.state.searchProperties} {...this.props} /> <ModelTree
onViewChange={this.onViewChange}
onSelect={this.onTreeSelect}
importStockModel={this.importStockModel}
keyword={keyword}
searchProperties={this.state.searchProperties}
setRootNode={(val) => {
this.setState({ rootNode: val })
}}
{...this.props} />
</ResizableBox> </ResizableBox>
<div className='tree-toggle-wrap'> <div className='tree-toggle-wrap'>
<div className='tree-toggle' onClick={this.treeToggleClick}> <div className='tree-toggle' onClick={this.treeToggleClick}>
......
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