Commit a5770afb by zhaochengxiang

推荐

parent 5bad3999
......@@ -170,6 +170,10 @@ export function* getSupportedDatatypes() {
return yield call(datamodelerService.getSupportedDatatypes);
}
export function* getSuggestionPreference(payload) {
return yield call(datamodelerService.getSuggestionPreference, payload);
}
export function* suggest(payload) {
return yield call(datamodelerService.suggest, payload);
}
......
......@@ -124,6 +124,10 @@ export function getSupportedDatatypes() {
return GetJSON("/datamodeler/easyDataModelerCURD/getSupportedDatatypes");
}
export function getSuggestionPreference(payload) {
return GetJSON("/datamodeler/easyDataModelerDesign/getSuggestionPreference", payload);
}
export function suggest(payload) {
return PostJSON("/datamodeler/easyDataModelerDesign/suggest", payload);
}
......
......@@ -646,6 +646,7 @@ const ImportAction = React.forwardRef((props, ref) => {
reference={reference}
/>
<ImportActionTable
catalogId={catalogId}
modelerData={modelerData||{}}
constraint={constraint}
template={template}
......
......@@ -224,7 +224,7 @@ export const DragableBodyRow = ({ index, moveRow, className, style, ...restProps
};
export const ImportActionTable = (props) => {
const { modelerData, onChange, editable, supportedDatatypes, constraint, template, validateReports, type = 'model', terms, action, originAction } = props;
const { catalogId, modelerData, onChange, editable, supportedDatatypes, constraint, template, validateReports, type = 'model', terms, action, originAction } = props;
const [ data, setData ] = useState([]);
const [ form ] = Form.useForm();
......@@ -1141,6 +1141,8 @@ export const ImportActionTable = (props) => {
<div onClick={(e) => { e.stopPropagation() }}>
<Suggest
{...suggestParams}
catalogId={catalogId}
modelerData={modelerData}
onCancel={() => {
setSuggestParams({
visible: false,
......
......@@ -10,7 +10,9 @@ import { useDebounceEffect } from 'ahooks'
const topN = 20
const FC = (props) => {
const { visible, name, cnName, onCancel, onOk, triggerType = 'cnName' } = props
const { visible, name, cnName, onCancel, onOk, triggerType = 'cnName', catalogId, modelerData } = props
const [loadingPreference, setLoadingPreference] = React.useState(false)
const [preference, setPreference] = React.useState()
const [loading, setLoading] = React.useState(false)
const [suggests, setSuggests] = React.useState()
const [selectedRows, setSelectedRows] = React.useState()
......@@ -118,6 +120,7 @@ const FC = (props) => {
React.useEffect(() => {
if (visible) {
setAnimating(true)
getSuggestionPreference()
setArgs({
name,
cnName,
......@@ -131,10 +134,10 @@ const FC = (props) => {
}, [visible])
useDebounceEffect(()=>{
if (args.name || args.cnName) {
if (preference && (args.name||args.cnName)) {
getSuggests()
}
}, [args], { wait: 300 })
}, [args, preference], { wait: 300 })
useDebounceEffect(()=>{
setColumns(isCompact?[...cols].slice(0, 4):[...cols])
......@@ -160,6 +163,32 @@ const FC = (props) => {
}
}
const getSuggestionPreference = () => {
setLoadingPreference(true)
let params = {}
if (modelerData?.id) {
params = {
easyDataModelerDataModelId: modelerData?.id
}
} else if (catalogId) {
params = {
dataCatalogId: catalogId
}
}
dispatch({
type: 'datamodel.getSuggestionPreference',
payload: params,
callback: data => {
setLoadingPreference(false)
setPreference(data)
},
error: () => {
setLoadingPreference(false)
}
})
}
const getSuggests = () => {
setLoading(true)
dispatch({
......@@ -170,7 +199,8 @@ const FC = (props) => {
cnName: args.cnName??'',
offset,
topN,
}
},
data: preference
},
callback: data => {
setLoading(false)
......@@ -200,9 +230,11 @@ const FC = (props) => {
}
const close = () => {
setLoadingPreference(false)
setLoading(false)
setAnimating(false)
setCompact(true)
setPreference()
setSuggests()
setOffset(1)
setMore(false)
......@@ -274,7 +306,7 @@ const FC = (props) => {
}}
/>
</div>
<Spin spinning={loading}>
<Spin spinning={loading||loadingPreference}>
<div style={{ height: isCompact?'50vh':'80vh', overflow: 'auto' }}>
<Table
extraColWidth={32}
......
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