Commit f966f357 by zhaochengxiang

支持hive

parent ef3e32e8
...@@ -100,7 +100,7 @@ const ImportActionHeader = (props) => { ...@@ -100,7 +100,7 @@ const ImportActionHeader = (props) => {
//分桶字段 //分桶字段
const distributionBucketDescription = useMemo(() => { const distributionBucketDescription = useMemo(() => {
if (modelerData && modelerData.distributionKey) { if (modelerData && modelerData.distributionKey && modelerData.distributionKey.bucketCount) {
const keyNamesString = (modelerData.distributionKey.keys??[]).map(item => item.name).toString() const keyNamesString = (modelerData.distributionKey.keys??[]).map(item => item.name).toString()
return `${keyNamesString} 分桶数${modelerData.distributionKey.bucketCount}` return `${keyNamesString} 分桶数${modelerData.distributionKey.bucketCount}`
} }
...@@ -407,6 +407,24 @@ const ImportActionHeader = (props) => { ...@@ -407,6 +407,24 @@ const ImportActionHeader = (props) => {
label="分桶字段" label="分桶字段"
name="distributionKey" name="distributionKey"
style={{ marginBottom }} style={{ marginBottom }}
rules={[
{
required: true,
validator: (_, value) => {
if ((value?.keys??[]).length >0) {
if (value?.bucketCount === 0) {
return Promise.reject(new Error('分桶数不能为0'));
} else if (!value?.bucketCount) {
return Promise.reject(new Error('请输入分桶数'));
}
}
if (value?.bucketCount && (value?.keys??[]).length===0) {
return Promise.reject(new Error('请选择字段名称'));
}
return Promise.resolve();
}
},
]}
> >
{ {
editable ? <DistributionBucketItem modelerData={modelerData} /> : <span className='word-wrap'>{highlightSearchContentByTerms(distributionBucketDescription, terms)}</span> editable ? <DistributionBucketItem modelerData={modelerData} /> : <span className='word-wrap'>{highlightSearchContentByTerms(distributionBucketDescription, terms)}</span>
...@@ -896,7 +914,11 @@ const DistributionBucketItem = ({ value, modelerData, onChange, ...restProps }) ...@@ -896,7 +914,11 @@ const DistributionBucketItem = ({ value, modelerData, onChange, ...restProps })
const onAttributeChange = (value) => { const onAttributeChange = (value) => {
const newKeys = (modelerData?.easyDataModelerDataModelAttributes||[]).filter(attribute => (value||[]).indexOf(attribute.iid)!==-1); const newKeys = (modelerData?.easyDataModelerDataModelAttributes||[]).filter(attribute => (value||[]).indexOf(attribute.iid)!==-1);
triggerChange({ keys: newKeys }); if ((newKeys??[]).length === 0) {
triggerChange({ keys: newKeys, bucketCount: null });
} else {
triggerChange({ keys: newKeys });
}
} }
const onBucketChange = (e) => { const onBucketChange = (e) => {
...@@ -914,7 +936,7 @@ const DistributionBucketItem = ({ value, modelerData, onChange, ...restProps }) ...@@ -914,7 +936,7 @@ const DistributionBucketItem = ({ value, modelerData, onChange, ...restProps })
return ( return (
<Row gutter={10}> <Row gutter={10}>
<Col span={12}> <Col span={(value?.keys??[]).length>0?12:24}>
<Select <Select
onChange={(val) => { onChange={(val) => {
onAttributeChange(val) onAttributeChange(val)
...@@ -930,14 +952,16 @@ const DistributionBucketItem = ({ value, modelerData, onChange, ...restProps }) ...@@ -930,14 +952,16 @@ const DistributionBucketItem = ({ value, modelerData, onChange, ...restProps })
} }
</Select> </Select>
</Col> </Col>
<Col span={12}> {
<Input (value?.keys??[]).length>0 && <Col span={12}>
onChange={onBucketChange} <Input
value={value.bucketCount} onChange={onBucketChange}
style={{ width: '100%' }} value={value.bucketCount}
placeholder='分桶数' style={{ width: '100%' }}
/> placeholder='分桶数'
</Col> />
</Col>
}
</Row> </Row>
); );
} }
......
...@@ -131,7 +131,7 @@ export const DatatypeInput = ({ value = {}, datatypes = [], onChange }) => { ...@@ -131,7 +131,7 @@ export const DatatypeInput = ({ value = {}, datatypes = [], onChange }) => {
onChange={(e) => { onChange={(e) => {
onParameterValuesChange(e, index); onParameterValuesChange(e, index);
}} }}
value={value.parameterValues[index] || ''} value={value.parameterValues[index]}
style={{ width: '100%' }} style={{ width: '100%' }}
placeholder={parameterCnName} placeholder={parameterCnName}
/> />
......
...@@ -12,9 +12,9 @@ import { isSzseEnv } from '../../../../util'; ...@@ -12,9 +12,9 @@ import { isSzseEnv } from '../../../../util';
const importModes = [ const importModes = [
{ name: '快速创建', key: 'excel-copy' }, { name: '快速创建', key: 'excel-copy' },
{ name: '空白创建', key: 'no-condition' }, { name: '空白创建', key: 'no-condition' },
{ name: 'Word导入', key: 'word' }, // { name: 'Word导入', key: 'word' },
{ name: 'Excel导入', key: 'excel' }, // { name: 'Excel导入', key: 'excel' },
{ name: 'DDL导入', key: 'ddl' }, // { name: 'DDL导入', key: 'ddl' },
] ]
const ImportModal = (props) => { const ImportModal = (props) => {
......
...@@ -478,7 +478,7 @@ const ModelTree = (props) => { ...@@ -478,7 +478,7 @@ const ModelTree = (props) => {
borderBottom: "1px solid #EFEFEF", borderBottom: "1px solid #EFEFEF",
height: 57, height: 57,
alignItems: 'center', alignItems: 'center',
justifyContent: (viewSelectedKey==='dir')?'space-between':'', // justifyContent: (viewSelectedKey==='dir')?'space-between':'',
}} }}
> >
<Dropdown overlay={exportMenu} placement="bottomLeft"> <Dropdown overlay={exportMenu} placement="bottomLeft">
...@@ -489,39 +489,39 @@ const ModelTree = (props) => { ...@@ -489,39 +489,39 @@ const ModelTree = (props) => {
{ {
viewSelectedKey==='dir' && ( viewSelectedKey==='dir' && (
<Tooltip title="新增目录" className='ml-2'> <Tooltip title="新增目录" className='ml-5'>
<PlusOutlined className='default' onClick={add} style={{ fontSize:16,cursor:'pointer' }} /> <PlusOutlined className='default' onClick={add} style={{ fontSize:16,cursor:'pointer' }} />
</Tooltip> </Tooltip>
) )
} }
{ {
viewSelectedKey==='dir' && ( // viewSelectedKey==='dir' && (
<Tooltip title="存量模型导入" className='ml-2'> // <Tooltip title="存量模型导入" className='ml-2'>
<ImportOutlined className='default' onClick={() => { importStockModel && importStockModel() }} style={{ fontSize:16,cursor:'pointer' }} /> // <ImportOutlined className='default' onClick={() => { importStockModel && importStockModel() }} style={{ fontSize:16,cursor:'pointer' }} />
</Tooltip> // </Tooltip>
) // )
} }
<Tooltip title="刷新目录" className='ml-2'> <Tooltip title="刷新目录" className='ml-5'>
<Button type='text' icon={<ReloadOutlined className='default' />} size='small' onClick={refresh} /> <Button type='text' icon={<ReloadOutlined className='default' />} size='small' onClick={refresh} />
</Tooltip> </Tooltip>
{ {
(viewSelectedKey==='dir') && !isSetRootId && ( // (viewSelectedKey==='dir') && !isSetRootId && (
<Dropdown overlay={syncMenu} placement="bottomLeft"> // <Dropdown overlay={syncMenu} placement="bottomLeft">
<Tooltip title="同步目录"> // <Tooltip title="同步目录">
<SyncOutlined className='default ml-2' style={{ fontSize:16,cursor:'pointer' }} /> // <SyncOutlined className='default ml-2' style={{ fontSize:16,cursor:'pointer' }} />
</Tooltip> // </Tooltip>
</Dropdown> // </Dropdown>
) // )
} }
{ {
(viewSelectedKey==='dir') && isSetRootId && ( // (viewSelectedKey==='dir') && isSetRootId && (
<Tooltip title="同步目录" className='ml-2'> // <Tooltip title="同步目录" className='ml-2'>
<Button type='text' icon={<SyncOutlined className='default' />} size='small' onClick={sync} /> // <Button type='text' icon={<SyncOutlined className='default' />} size='small' onClick={sync} />
</Tooltip> // </Tooltip>
) // )
} }
</div> </div>
} }
......
...@@ -647,11 +647,11 @@ class Model extends React.Component { ...@@ -647,11 +647,11 @@ class Model extends React.Component {
{ {
(currentView!=='requirement') && <React.Fragment> (currentView!=='requirement') && <React.Fragment>
<Space> {/* <Space>
<Tooltip title={(selectModelerIds||[]).length===0?'请先选择模型':''}> <Tooltip title={(selectModelerIds||[]).length===0?'请先选择模型':''}>
<Button onClick={this.onExportOtherBtnClick} disabled={(selectModelerIds||[]).length===0}>导出</Button> <Button onClick={this.onExportOtherBtnClick} disabled={(selectModelerIds||[]).length===0}>导出</Button>
</Tooltip> </Tooltip>
</Space> </Space> */}
<Space> <Space>
<Tooltip title={startFlowTip}> <Tooltip title={startFlowTip}>
......
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