Add Statistics to NetworkMap 54/111954/1
authorAijana Schumann <aijana.schumann@highstreet-technologies.com>
Tue, 1 Sep 2020 10:54:19 +0000 (12:54 +0200)
committerAijana Schumann <aijana.schumann@highstreet-technologies.com>
Tue, 1 Sep 2020 10:54:19 +0000 (12:54 +0200)
Add statistics/ link and site count information to the networkmap

Issue-ID: CCSDK-2606
Signed-off-by: Aijana Schumann <aijana.schumann@highstreet-technologies.com>
Change-Id: I016f1767c0323d271bf2663c44354393d85a2a3c

sdnr/wt/odlux/apps/networkMapApp/src/components/map.tsx
sdnr/wt/odlux/apps/networkMapApp/src/components/statistics.tsx [new file with mode: 0644]

index d9075c8..363178e 100644 (file)
@@ -18,7 +18,6 @@
 
 import * as React from 'react'
 import * as mapboxgl from 'mapbox-gl';
-import InfoIcon from '@material-ui/icons/Info';
 import { RouteComponentProps, withRouter } from 'react-router-dom';
 
 
@@ -44,6 +43,7 @@ import { verifyResponse, IsTileServerReachableAction, handleConnectionError } fr
 import ConnectionInfo from './connectionInfo'
 import { ApplicationStore } from '../../../../framework/src/store/applicationStore';
 import { showIconLayers, addBaseLayers, swapLayersBack } from '../utils/mapLayers';
+import Statistics from './statistics'
 
 
 
@@ -553,8 +553,6 @@ class Map extends React.Component<mapProps, { isPopupOpen: boolean }> {
 
     render() {
 
-        const reachabe = this.props.isTopoServerReachable && this.props.isTileServerReachable;
-
         return <>
 
             <div id="map" style={{ width: "70%", position: 'relative' }} ref={myRef} >
@@ -563,6 +561,7 @@ class Map extends React.Component<mapProps, { isPopupOpen: boolean }> {
                     <MapPopup onClose={() => { this.setState({ isPopupOpen: false }); }} />
                 }
                 <SearchBar />
+                <Statistics />
                 <ConnectionInfo />
             </div>
         </>
@@ -585,9 +584,6 @@ const mapStateToProps = (state: IApplicationStoreState) => ({
     isTopoServerReachable: state.network.connectivity.isToplogyServerAvailable,
     isTileServerReachable: state.network.connectivity.isTileServerAvailable,
     showIcons: state.network.map.allowIconSwitch
-
-
-
 });
 
 const mapDispatchToProps = (dispatcher: IDispatcher) => ({
diff --git a/sdnr/wt/odlux/apps/networkMapApp/src/components/statistics.tsx b/sdnr/wt/odlux/apps/networkMapApp/src/components/statistics.tsx
new file mode 100644 (file)
index 0000000..4103d64
--- /dev/null
@@ -0,0 +1,57 @@
+/**
+ * ============LICENSE_START========================================================================
+ * ONAP : ccsdk feature sdnr wt odlux
+ * =================================================================================================
+ * Copyright (C) 2020 highstreet technologies GmbH Intellectual Property. All rights reserved.
+ * =================================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ * ============LICENSE_END==========================================================================
+ */
+
+import * as React from 'react';
+import { Paper, Typography, Tooltip } from '@material-ui/core';
+import InfoIcon from '@material-ui/icons/Info';
+
+import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore';
+import connect, { IDispatcher, Connect } from '../../../../framework/src/flux/connect';
+
+type props = Connect<typeof mapStateToProps, typeof mapDispatchToProps>;
+
+const mapStateToProps = (state: IApplicationStoreState) => ({
+    linkCount: state.network.map.statistics.links,
+    siteCount: state.network.map.statistics.sites,
+    isTopoServerReachable: state.network.connectivity.isToplogyServerAvailable,
+    isTileServerReachable: state.network.connectivity.isTileServerAvailable,
+
+});
+
+const mapDispatchToProps = (dispatcher: IDispatcher) => ({
+});
+
+const Statistics: React.FunctionComponent<props> = (props: props) =>{
+
+    const reachabe = props.isTopoServerReachable && props.isTileServerReachable;
+
+
+    return (<Paper style={{ padding: 5, position: 'absolute', display: 'flex', flexDirection: "column", top: 70, width: 200, marginLeft: 5 }}>
+    <div style={{ display: 'flex', flexDirection: "row" }}>
+        <Typography style={{ fontWeight: "bold", flex: "1", color: reachabe ? "black" : "lightgrey" }} >Statistics</Typography>
+        <Tooltip style={{ alignSelf: "flex-end" }} title="Gets updated when the map stops moving.">
+            <InfoIcon fontSize="small" />
+        </Tooltip>
+    </div>
+
+    <Typography style={{ color: reachabe ? "black" : "lightgrey" }}>Sites: {props.siteCount}</Typography>
+    <Typography style={{ color: reachabe ? "black" : "lightgrey" }}>Links: {props.linkCount}</Typography>
+</Paper>)
+}
+
+export default connect(mapStateToProps, mapDispatchToProps)(Statistics);