Commit abbc2778 authored by zhengjiangtao's avatar zhengjiangtao

增加动环监控和网络拓扑图视图切换

parent fe1a648d
...@@ -2,6 +2,69 @@ ...@@ -2,6 +2,69 @@
height: 100%; height: 100%;
display: flex; display: flex;
.view-header {
height: 42px;
line-height: 42px;
background: rgba(243, 243, 243, 1);
border: 1px solid rgba(234, 234, 234, 1);
border-left: none;
padding-right: 42px;
text-align: right;
padding-top: 2px;
z-index: 1;
position: absolute;
width: 108%;
}
.view-header-close {
height: 42px;
line-height: 42px;
background: #f3f3f3;
/* border: 1px solid #eaeaea; */
border-left: none;
padding-right: 42px;
text-align: right;
padding-top: 2px;
position: relative;
z-index: 5;
width: 270%;
/* left: 30%; */
/* margin-left: 10px; */
/* float: left; */
top: 2px;
}
.image-sytle {
height: 20px;
}
.left-view {
display: inline-block;
width: 36px;
height: 36px;
background: rgba(255, 255, 255, 1);
border: 1px solid rgba(234, 234, 234, 1);
opacity: 1;
border-radius: 4px 0px 0px 4px;
cursor: pointer;
padding: 8px;
position: relative;
}
.right-view {
display: inline-block;
width: 36px;
height: 36px;
background: rgba(255, 255, 255, 1);
border: 1px solid rgba(234, 234, 234, 1);
opacity: 1;
border-radius: 4px 0px 0px 4px;
cursor: pointer;
padding: 8px;
position: relative;
}
.left-content { .left-content {
width: 300px; width: 300px;
position: relative; position: relative;
...@@ -15,7 +78,7 @@ ...@@ -15,7 +78,7 @@
height: 42px; height: 42px;
line-height: 42px; line-height: 42px;
background: #f3f3f3; background: #f3f3f3;
border:1px solid rgba(234,234,234,1); border: 1px solid rgba(234, 234, 234, 1);
border-right: none; border-right: none;
display: flex; display: flex;
align-items: center; align-items: center;
...@@ -40,16 +103,19 @@ ...@@ -40,16 +103,19 @@
.ant-tree { .ant-tree {
height: calc(100% - 42px); height: calc(100% - 42px);
padding-left: 24px; padding-left: 24px;
border:1px solid rgba(234,234,234,1); border: 1px solid rgba(234, 234, 234, 1);
border-top: none; border-top: none;
padding-top: 7px; padding-top: 7px;
.ant-tree-title { .ant-tree-title {
font-size: 16px; font-size: 16px;
font-weight: bold; font-weight: bold;
} }
li .ant-tree-node-content-wrapper.ant-tree-node-selected { li .ant-tree-node-content-wrapper.ant-tree-node-selected {
background-color: rgba(230, 247, 255, 1); background-color: rgba(230, 247, 255, 1);
} }
li span.ant-tree-switcher.ant-tree-switcher_open:after { li span.ant-tree-switcher.ant-tree-switcher_open:after {
display: inline-block; display: inline-block;
width: 17px; width: 17px;
...@@ -73,6 +139,7 @@ ...@@ -73,6 +139,7 @@
background-size: cover; background-size: cover;
vertical-align: sub; vertical-align: sub;
} }
.ant-tree-child-tree { .ant-tree-child-tree {
.ant-tree-switcher:before { .ant-tree-switcher:before {
display: inline-block; display: inline-block;
...@@ -93,6 +160,7 @@ ...@@ -93,6 +160,7 @@
} }
.tree-right { .tree-right {
.ant-menu-item:hover, .ant-menu-item:hover,
.ant-menu-item-active, .ant-menu-item-active,
.ant-menu:not(.ant-menu-inline) .ant-menu-submenu-open, .ant-menu:not(.ant-menu-inline) .ant-menu-submenu-open,
...@@ -106,6 +174,7 @@ ...@@ -106,6 +174,7 @@
font-size: 14px; font-size: 14px;
height: 36px; height: 36px;
line-height: 36px; line-height: 36px;
.tree-add-img { .tree-add-img {
width: 16px; width: 16px;
height: 16px; height: 16px;
...@@ -124,14 +193,22 @@ ...@@ -124,14 +193,22 @@
} }
} }
.left-content-close {
position: relative;
.tree-wrapper {
display: none;
}
}
.right-content { .right-content {
flex: 1; flex: 1;
.net-topo-header { .net-topo-header {
height: 42px; height: 42px;
line-height: 42px; line-height: 42px;
background:rgba(243,243,243,1); background: rgba(243, 243, 243, 1);
border:1px solid rgba(234,234,234,1); border: 1px solid rgba(234, 234, 234, 1);
border-left: none; border-left: none;
padding-right: 42px; padding-right: 42px;
text-align: right; text-align: right;
...@@ -179,7 +256,7 @@ ...@@ -179,7 +256,7 @@
.tooltip-content { .tooltip-content {
width: 251px; width: 251px;
background: #345fa6; background: #345fa6;
box-shadow: inset 0px 3px 6px rgba(0,0,0,0.16); box-shadow: inset 0px 3px 6px rgba(0, 0, 0, 0.16);
opacity: 1; opacity: 1;
border-radius: 7px; border-radius: 7px;
padding: 22px 24px; padding: 22px 24px;
......
...@@ -2,6 +2,69 @@ ...@@ -2,6 +2,69 @@
height: 100%; height: 100%;
display: flex; display: flex;
.view-header {
height: 42px;
line-height: 42px;
background: rgba(243, 243, 243, 1);
border: 1px solid rgba(234, 234, 234, 1);
border-left: none;
padding-right: 42px;
text-align: right;
padding-top: 2px;
z-index: 1;
position: absolute;
width: 108%;
}
.view-header-close {
height: 42px;
line-height: 42px;
background: #f3f3f3;
/* border: 1px solid #eaeaea; */
border-left: none;
padding-right: 42px;
text-align: right;
padding-top: 2px;
position: relative;
z-index: 5;
width: 270%;
/* left: 30%; */
/* margin-left: 10px; */
/* float: left; */
top: 2px;
}
.image-sytle {
height: 20px;
}
.left-view {
display: inline-block;
width: 36px;
height: 36px;
background: rgba(255, 255, 255, 1);
border: 1px solid rgba(234, 234, 234, 1);
opacity: 1;
border-radius: 4px 0px 0px 4px;
cursor: pointer;
padding: 8px;
position: relative;
}
.right-view {
display: inline-block;
width: 36px;
height: 36px;
background: rgba(255, 255, 255, 1);
border: 1px solid rgba(234, 234, 234, 1);
opacity: 1;
border-radius: 4px 0px 0px 4px;
cursor: pointer;
padding: 8px;
position: relative;
}
.left-content { .left-content {
width: 300px; width: 300px;
position: relative; position: relative;
...@@ -15,7 +78,7 @@ ...@@ -15,7 +78,7 @@
height: 42px; height: 42px;
line-height: 42px; line-height: 42px;
background: #f3f3f3; background: #f3f3f3;
border:1px solid rgba(234,234,234,1); border: 1px solid rgba(234, 234, 234, 1);
border-right: none; border-right: none;
display: flex; display: flex;
align-items: center; align-items: center;
...@@ -40,16 +103,17 @@ ...@@ -40,16 +103,17 @@
.ant-tree { .ant-tree {
height: calc(100% - 42px); height: calc(100% - 42px);
padding-left: 24px; padding-left: 24px;
border:1px solid rgba(234,234,234,1); border: 1px solid rgba(234, 234, 234, 1);
border-top: none; border-top: none;
padding-top: 7px; padding-top: 7px;
//overflow-x: scroll; //overflow-x: scroll;
.ant-tree-title { .ant-tree-title {
font-size: 16px; font-size: 16px;
font-weight: bold; font-weight: bold;
} }
li .ant-tree-node-content-wrapper{ li .ant-tree-node-content-wrapper {
width: 82%; width: 82%;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
...@@ -58,6 +122,7 @@ ...@@ -58,6 +122,7 @@
li .ant-tree-node-content-wrapper.ant-tree-node-selected { li .ant-tree-node-content-wrapper.ant-tree-node-selected {
background-color: rgba(230, 247, 255, 1); background-color: rgba(230, 247, 255, 1);
} }
li span.ant-tree-switcher.ant-tree-switcher_open:after { li span.ant-tree-switcher.ant-tree-switcher_open:after {
display: inline-block; display: inline-block;
width: 17px; width: 17px;
...@@ -81,6 +146,7 @@ ...@@ -81,6 +146,7 @@
background-size: cover; background-size: cover;
vertical-align: sub; vertical-align: sub;
} }
.ant-tree-child-tree { .ant-tree-child-tree {
.ant-tree-switcher:before { .ant-tree-switcher:before {
display: inline-block; display: inline-block;
...@@ -101,6 +167,7 @@ ...@@ -101,6 +167,7 @@
} }
.tree-right { .tree-right {
.ant-menu-item:hover, .ant-menu-item:hover,
.ant-menu-item-active, .ant-menu-item-active,
.ant-menu:not(.ant-menu-inline) .ant-menu-submenu-open, .ant-menu:not(.ant-menu-inline) .ant-menu-submenu-open,
...@@ -116,6 +183,7 @@ ...@@ -116,6 +183,7 @@
line-height: 36px; line-height: 36px;
margin-left: -70px; margin-left: -70px;
background-color: white; background-color: white;
.tree-add-img { .tree-add-img {
width: 16px; width: 16px;
height: 16px; height: 16px;
...@@ -134,14 +202,22 @@ ...@@ -134,14 +202,22 @@
} }
} }
.left-content-close {
position: relative;
.tree-wrapper {
display: none;
}
}
.right-content { .right-content {
flex: 1; flex: 1;
.net-topo-header { .net-topo-header {
height: 42px; height: 42px;
line-height: 42px; line-height: 42px;
background:rgba(243,243,243,1); background: rgba(243, 243, 243, 1);
border:1px solid rgba(234,234,234,1); border: 1px solid rgba(234, 234, 234, 1);
border-left: none; border-left: none;
padding-right: 42px; padding-right: 42px;
text-align: right; text-align: right;
...@@ -189,7 +265,7 @@ ...@@ -189,7 +265,7 @@
.tooltip-content { .tooltip-content {
width: 251px; width: 251px;
background: #345fa6; background: #345fa6;
box-shadow: inset 0px 3px 6px rgba(0,0,0,0.16); box-shadow: inset 0px 3px 6px rgba(0, 0, 0, 0.16);
opacity: 1; opacity: 1;
border-radius: 7px; border-radius: 7px;
padding: 22px 24px; padding: 22px 24px;
...@@ -235,21 +311,25 @@ ...@@ -235,21 +311,25 @@
-webkit-transform: scale(0.3); -webkit-transform: scale(0.3);
transform: scale(0.3); transform: scale(0.3);
} }
25% { 25% {
opacity: 0.5; opacity: 0.5;
-webkit-transform: scale(0.3); -webkit-transform: scale(0.3);
transform: scale(0.3); transform: scale(0.3);
} }
50% { 50% {
opacity: 1; opacity: 1;
-webkit-transform: scale(0.3); -webkit-transform: scale(0.3);
transform: scale(0.3); transform: scale(0.3);
} }
75% { 75% {
opacity: 0.5; opacity: 0.5;
-webkit-transform: scale(0.5); -webkit-transform: scale(0.5);
transform: scale(0.5); transform: scale(0.5);
} }
100% { 100% {
opacity: 0.3; opacity: 0.3;
-webkit-transform: scale(0.8); -webkit-transform: scale(0.8);
......
...@@ -243,6 +243,25 @@ class TreeComponent extends Component { ...@@ -243,6 +243,25 @@ class TreeComponent extends Component {
}); });
} }
// 视图切换
toggleView = (value) => {
if (value === 'left') {
this.setState({
isTreeDisplay: true,
activeView: 'left'
});
} else {
this.setState({
isTreeDisplay: false,
activeView: 'detail'
});
}
//拓扑图刷新
const { selectedKeys } = this.state;
this.initTopologyData(selectedKeys[0], '');
}
renderTreeNodes = (data) => { renderTreeNodes = (data) => {
let operableTreeData = deepCopy(data); let operableTreeData = deepCopy(data);
return operableTreeData.map((item) => { return operableTreeData.map((item) => {
......
import React, { Component } from 'react'; import React, { Component } from 'react';
import PropTypes from 'prop-types'; import classnames from 'classnames';
import { message } from 'amos-framework'; import { message } from 'amos-framework';
import AmosWebSocket from 'amos-websocket'; import AmosWebSocket from 'amos-websocket';
import TopologyComponent from './TopologyComponent'; import TopologyComponent from './TopologyComponent';
import TreeComponent from './TreeComponent'; import TreeComponent from './TreeComponent';
import { getDyTopoAction,updateDyTopoAction } from './../../../services/dynamicRingService'; import { getDyTopoAction, updateDyTopoAction } from './../../../services/dynamicRingService';
import SysWsURL from './../../../consts/wsUrlConsts'; import SysWsURL from './../../../consts/wsUrlConsts';
class DynamicRing extends Component { class DynamicRing extends Component {
constructor(props) { constructor(props) {
super(props); super(props);
this.state = { this.state = {
selectedKeys: [], selectedKeys: [],
wSelectedKeys: '', wSelectedKeys: '',
isTreeDisplay: true,
topologyData: {} //拓扑图数据 topologyData: {} //拓扑图数据
}; };
} }
// 拓扑图数据初始化 // 拓扑图数据初始化
initTopologyData = (id,value = '') => { initTopologyData = (id, value = '') => {
getDyTopoAction(id).then(data => { getDyTopoAction(id).then(data => {
if (value === 'refresh') { if (value === 'refresh') {
message.success('拓扑图刷新成功!'); message.success('拓扑图刷新成功!');
...@@ -28,27 +28,27 @@ class DynamicRing extends Component { ...@@ -28,27 +28,27 @@ class DynamicRing extends Component {
topologyData: data topologyData: data
}); });
}); });
} };
// 树选择 // 树选择
onSelect = (selectedKeys) => { onSelect = selectedKeys => {
this.initTopologyData(selectedKeys); this.initTopologyData(selectedKeys);
this.setState({ this.setState({
selectedKeys, selectedKeys,
wSelectedKeys: '' wSelectedKeys: ''
}); });
} };
// 节点数据改变 // 节点数据改变
nodeChange = (e) => { nodeChange = e => {
// console.log(e.model.toJson()); // console.log(e.model.toJson());
this.updateTopologyData = JSON.parse(e.model.toJson()); this.updateTopologyData = JSON.parse(e.model.toJson());
} };
// 保存节点数据 // 保存节点数据
saveTopologyData = () => { saveTopologyData = () => {
const { selectedKeys } = this.state; const { selectedKeys } = this.state;
const { nodeDataArray,linkDataArray } = this.updateTopologyData; const { nodeDataArray, linkDataArray } = this.updateTopologyData;
const params = { const params = {
treeid: selectedKeys, treeid: selectedKeys,
nodeData: nodeDataArray, nodeData: nodeDataArray,
...@@ -57,60 +57,74 @@ class DynamicRing extends Component { ...@@ -57,60 +57,74 @@ class DynamicRing extends Component {
updateDyTopoAction(params).then(data => { updateDyTopoAction(params).then(data => {
message.success('拓扑图保存成功!'); message.success('拓扑图保存成功!');
}); });
} };
// 刷新节点 // 刷新节点
refreshTopologyData = () => { refreshTopologyData = () => {
const { selectedKeys } = this.state; const { selectedKeys } = this.state;
this.initTopologyData(selectedKeys, 'refresh'); this.initTopologyData(selectedKeys, 'refresh');
} };
// 选择节点 // 选择节点
nodeSelectionChanged = (e) => { nodeSelectionChanged = e => {
// console.log('e',e); // console.log('e',e);
if (e.isSelected) { } if (e.isSelected) {
} }
};
// // webSocket 接收消息 // // webSocket 接收消息
handleData = (data) => { handleData = data => {
this.onSelect(data); this.onSelect(data);
this.setState({ this.setState({
wSelectedKeys: data wSelectedKeys: data
}); });
} };
// 视图切换
toggleView = value => {
if (value === 'left') {
this.setState({
isTreeDisplay: true,
activeView: 'left'
});
} else {
this.setState({
isTreeDisplay: false,
activeView: 'detail'
});
}
//拓扑图刷新
const { selectedKeys } = this.state;
this.initTopologyData(selectedKeys[0], '');
};
render() { render() {
const { topologyData,wSelectedKeys } = this.state; const { topologyData, wSelectedKeys, isTreeDisplay } = this.state;
return ( return (
<div className="dy-wrapper"> <div className="dy-wrapper">
<AmosWebSocket <AmosWebSocket ref={node => (this.aws = node)} url={SysWsURL.dyTopoURI} onMessage={this.handleData} reconnect debug />
ref={node => this.aws = node} <div className={classnames({ 'left-content': isTreeDisplay, 'left-content-close': !isTreeDisplay })}>
url={SysWsURL.dyTopoURI} <div className={classnames({ 'view-header': isTreeDisplay, 'view-header-close': !isTreeDisplay })}>
onMessage={this.handleData} <div className="left-view">
reconnect <img className="image-sytle" src="/src/assets/bizView/netTopology/left-view.png" alt="左视图" onClick={() => this.toggleView('left')} />
debug </div>
/> <div className="right-view">
<div className="left-content"> <img className="image-sytle" src="/src/assets/bizView/netTopology/detail-view.png" alt="详细视图" onClick={() => this.toggleView('detail')} />
<TreeComponent </div>
onSelect={this.onSelect} </div>
wSelectedKeys={wSelectedKeys} <TreeComponent onSelect={this.onSelect} wSelectedKeys={wSelectedKeys} />
/>
</div> </div>
<div className="right-content"> <div className="right-content">
<div className="net-topo-header"> <div className="net-topo-header">
<div className="net-topo-save"> <div className="net-topo-save">
<img src="/src/assets/bizView/netTopology/save.png" alt="保存" onClick={this.saveTopologyData} /> <img src="/src/assets/bizView/netTopology/save.png" alt="保存" onClick={this.saveTopologyData} />
</div> </div>
<div className="net-topo-refresh"> <div className="net-topo-refresh">
<img src="/src/assets/bizView/netTopology/refresh.png" alt="刷新" onClick={this.refreshTopologyData} /> <img src="/src/assets/bizView/netTopology/refresh.png" alt="刷新" onClick={this.refreshTopologyData} />
</div> </div>
</div> </div>
<div className="net-topo-content"> <div className="net-topo-content">
<TopologyComponent <TopologyComponent topologyData={topologyData} nodeChange={this.nodeChange} nodeSelectionChanged={this.nodeSelectionChanged} />
topologyData={topologyData}
nodeChange={this.nodeChange}
nodeSelectionChanged={this.nodeSelectionChanged}
/>
</div> </div>
</div> </div>
</div> </div>
...@@ -118,8 +132,6 @@ class DynamicRing extends Component { ...@@ -118,8 +132,6 @@ class DynamicRing extends Component {
} }
} }
DynamicRing.propTypes = { DynamicRing.propTypes = {};
};
export default DynamicRing; export default DynamicRing;
...@@ -244,6 +244,7 @@ class TreeComponent extends Component { ...@@ -244,6 +244,7 @@ class TreeComponent extends Component {
} }
renderTreeNodes = (data) => { renderTreeNodes = (data) => {
let operableTreeData = deepCopy(data); let operableTreeData = deepCopy(data);
return operableTreeData.map((item) => { return operableTreeData.map((item) => {
if (item.isAdd) { if (item.isAdd) {
...@@ -287,9 +288,9 @@ class TreeComponent extends Component { ...@@ -287,9 +288,9 @@ class TreeComponent extends Component {
return ( return (
<div className={classnames('tree-wrapper', className)}> <div className={classnames('tree-wrapper', className)}>
<div className="tree-btn"> <div className="tree-btn">
<div className="add-topo" onClick={this.addTopology}> {/**<div className="add-topo" onClick={this.addTopology}>
<img src="/src/assets/bizView/netTopology/add-topo.png" alt="添加拓扑图" /> <img src="/src/assets/bizView/netTopology/add-topo.png" alt="添加拓扑图" />
</div> </div>*/}
</div> </div>
<Tree <Tree
selectedKeys={selectedKeys} selectedKeys={selectedKeys}
...@@ -297,7 +298,7 @@ class TreeComponent extends Component { ...@@ -297,7 +298,7 @@ class TreeComponent extends Component {
onSelect={this.onSelect} onSelect={this.onSelect}
onExpand={this.onExpand} onExpand={this.onExpand}
autoExpandParent={autoExpandParent} autoExpandParent={autoExpandParent}
onRightClick={this.treeNodeonRightClick} // onRightClick={this.treeNodeonRightClick}
> >
{this.renderTreeNodes(treeData)} {this.renderTreeNodes(treeData)}
</Tree> </Tree>
......
...@@ -4,11 +4,11 @@ import { message } from 'amos-framework'; ...@@ -4,11 +4,11 @@ import { message } from 'amos-framework';
import AmosWebSocket from 'amos-websocket'; import AmosWebSocket from 'amos-websocket';
import TopologyComponent from './TopologyComponent'; import TopologyComponent from './TopologyComponent';
import TreeComponent from './TreeComponent'; import TreeComponent from './TreeComponent';
import { getNetTopoAction,updateNetTopoAction } from './../../../services/netTopologyService'; import { getNetTopoAction, updateNetTopoAction } from './../../../services/netTopologyService';
import SysWsURL from './../../../consts/wsUrlConsts'; import SysWsURL from './../../../consts/wsUrlConsts';
import PamsTable from './pamsTable/index'; import PamsTable from './pamsTable/index';
import { UUID } from 'amos-tool'; import { UUID } from 'amos-tool';
import classnames from 'classnames';
class NetTopology extends Component { class NetTopology extends Component {
constructor(props) { constructor(props) {
...@@ -18,12 +18,13 @@ class NetTopology extends Component { ...@@ -18,12 +18,13 @@ class NetTopology extends Component {
wSelectedKeys: '', wSelectedKeys: '',
topologyData: {}, //拓扑图数据 topologyData: {}, //拓扑图数据
pamsDisplay: false, pamsDisplay: false,
pamsTableContent: [] pamsTableContent: [],
isTreeDisplay: true
}; };
} }
// 拓扑图数据初始化 // 拓扑图数据初始化
initTopologyData = (id,value = '') => { initTopologyData = (id, value = '') => {
getNetTopoAction(id).then(data => { getNetTopoAction(id).then(data => {
if (value === 'refresh') { if (value === 'refresh') {
message.success('拓扑图刷新成功!'); message.success('拓扑图刷新成功!');
...@@ -32,27 +33,27 @@ class NetTopology extends Component { ...@@ -32,27 +33,27 @@ class NetTopology extends Component {
topologyData: data topologyData: data
}); });
}); });
} };
// 树选择 // 树选择
onSelect = (selectedKeys) => { onSelect = selectedKeys => {
this.initTopologyData(selectedKeys); this.initTopologyData(selectedKeys);
this.setState({ this.setState({
selectedKeys, selectedKeys,
wSelectedKeys: '' wSelectedKeys: ''
}); });
} };
// 节点数据改变 // 节点数据改变
nodeChange = (e) => { nodeChange = e => {
// console.log(e.model.toJson()); // console.log(e.model.toJson());
this.updateTopologyData = JSON.parse(e.model.toJson()); this.updateTopologyData = JSON.parse(e.model.toJson());
} };
// 保存节点数据 // 保存节点数据
saveTopologyData = () => { saveTopologyData = () => {
const { selectedKeys } = this.state; const { selectedKeys } = this.state;
const { nodeDataArray,linkDataArray } = this.updateTopologyData; const { nodeDataArray, linkDataArray } = this.updateTopologyData;
const params = { const params = {
treeid: selectedKeys, treeid: selectedKeys,
nodeData: nodeDataArray, nodeData: nodeDataArray,
...@@ -61,86 +62,95 @@ class NetTopology extends Component { ...@@ -61,86 +62,95 @@ class NetTopology extends Component {
updateNetTopoAction(params).then(data => { updateNetTopoAction(params).then(data => {
message.success('拓扑图保存成功!'); message.success('拓扑图保存成功!');
}); });
} };
// 刷新节点 // 刷新节点
refreshTopologyData = () => { refreshTopologyData = () => {
const { selectedKeys } = this.state; const { selectedKeys } = this.state;
this.initTopologyData(selectedKeys, 'refresh'); this.initTopologyData(selectedKeys, 'refresh');
} };
// 选择节点 // 选择节点
nodeSelectionChanged = (e) => { nodeSelectionChanged = e => {
console.log('e',e); console.log('e', e);
if (e.isSelected) { if (e.isSelected) {
this.setState({pamsDisplay: true }); this.setState({ pamsDisplay: true });
console.log(e.data,"device"); console.log(e.data, 'device');
const pamsTableContent = [<PamsTable data={e.data} key={UUID.uuid('16')}></PamsTable>]; const pamsTableContent = [<PamsTable data={e.data} key={UUID.uuid('16')}></PamsTable>];
this.setState({pamsTableContent }); this.setState({ pamsTableContent });
} else { } else {
console.log('没进来'); console.log('没进来');
this.setState({pamsDisplay: false }); this.setState({ pamsDisplay: false });
} }
} };
//pams底部表 //pams底部表
renderPamsTable=()=>{ renderPamsTable = () => {
const {pamsTableContent } = this.state; const { pamsTableContent } = this.state;
return pamsTableContent; return pamsTableContent;
} };
// // webSocket 接收消息 // // webSocket 接收消息
handleData = (data) => { handleData = data => {
this.onSelect(data); this.onSelect(data);
this.setState({ this.setState({
wSelectedKeys: data wSelectedKeys: data
}); });
} };
// 视图切换
toggleView = value => {
if (value === 'left') {
this.setState({
isTreeDisplay: true,
activeView: 'left'
});
} else {
this.setState({
isTreeDisplay: false,
activeView: 'detail'
});
}
//拓扑图刷新
const { selectedKeys } = this.state;
this.initTopologyData(selectedKeys[0], '');
};
render() { render() {
const { topologyData,wSelectedKeys,selectedKeys, pamsDisplay } = this.state; const { topologyData, wSelectedKeys, selectedKeys, pamsDisplay, isTreeDisplay } = this.state;
return ( return (
<div className="net-wrapper"> <div className="net-wrapper">
<AmosWebSocket <AmosWebSocket ref={node => (this.aws = node)} url={SysWsURL.netTopoURI} onMessage={this.handleData} reconnect debug />
ref={node => this.aws = node} <div className={classnames({ 'left-content': isTreeDisplay, 'left-content-close': !isTreeDisplay })}>
url={SysWsURL.netTopoURI} <div className={classnames({ 'view-header': isTreeDisplay, 'view-header-close': !isTreeDisplay })}>
onMessage={this.handleData} <div className="left-view">
reconnect <img className="image-sytle" src="/src/assets/bizView/netTopology/left-view.png" alt="左视图" onClick={() => this.toggleView('left')} />
debug </div>
/> <div className="right-view">
<div className="left-content"> <img className="image-sytle" src="/src/assets/bizView/netTopology/detail-view.png" alt="详细视图" onClick={() => this.toggleView('detail')} />
<TreeComponent </div>
onSelect={this.onSelect} </div>
wSelectedKeys={wSelectedKeys} <TreeComponent onSelect={this.onSelect} wSelectedKeys={wSelectedKeys} />
/>
</div> </div>
<div className="right-content"> <div className="right-content">
<div className="net-topo-header"> <div className="net-topo-header">
<div className="net-topo-save"> <div className="net-topo-save">
<img src="/src/assets/bizView/netTopology/save.png" alt="保存" onClick={this.saveTopologyData} /> <img src="/src/assets/bizView/netTopology/save.png" alt="保存" onClick={this.saveTopologyData} />
</div> </div>
<div className="net-topo-refresh"> <div className="net-topo-refresh">
<img src="/src/assets/bizView/netTopology/refresh.png" alt="刷新" onClick={this.refreshTopologyData} /> <img src="/src/assets/bizView/netTopology/refresh.png" alt="刷新" onClick={this.refreshTopologyData} />
</div> </div>
</div> </div>
<div className="net-topo-content" style={{height: pamsDisplay ? 'calc(100% - 342px)' : 'calc(100% - 42px) ',overflow: 'auto'}}> <div className="net-topo-content" style={{ height: pamsDisplay ? 'calc(100% - 342px)' : 'calc(100% - 42px) ', overflow: 'auto' }}>
<TopologyComponent <TopologyComponent topologyData={topologyData} nodeChange={this.nodeChange} nodeSelectionChanged={this.nodeSelectionChanged} />
topologyData={topologyData}
nodeChange={this.nodeChange}
nodeSelectionChanged={this.nodeSelectionChanged}
/>
</div> </div>
{ {pamsDisplay ? this.renderPamsTable() : null}
pamsDisplay ? this.renderPamsTable() : null
}
</div> </div>
</div> </div>
); );
} }
} }
NetTopology.propTypes = { NetTopology.propTypes = {};
};
export default NetTopology; export default NetTopology;
...@@ -69,8 +69,8 @@ class Pams extends Component { ...@@ -69,8 +69,8 @@ class Pams extends Component {
this.state.cityLine = JSON.parse(this.props.location.state.cityLine); this.state.cityLine = JSON.parse(this.props.location.state.cityLine);
this.viewlineItem(); this.viewlineItem();
} }
} }
componentWillReceiveProps(nextProps) { componentWillReceiveProps(nextProps) {
if (nextProps.location.state) { if (nextProps.location.state) {
this.state.cityLine = JSON.parse(nextProps.location.state.cityLine); this.state.cityLine = JSON.parse(nextProps.location.state.cityLine);
...@@ -245,6 +245,10 @@ class Pams extends Component { ...@@ -245,6 +245,10 @@ class Pams extends Component {
activeView: 'detail' activeView: 'detail'
}); });
} }
//刷新视图
const { selectedKeys } = this.state;
this.initTopologyData(selectedKeys[0], '');
} }
//webSocket 接收消息 //webSocket 接收消息
......
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