Commit b7084f23 by zhaochengxiang

订阅

parent 6e3251fb
...@@ -135,4 +135,8 @@ export function* getAttrs(payload) { ...@@ -135,4 +135,8 @@ export function* getAttrs(payload) {
export function* getJdbcInformation() { export function* getJdbcInformation() {
return yield call(pds.getJdbcInformation); return yield call(pds.getJdbcInformation);
}
export function* subscribe(payload) {
return yield call(pds.subscribe, payload);
} }
\ No newline at end of file
import { PostFile, GetJSON, PostJSON, Post, Get, GetJSONRaw } from "../util/axios" import { PostFile, GetJSON, PostJSON, Post, Get, GetJSONRaw, callFetchRaw } from "../util/axios"
import { ContextPath } from "../util"; import { ContextPath } from "../util";
export function refreshCatalog() { export function refreshCatalog() {
...@@ -135,4 +135,8 @@ export function getAttrs(payload) { ...@@ -135,4 +135,8 @@ export function getAttrs(payload) {
export function getJdbcInformation() { export function getJdbcInformation() {
return GetJSONRaw(`${ContextPath}/json/jdbc.json`); return GetJSONRaw(`${ContextPath}/json/jdbc.json`);
}
export function subscribe(payload) {
return callFetchRaw('post', '/pdataservice/pdsSub/subscribeMsg', payload)
} }
\ No newline at end of file
import React from 'react'; import React from 'react';
import { Button, Space, Spin, Input, Select, Tooltip, Dropdown, Menu } from 'antd'; import { Button, Space, Spin, Input, Select, Tooltip, Dropdown, Menu, Modal } from 'antd';
import copy from "copy-to-clipboard"; import copy from "copy-to-clipboard";
import { CaretLeftOutlined, CaretRightOutlined } from '@ant-design/icons'; import { CaretLeftOutlined, CaretRightOutlined } from '@ant-design/icons';
import { ResizableBox } from 'react-resizable'; import { ResizableBox } from 'react-resizable';
...@@ -346,6 +346,34 @@ class Model extends React.Component { ...@@ -346,6 +346,34 @@ class Model extends React.Component {
this.setState({ startReleaseVisible: true }) this.setState({ startReleaseVisible: true })
} }
onSubscribeBtnClick = () => {
const { selectModelerIds } = this.state;
const { modal } = this.props;
if ((selectModelerIds||[]).length === 0) {
showMessage('info', '请先选择服务');
return;
}
modal?.confirm({
title: '提示',
content: '是否确认订阅选中服务?',
onOk: () => {
dispatch({
type: 'pds.subscribe',
payload: {
params: {
ids: (selectModelerIds||[]).join(','),
}
},
callback: () => {
showMessage('success', '订阅成功');
this.setState({ selectModelerIds: [] });
}
})
},
});
}
onOfflineBtnClick = () => { onOfflineBtnClick = () => {
const { selectModelerIds } = this.state; const { selectModelerIds } = this.state;
if ((selectModelerIds||[]).length === 0) { if ((selectModelerIds||[]).length === 0) {
...@@ -691,6 +719,12 @@ class Model extends React.Component { ...@@ -691,6 +719,12 @@ class Model extends React.Component {
<Button onClick={() => { this.setState({jdbcInformationVisible: true}); }}>JDBC信息</Button> <Button onClick={() => { this.setState({jdbcInformationVisible: true}); }}>JDBC信息</Button>
</Space> </Space>
{ {
(getDataModelerRole(app?.user)!==DataModelerRoleReader) && isOnlyEnding &&
<Tooltip title={(selectModelerIds||[]).length===0?'请先选择服务':''}>
<Button onClick={this.onSubscribeBtnClick} disabled={(selectModelerIds||[]).length===0}>订阅</Button>
</Tooltip>
}
{
currentView==='dir' && (getDataModelerRole(app?.user)!==DataModelerRoleReader) && isOnlyEnding && currentView==='dir' && (getDataModelerRole(app?.user)!==DataModelerRoleReader) && isOnlyEnding &&
<Tooltip title={(selectModelerIds||[]).length===0?'请先选择服务':''}> <Tooltip title={(selectModelerIds||[]).length===0?'请先选择服务':''}>
<Button onClick={this.onOfflineBtnClick} disabled={(selectModelerIds||[]).length===0}>下线</Button> <Button onClick={this.onOfflineBtnClick} disabled={(selectModelerIds||[]).length===0}>下线</Button>
...@@ -818,10 +852,15 @@ class Model extends React.Component { ...@@ -818,10 +852,15 @@ class Model extends React.Component {
} }
const WrapModel = (props) => { const WrapModel = (props) => {
const [modal, contextHolder] = Modal.useModal();
return ( return (
<AppContext.Consumer> <AppContext.Consumer>
{ {
value => <Model app={value} {...props} /> value => <React.Fragment>
<Model app={value} modal={modal} {...props} />
{contextHolder}
</React.Fragment>
} }
</AppContext.Consumer> </AppContext.Consumer>
) )
......
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