Migrate odlux 40/117440/2
authorRavi Pendurty <ravi.pendurty@highstreet-technologies.com>
Wed, 3 Feb 2021 15:10:57 +0000 (16:10 +0100)
committerDan Timoney <dtimoney@att.com>
Fri, 5 Feb 2021 22:58:04 +0000 (22:58 +0000)
Migrate odlux to Aluminium

Issue-ID: CCSDK-3136
Signed-off-by: Ravi Pendurty <ravi.pendurty@highstreet-technologies.com>
Change-Id: I3200a809a31e87021c95fe103a9c95e03011f503
Signed-off-by: Ravi Pendurty <ravi.pendurty@highstreet-technologies.com>
47 files changed:
sdnr/wt/odlux/apps/apiDemo/pom.xml
sdnr/wt/odlux/apps/app-feature/pom.xml
sdnr/wt/odlux/apps/app-installer/pom.xml
sdnr/wt/odlux/apps/configurationApp/pom.xml
sdnr/wt/odlux/apps/connectApp/pom.xml
sdnr/wt/odlux/apps/connectApp/webpack.config.js
sdnr/wt/odlux/apps/demoApp/pom.xml
sdnr/wt/odlux/apps/eventLogApp/pom.xml
sdnr/wt/odlux/apps/faultApp/pom.xml
sdnr/wt/odlux/apps/faultApp/src/index.html
sdnr/wt/odlux/apps/helpApp/pom.xml
sdnr/wt/odlux/apps/inventoryApp/pom.xml
sdnr/wt/odlux/apps/inventoryApp/webpack.config.js
sdnr/wt/odlux/apps/linkCalculationApp/pom.xml
sdnr/wt/odlux/apps/linkCalculationApp/src/components/denseTable.tsx [deleted file]
sdnr/wt/odlux/apps/maintenanceApp/pom.xml
sdnr/wt/odlux/apps/mediatorApp/pom.xml
sdnr/wt/odlux/apps/minimumApp/pom.xml
sdnr/wt/odlux/apps/networkMapApp/package.json
sdnr/wt/odlux/apps/networkMapApp/pom.xml
sdnr/wt/odlux/apps/networkMapApp/src/actions/connectivityAction.ts
sdnr/wt/odlux/apps/networkMapApp/src/components/denseTable.tsx
sdnr/wt/odlux/apps/networkMapApp/src/components/details/linkDetails.tsx
sdnr/wt/odlux/apps/networkMapApp/src/components/details/siteDetails.tsx
sdnr/wt/odlux/apps/networkMapApp/src/components/map.tsx
sdnr/wt/odlux/apps/networkMapApp/src/components/mapPopup.tsx
sdnr/wt/odlux/apps/networkMapApp/src/handlers/mapReducer.ts
sdnr/wt/odlux/apps/networkMapApp/src/pluginTransport.tsx
sdnr/wt/odlux/apps/networkMapApp/src/services/mapImagesService.ts
sdnr/wt/odlux/apps/networkMapApp/src/utils/mapLayers.ts
sdnr/wt/odlux/apps/networkMapApp/webpack.config.js
sdnr/wt/odlux/apps/performanceHistoryApp/pom.xml
sdnr/wt/odlux/core/features/pom.xml
sdnr/wt/odlux/core/installer/pom.xml
sdnr/wt/odlux/core/model/pom.xml
sdnr/wt/odlux/core/pom.xml
sdnr/wt/odlux/core/provider/pom.xml
sdnr/wt/odlux/core/provider/src/test/java/org/onap/ccsdk/features/sdnr/odlux/test/TestResFileServlet.java
sdnr/wt/odlux/framework/pom.xml
sdnr/wt/odlux/framework/src/app.tsx
sdnr/wt/odlux/framework/src/assets/version.json
sdnr/wt/odlux/framework/src/components/material-table/tableToolbar.tsx
sdnr/wt/odlux/framework/src/components/material-ui/listItemLink.tsx
sdnr/wt/odlux/framework/src/components/navigationMenu.tsx
sdnr/wt/odlux/framework/src/services/notificationService.ts
sdnr/wt/odlux/installer/pom.xml
sdnr/wt/odlux/pom.xml

index b30675f..77d3759 100644 (file)
@@ -26,7 +26,7 @@
     <parent>
         <groupId>org.onap.ccsdk.parent</groupId>
         <artifactId>odlparent</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
         <relativePath/>
     </parent>
 
@@ -45,7 +45,6 @@
 
     <properties>
         <maven.javadoc.skip>true</maven.javadoc.skip>
-        <checkstyle.skip>true</checkstyle.skip>
     </properties>
 
     <dependencies>
index 01b4c72..17cd493 100644 (file)
@@ -29,7 +29,7 @@
     <parent>
         <groupId>org.onap.ccsdk.parent</groupId>
         <artifactId>single-feature-parent</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
         <relativePath/>
     </parent>
 
@@ -48,7 +48,6 @@
 
     <properties>
         <maven.javadoc.skip>true</maven.javadoc.skip>
-        <checkstyle.skip>true</checkstyle.skip>
     </properties>
 
     <dependencies>
@@ -97,7 +96,7 @@
             <artifactId>sdnr-wt-odlux-app-configurationApp</artifactId>
             <version>${project.version}</version>
         </dependency>
-        <dependency>
+         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>sdnr-wt-odlux-app-networkMapApp</artifactId>
             <version>${project.version}</version>
             <version>${project.version}</version>
         </dependency>
 
+        
+        
     </dependencies>
 </project>
index 06aad24..d84d968 100755 (executable)
@@ -26,7 +26,7 @@
     <parent>
         <groupId>org.onap.ccsdk.parent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
         <relativePath/>
     </parent>
 
index 8dcea54..2cf3896 100644 (file)
@@ -26,7 +26,7 @@
     <parent>
         <groupId>org.onap.ccsdk.parent</groupId>
         <artifactId>odlparent</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
         <relativePath/>
     </parent>
 
@@ -45,7 +45,6 @@
 
     <properties>
         <maven.javadoc.skip>true</maven.javadoc.skip>
-        <checkstyle.skip>true</checkstyle.skip>
     </properties>
 
     <dependencies>
index f6ee9b3..4d3fa98 100644 (file)
@@ -26,7 +26,7 @@
     <parent>
         <groupId>org.onap.ccsdk.parent</groupId>
         <artifactId>odlparent</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
         <relativePath/>
     </parent>
 
@@ -45,7 +45,6 @@
 
     <properties>
         <maven.javadoc.skip>true</maven.javadoc.skip>
-        <checkstyle.skip>true</checkstyle.skip>
     </properties>
 
     <dependencies>
index 7b0a517..4c458a6 100644 (file)
@@ -126,27 +126,27 @@ module.exports = (env) => {
       },
       proxy: {
         "/oauth2/": {
-          target: "http://10.20.6.29:48181",
+          target: "http://10.20.6.29:28181",
           secure: false
         },
         "/database/": {
-          target: "http://10.20.6.29:48181",
+          target: "http://10.20.6.29:28181",
           secure: false
         },
-        "/restconf/": {
-          target: "http://10.20.6.29:48181",
+        "/tree/": {
+          target: "http://10.20.6.29:28181",
           secure: false
         },
         "/rests/": {
-          target: "http://10.20.6.29:48181",
+          target: "http://10.20.6.29:28181",
           secure: false
         },
         "/help/": {
-          target: "http://10.20.6.29:48181",
+          target: "http://10.20.6.29:28181",
           secure: false
         },
         "/websocket": {
-          target: "http://10.20.6.29:48181",
+          target: "http://10.20.6.29:28181",
           ws: true,
           changeOrigin: true,
           secure: false
index e7921d9..0d7874b 100644 (file)
@@ -26,7 +26,7 @@
     <parent>
         <groupId>org.onap.ccsdk.parent</groupId>
         <artifactId>odlparent</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
         <relativePath/>
     </parent>
 
@@ -45,7 +45,6 @@
 
     <properties>
         <maven.javadoc.skip>true</maven.javadoc.skip>
-        <checkstyle.skip>true</checkstyle.skip>
     </properties>
 
     <dependencies>
index c49423f..c5188ea 100644 (file)
@@ -26,7 +26,7 @@
     <parent>
         <groupId>org.onap.ccsdk.parent</groupId>
         <artifactId>odlparent</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
         <relativePath/>
     </parent>
 
@@ -45,7 +45,6 @@
 
     <properties>
         <maven.javadoc.skip>true</maven.javadoc.skip>
-        <checkstyle.skip>true</checkstyle.skip>
     </properties>
 
     <dependencies>
index c4cac7f..1897f98 100644 (file)
@@ -26,7 +26,7 @@
     <parent>
         <groupId>org.onap.ccsdk.parent</groupId>
         <artifactId>odlparent</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
         <relativePath/>
     </parent>
 
@@ -45,7 +45,6 @@
 
     <properties>
         <maven.javadoc.skip>true</maven.javadoc.skip>
-        <checkstyle.skip>true</checkstyle.skip>
     </properties>
 
     <dependencies>
index cd315f0..c379680 100644 (file)
@@ -15,8 +15,9 @@
   <script type="text/javascript" src="./config.js"></script>
   <script>
     // run the application
-    require(["app", "faultApp" ], function (app, faultApp) {
+    require(["app", "faultApp", "connectApp" ], function (app, faultApp, connectApp) {
         faultApp.register();
+        connectApp.register();
         app("./app.tsx").runApplication();
       });
   </script>
index 7b82672..2057093 100644 (file)
@@ -26,7 +26,7 @@
     <parent>
         <groupId>org.onap.ccsdk.parent</groupId>
         <artifactId>odlparent</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
         <relativePath/>
     </parent>
 
@@ -45,7 +45,6 @@
 
     <properties>
         <maven.javadoc.skip>true</maven.javadoc.skip>
-        <checkstyle.skip>true</checkstyle.skip>
     </properties>
 
     <dependencies>
index 046d8e2..95e64c4 100644 (file)
@@ -26,7 +26,7 @@
     <parent>
         <groupId>org.onap.ccsdk.parent</groupId>
         <artifactId>odlparent</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
         <relativePath/>
     </parent>
 
@@ -45,7 +45,6 @@
 
     <properties>
         <maven.javadoc.skip>true</maven.javadoc.skip>
-        <checkstyle.skip>true</checkstyle.skip>
     </properties>
 
     <dependencies>
index 66c8613..3668cf0 100644 (file)
@@ -127,31 +127,37 @@ module.exports = (env) => {
       },
       proxy: {
         "/oauth2/": {
-          target: "http://10.20.6.29:48181",
+          target: "http://localhost:8181",
           secure: false
         },
         "/database/": {
-          target: "http://10.20.6.29:48181",
+          target: "http://localhost:8181",
           secure: false
         },
         "/restconf/": {
-          target: "http://10.20.6.29:48181",
+          target: "http://localhost:8181",
           secure: false
         },
         "/rests/": {
-          target: "http://10.20.6.29:48181",
+          target: "http://localhost:8181",
           secure: false
         },
         "/help/": {
-          target: "http://10.20.6.29:48181",
+          target: "http://localhost:8181",
           secure: false
         },
         "/tree/": {
-          target: "http://10.20.6.29:48181",
+          target: "http://localhost:8181",
           secure: false
         },
         "/websocket": {
-          target: "http://10.20.6.29:48181",
+          target: "http://localhost:8181",
+          ws: true,
+          changeOrigin: true,
+          secure: false
+        },
+        "/yang-schema": {
+          target: "http://localhost:8181",
           ws: true,
           changeOrigin: true,
           secure: false
index 1cde7f3..0c7d823 100644 (file)
@@ -26,7 +26,7 @@
     <parent>
         <groupId>org.onap.ccsdk.parent</groupId>
         <artifactId>odlparent</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
         <relativePath/>
     </parent>
 
@@ -45,7 +45,6 @@
 
     <properties>
         <maven.javadoc.skip>true</maven.javadoc.skip>
-        <checkstyle.skip>true</checkstyle.skip>
     </properties>
 
     <dependencies>
diff --git a/sdnr/wt/odlux/apps/linkCalculationApp/src/components/denseTable.tsx b/sdnr/wt/odlux/apps/linkCalculationApp/src/components/denseTable.tsx
deleted file mode 100644 (file)
index 96d6f4e..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-/**
- * ============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 Table from '@material-ui/core/Table';
-import TableBody from '@material-ui/core/TableBody';
-import TableCell from '@material-ui/core/TableCell';
-import TableContainer from '@material-ui/core/TableContainer';
-import TableHead from '@material-ui/core/TableHead';
-import TableRow from '@material-ui/core/TableRow';
-import Paper from '@material-ui/core/Paper';
-import { makeStyles, Button, Tooltip } from '@material-ui/core';
-
-type props = { headers: string[], width: number, height:number,  navigate?(applicationName: string, path?: string):void, onLinkClick?(id: string): void, data: any[], hover: boolean, onClick?(id: string): void, actions?:boolean  };
-
-
-const styles = makeStyles({
-    container: {
-        overflow:"auto"
-    },
-    button: {
-        margin: 0,
-        padding: "6px 6px",
-        minWidth: 'unset'
-      }
-    
-  });
-  
-
-const DenseTable: React.FunctionComponent<props> = (props) => {
-
-    const classes = styles();
-
-    const handleClick = (event: any, id: string) =>{
-        event.preventDefault();
-        props.onClick !== undefined && props.onClick(id);
-
-    }
-
-    const handleHover = (event: any, id: string) =>{
-        event.preventDefault();
-
-    }
-
-    return (
-        <Paper style={{borderRadius:"0px", width:props.width, height:props.height}} className={classes.container}>
-       
-            <Table stickyHeader size="small" aria-label="a dense table" >
-                <TableHead>
-                    <TableRow>
-                        {
-                            props.headers.map((data) => {
-                                return <TableCell>{data}</TableCell>
-                            })
-                        }
-                    </TableRow>
-                </TableHead>
-                <TableBody>
-                    {props.data.map((row, index) => {
-
-                        
-                        var filteredRows = Object.keys(row).filter(function(e) { if(e!=="simulatorId") return row });
-                     
-                        //var filteredRows = Object.keys(row).filter(function(e) { if(e!=="simulatorId") return row[e] });
-                        var values = Object.keys(row).map(function(e) {  if(e!=="simulatorId"){ return row[e];} else return undefined });
-                       
-
-                        return (
-                            <TableRow key={index} hover={props.hover} onMouseOver={e => handleHover(e,row.name)} onClick={ e =>  handleClick(e, row.name)}>
-
-                                {
-                                    values.map((data:any) => {
-                                       
-                                        if(data!== undefined)
-                                        return <TableCell >  {data} </TableCell>
-                                        else
-                                        return null;
-                                    })
-                                }
-                                {
-
-                                    props.actions && <TableCell >  
-<div style={{display:"flex"}}>                                           
-    <Tooltip title="Configure">
-    <Button className={classes.button} disabled={row.status!=="connected"} onClick={(e: any) =>{ e.preventDefault(); e.stopPropagation(); props.navigate && props.navigate("configuration", row.simulatorId ? row.simulatorId : row.name)}}>C</Button>
-    </Tooltip>
-    <Tooltip title="Fault">
-    <Button className={classes.button} onClick={(e: any) =>{ e.preventDefault(); e.stopPropagation(); props.navigate && props.navigate("fault", row.simulatorId ? row.simulatorId : row.name)}}>F</Button>
-    </Tooltip>
-    </div> 
-    </TableCell>
-    
-                                }
-                            </TableRow>)
-                    })
-                    }
-
-                </TableBody>
-            </Table>
-       
-        </Paper>
-    );
-
-}
-
-export default DenseTable;
\ No newline at end of file
index 878170f..2058c95 100644 (file)
@@ -26,7 +26,7 @@
     <parent>
         <groupId>org.onap.ccsdk.parent</groupId>
         <artifactId>odlparent</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
         <relativePath/>
     </parent>
 
@@ -45,7 +45,6 @@
 
     <properties>
         <maven.javadoc.skip>true</maven.javadoc.skip>
-        <checkstyle.skip>true</checkstyle.skip>
     </properties>
 
     <dependencies>
index 6ec52a4..495b855 100644 (file)
@@ -26,7 +26,7 @@
     <parent>
         <groupId>org.onap.ccsdk.parent</groupId>
         <artifactId>odlparent</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
         <relativePath/>
     </parent>
 
@@ -45,7 +45,6 @@
 
     <properties>
         <maven.javadoc.skip>true</maven.javadoc.skip>
-        <checkstyle.skip>true</checkstyle.skip>
     </properties>
 
     <dependencies>
index e3a757f..0c4d83c 100644 (file)
@@ -26,7 +26,7 @@
     <parent>
         <groupId>org.onap.ccsdk.parent</groupId>
         <artifactId>odlparent</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
         <relativePath/>
     </parent>
 
@@ -45,7 +45,6 @@
 
     <properties>
         <maven.javadoc.skip>true</maven.javadoc.skip>
-        <checkstyle.skip>true</checkstyle.skip>
     </properties>
 
     <dependencies>
index b1150c3..7119f1b 100644 (file)
@@ -1,5 +1,5 @@
 {
-  "name": "@odlux/networkmap-app",
+  "name": "@odlux/transport-app",
   "version": "0.1.0",
   "description": "A react based modular UI to display event log from a database.",
   "main": "index.js",
index 4738c29..1b1b83a 100644 (file)
@@ -26,7 +26,7 @@
     <parent>
         <groupId>org.onap.ccsdk.parent</groupId>
         <artifactId>odlparent</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
         <relativePath/>
     </parent>
 
@@ -45,7 +45,6 @@
 
     <properties>
         <maven.javadoc.skip>true</maven.javadoc.skip>
-        <checkstyle.skip>true</checkstyle.skip>
     </properties>
 
     <dependencies>
index 889480d..8fcdc4c 100644 (file)
@@ -42,7 +42,7 @@ export const verifyResponse = (response: Response) =>{
     }
 }
 
-export const setTopologyReachableAction = (error: Error) => (dispatcher: Dispatch, getState: () => IApplicationStoreState)=>{
+export const handleConnectionError = (error: Error) => (dispatcher: Dispatch, getState: () => IApplicationStoreState)=>{
     const {network:{connectivity: {isToplogyServerAvailable}}} = getState();
     if(isToplogyServerAvailable){
        dispatcher(new IsTopologyServerReachableAction(false))
index 72fe79e..7e378b8 100644 (file)
@@ -26,85 +26,101 @@ import TableRow from '@material-ui/core/TableRow';
 import Paper from '@material-ui/core/Paper';
 import { makeStyles, Button, Tooltip } from '@material-ui/core';
 
-type props = { headers: string[], height:number,  navigate?(applicationName: string, path?: string):void, onLinkClick?(id: string): void, data: any[], hover: boolean, ariaLabel: string, onClick?(id: string): void, actions?:boolean  };
+type props = { headers: string[], height: number, navigate?(applicationName: string, path?: string): void, onLinkClick?(id: string): void, data: any[], hover: boolean, ariaLabelRow: string, ariaLabelColumn: string[], verticalTable?: boolean, onClick?(id: string): void, actions?: boolean };
 
 
 const styles = makeStyles({
     container: {
-        overflow:"auto"
+        overflow: "auto"
     },
     button: {
         margin: 0,
         padding: "6px 6px",
         minWidth: 'unset'
-      }
-    
-  });
-  
+    }
+
+});
+
 
 const DenseTable: React.FunctionComponent<props> = (props) => {
 
     const classes = styles();
 
-    const handleClick = (event: any, id: string) =>{
+    const handleClick = (event: any, id: string) => {
         event.preventDefault();
         props.onClick !== undefined && props.onClick(id);
 
     }
 
-    const handleHover = (event: any, id: string) =>{
+    const handleHover = (event: any, id: string) => {
         event.preventDefault();
 
     }
 
     return (
-        <Paper style={{borderRadius:"0px"}}>
-       <div style={{ height:props.height, overflow:"auto"}}>
-            <Table stickyHeader size="small" aria-label="a dense table" >
-                <TableHead>
-                    <TableRow>
-                        {
-                            props.headers.map((data) => {
-                                return <TableCell>{data}</TableCell>
-                            })
+        <Paper style={{ borderRadius: "0px" }}>
+            <div style={{ height: props.height, overflow: "auto" }}>
+                <Table stickyHeader size="small" aria-label="a dense table" >
+                    <TableHead>
+                        <TableRow>
+                            {
+                                props.headers.map((data) => {
+                                    return <TableCell>{data}</TableCell>
+                                })
+                            }
+                        </TableRow>
+                    </TableHead>
+                    <TableBody>
+                        {props.data.map((row, index) => {
+                            var values = Object.keys(row).map(function (e) { return row[e]; });
+                            return (
+                                <TableRow aria-label={props.ariaLabelRow} key={index} hover={props.hover} onMouseOver={e => handleHover(e, row.name)} onClick={e => handleClick(e, row.name)}>
+
+                                    {
+                                        values.map((data: any, i) => {
+                                            if (data !== undefined) {
+
+                                                if (!props.verticalTable) {
+                                                    const ariaLabel = props.ariaLabelColumn[i];
+                                                    if (ariaLabel.length > 0) {
+                                                        return <TableCell aria-label={ariaLabel}>{data}</TableCell>
+                                                    } else {
+                                                        return <TableCell>{data}</TableCell>
+                                                    }
+                                                }
+                                                else {
+                                                    // skip adding aria label to 'header' column
+                                                    if (i === 0) {
+                                                        return <TableCell>{data}</TableCell>
+                                                    } else {
+                                                        const ariaLabel = props.ariaLabelColumn[index];
+                                                        return <TableCell aria-label={ariaLabel}>{data}</TableCell>
+                                                    }
+                                                }
+                                            }
+                                            else
+                                                return null;
+                                        })
+                                    }
+                                    {
+
+                                        props.actions && <TableCell >
+                                            <div style={{ display: "flex" }}>
+                                                <Tooltip title="Configure">
+                                                    <Button className={classes.button} disabled={row.status !== "connected"} onClick={(e: any) => { e.preventDefault(); e.stopPropagation(); props.navigate && props.navigate("configuration", row.simulatorId ? row.simulatorId : row.name) }}>C</Button>
+                                                </Tooltip>
+                                                <Tooltip title="Fault">
+                                                    <Button className={classes.button} disabled={row.status !== "connected"} onClick={(e: any) => { e.preventDefault(); e.stopPropagation(); props.navigate && props.navigate("fault", row.simulatorId ? row.simulatorId : row.name) }}>F</Button>
+                                                </Tooltip>
+                                            </div>
+                                        </TableCell>
+                                    }
+                                </TableRow>)
+                        })
                         }
-                    </TableRow>
-                </TableHead>
-                <TableBody>
-                    {props.data.map((row, index) => {  
-                        var values = Object.keys(row).map(function(e) { return row[e] });
-                        return (
-                            <TableRow aria-label={props.ariaLabel} key={index} hover={props.hover} onMouseOver={e => handleHover(e,row.name)} onClick={ e =>  handleClick(e, row.name)}>
-
-                                {
-                                    values.map((data:any) => {
-                                       
-                                        if(data!== undefined)
-                                        return <TableCell>  {data} </TableCell>
-                                        else
-                                        return null;
-                                    })
-                                }
-                                {
-
-                                    props.actions && <TableCell >  
-<div style={{display:"flex"}}>
-    <Tooltip title="Configure">
-    <Button className={classes.button} disabled={row.status!=="connected"} onClick={(e: any) =>{ e.preventDefault(); e.stopPropagation(); props.navigate && props.navigate("configuration", row.name)}}>C</Button>
-    </Tooltip>
-    <Tooltip title="Fault">
-    <Button className={classes.button} disabled={row.status!=="connected"} onClick={(e: any) =>{ e.preventDefault(); e.stopPropagation(); props.navigate && props.navigate("fault", row.name)}}>F</Button>
-    </Tooltip>
-    </div> 
-    </TableCell>
-    
-                                }
-                            </TableRow>)
-                    })
-                    }
-
-                </TableBody>
-            </Table>
+
+                    </TableBody>
+                </Table>
             </div>
         </Paper>
     );
index a8f73f3..81f9bba 100644 (file)
@@ -90,7 +90,7 @@ const LinkDetails: React.FunctionComponent<props> = (props) => {
         <AppBar position="static" id="site-tabs" style={{ marginTop: "20px", background: '#2E3B55' }}>
             <Typography aria-label="details-of-link-sites" style={{ margin:"5px"}}>SITE DETAILS</Typography>
         </AppBar>
-        <DenseTable ariaLabel="site-information-table-entry" height={height} hover={false} headers={["", "Site A", "Site B"]} data={data} />
+        <DenseTable ariaLabelRow="site-information-table-entry" ariaLabelColumn={["site-name", "latitude", "longitude", "azimuth"]} verticalTable height={height} hover={false} headers={["", "Site A", "Site B"]} data={data} />
         {
             props.link.type==="microwave" && <Button style={{marginTop:20}} fullWidth variant="contained" color="primary" onClick={onCalculateLinkClick}>Calculate link</Button>
         }
index 6131661..5e617be 100644 (file)
@@ -119,7 +119,7 @@ const SiteDetails: React.FunctionComponent<props> = (props) => {
                
                 {
                     props.site.links.length > 0 &&
-                    <DenseTable ariaLabel="available-links-table-entry" height={height} hover={true} headers={["Link Name", "Azimuth in Â°"]}  data={linkRows} onClick={props.onLinkClick}  ></DenseTable>
+                    <DenseTable ariaLabelRow="available-links-table" ariaLabelColumn={["link-name", "azimuth"]} height={height} hover={true} headers={["Link Name", "Azimuth in Â°"]}  data={linkRows} onClick={props.onLinkClick}  ></DenseTable>
                /**
                 * 
                 * */
@@ -140,7 +140,7 @@ const SiteDetails: React.FunctionComponent<props> = (props) => {
 
                 {
                     props.site.devices.length>0 && props.updatedDevices !== null &&
-                    <DenseTable ariaLabel="available-nodes-table-entry" navigate={props.navigate} height={height} hover={false} headers={["ID","Name","Type", "Manufacturer","Owner","Status", "Ports", "Actions"]} actions={true} data={props.updatedDevices!} />
+                    <DenseTable ariaLabelRow="available-nodes-table" ariaLabelColumn={["id","name","type", "manufacturer","owner","status", "ports", "actions"]} navigate={props.navigate} height={height} hover={false} headers={["ID","Name","Type", "Manufacturer","Owner","Status", "Ports", "Actions"]} actions={true} data={props.updatedDevices!} />
                 }
             </>
         }
index b6e1d9c..e2935f6 100644 (file)
@@ -33,9 +33,13 @@ import { addDistance, getUniqueFeatures, increaseBoundingBox } from '../utils/ma
 import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore';
 import connect, { IDispatcher, Connect } from '../../../../framework/src/flux/connect';
 import SearchBar from './searchBar';
-import { verifyResponse, setTopologyReachableAction, setTileServerReachableAction } from '../actions/connectivityAction';
+import { verifyResponse, IsTileServerReachableAction, handleConnectionError, setTileServerReachableAction } from '../actions/connectivityAction';
 import ConnectionInfo from './connectionInfo'
 import { showIconLayers, addBaseLayers, addBaseSources, addIconLayers } from '../utils/mapLayers';
+import lamp from '../../icons/lamp.png';
+import apartment from '../../icons/apartment.png';
+import datacenter from '../../icons/datacenter.png';
+import factory from '../../icons/factory.png';
 import Statistics from './statistics';
 import IconSwitch from './iconSwitch';
 import { addImages } from '../services/mapImagesService';
@@ -112,6 +116,9 @@ class Map extends React.Component<mapProps, { isPopupOpen: boolean }> {
         map.on('load', (ev) => {
 
             map.setMaxZoom(18);
+            const bbox = map.getBounds();
+            this.props.updateMapPosition(bbox.getCenter().lat, bbox.getCenter().lng, map.getZoom())
+
             addBaseSources(map, this.props.selectedSite, this.props.selectedLink);
                 
             addImages(map, (result: boolean)=>{
@@ -123,10 +130,9 @@ class Map extends React.Component<mapProps, { isPopupOpen: boolean }> {
                 }
             });
 
-            const boundingBox = map.getBounds();
-
+            const boundingBox = increaseBoundingBox(map);
 
-            fetch(`${URL_API}/links/geoJson/${boundingBox.getWest()},${boundingBox.getSouth()},${boundingBox.getEast()},${boundingBox.getNorth()}`)
+            fetch(`${URL_API}/links/geoJson/${boundingBox.west},${boundingBox.south},${boundingBox.east},${boundingBox.north}`)
                 .then(result => verifyResponse(result))
                 .then(result => result.json())
                 .then(features => {
@@ -137,7 +143,7 @@ class Map extends React.Component<mapProps, { isPopupOpen: boolean }> {
                 .catch(error => this.props.handleConnectionError(error));
 
 
-                fetch(`${URL_API}/sites/geoJson/${boundingBox.getWest()},${boundingBox.getSouth()},${boundingBox.getEast()},${boundingBox.getNorth()}`)
+            fetch(`${URL_API}/sites/geoJson/${boundingBox.west},${boundingBox.south},${boundingBox.east},${boundingBox.north}`)
                 .then(result => verifyResponse(result))
                 .then(result => result.json())
                 .then(features => {
@@ -380,6 +386,7 @@ class Map extends React.Component<mapProps, { isPopupOpen: boolean }> {
 
     componentWillUnmount(){
         window.removeEventListener("menu-resized", this.handleResize);
+        lastBoundingBox=null;
     }
 
     handleResize = () => {
@@ -582,7 +589,7 @@ const mapDispatchToProps = (dispatcher: IDispatcher) => ({
     updateMapPosition: (lat: number, lon: number, zoom: number) => dispatcher.dispatch(new SetCoordinatesAction(lat, lon, zoom)),
     setStatistics: (linkCount: string, siteCount: string) => dispatcher.dispatch(new SetStatistics(siteCount, linkCount)),
     setTileServerLoaded: (reachable: boolean) => dispatcher.dispatch(setTileServerReachableAction(reachable)),
-    handleConnectionError: (error: Error) => dispatcher.dispatch(setTopologyReachableAction(error))
+    handleConnectionError: (error: Error) => dispatcher.dispatch(handleConnectionError(error))
 })
 
 export default withRouter(connect(mapStateToProps, mapDispatchToProps)(Map));
\ No newline at end of file
index cdc77b2..0400247 100644 (file)
@@ -25,7 +25,7 @@ import { URL_API } from '../config';
 import { HighlightLinkAction, HighlightSiteAction } from '../actions/mapActions';
 import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore';
 import connect, { IDispatcher, Connect } from '../../../../framework/src/flux/connect';
-import { verifyResponse, setTopologyReachableAction } from '../actions/connectivityAction';
+import { verifyResponse, handleConnectionError } from '../actions/connectivityAction';
 
 
 
@@ -86,7 +86,7 @@ const mapDispatchToProps = (dispatcher: IDispatcher) => ({
     clearDetailsHistory:()=> dispatcher.dispatch(new ClearHistoryAction()),
     highlightLink: (link: link) => dispatcher.dispatch(new HighlightLinkAction(link)),
     highlightSite: (site: site) => dispatcher.dispatch(new HighlightSiteAction(site)),
-    handleConnectionError: (error:Error) => dispatcher.dispatch(setTopologyReachableAction(error)),
+    handleConnectionError: (error:Error) => dispatcher.dispatch(handleConnectionError(error)),
     clearDetails: () => dispatcher.dispatch(new ClearDetailsAction()),
 
 });
index 6f62773..5c1c6d2 100644 (file)
@@ -39,8 +39,8 @@ const initialState: mapState ={
     selectedSite: null,
     zoomToElement: null,
     alarmlement: null,
-    lat: 52,
-    lon: 13,
+    lat: 52.5095,
+    lon: 13.3290,
     zoom: 10,
     statistics:{links:"Not counted yet.", sites: "Not counted yet."},
     allowIconSwitch: true
index 67c75ce..3ce435f 100644 (file)
@@ -71,15 +71,14 @@ subscribe<ObjectNotification & IFormatedMessage>(["ObjectCreationNotification",
  //store && store.dispatch(UpdateDetailsView(msg.nodeName))
 
 }));
-
+*/
 
 subscribe<FaultAlarmNotification & IFormatedMessage>("ProblemNotification", (fault => {
   const store = applicationApi && applicationApi.applicationStore;
   if (fault && store) {
-    // store.dispatch(findSiteToAlarm(fault.nodeName));
+     store.dispatch(findSiteToAlarm(fault.nodeName));
 
   
   }
 }));
 
-*/
\ No newline at end of file
index c414b15..30714b8 100644 (file)
@@ -21,11 +21,23 @@ import apartment from '../../icons/apartment.png';
 import datacenter from '../../icons/datacenter.png';
 import factory from '../../icons/factory.png';
 import lamp from '../../icons/lamp.png';
+import datacenterred from '../../icons/datacenterred.png';
+import factoryred from '../../icons/factoryred.png';
+import lampred from '../../icons/lampred.png';
+
 
 type ImagesLoaded = (allImagesLoaded: boolean) => void;
 type MapImages = {name: string, url: string}
 
-export const Images : MapImages[]  = [{name: 'data-center', url: datacenter}, {name: 'house', url: apartment}, {name: 'factory', url: factory},{name: 'lamp', url: lamp}] ;
+export const Images : MapImages[]  = [
+    {name: 'data-center', url: datacenter}, 
+    {name: 'house', url: apartment}, 
+    {name: 'factory', url: factory},
+    {name: 'lamp', url: lamp},
+    {name: 'data-center-red', url: datacenterred}, 
+    {name: 'factory-red', url: factoryred},
+    {name: 'lamp-red', url: lampred},
+] ;
 
 export const addImages = (map: mapboxgl.Map, callback?: ImagesLoaded) =>{
 
index b54212e..1d4aa89 100644 (file)
@@ -168,6 +168,57 @@ const createIconLayers =(map: mapboxgl.Map, selectedSiteId?: string) =>{
             }
         });
 
+        //select layers
+
+        map.addLayer({
+            'id': 'select-point-lamps',
+            'type': 'symbol',
+            'source': 'selectedPoints',
+            'layout': {
+                'icon-allow-overlap': true,
+                'icon-image': 'lamp',
+                'icon-size': 0.15
+    
+            },
+            'filter': ['==', 'type', 'street lamp'],
+        });
+    
+        map.addLayer({
+            'id': 'select-point-buildings',
+            'type': 'symbol',
+            'source': 'selectedPoints',
+            'filter': ['==', 'type', 'high rise building'],
+            'layout': {
+                'icon-allow-overlap': true,
+                'icon-image': 'house',
+                'icon-size': 0.15
+            }
+        });
+    
+        map.addLayer({
+            'id': 'select-point-data-center',
+            'type': 'symbol',
+            'source': 'selectedPoints',
+            'filter': ['==', 'type', 'data center'],
+            'layout': {
+                'icon-allow-overlap': true,
+                'icon-image': 'data-center',
+                'icon-size': 0.15
+            }
+        });
+    
+        map.addLayer({
+            'id': 'select-point-factory',
+            'type': 'symbol',
+            'source': 'selectedPoints',
+            'filter': ['==', 'type', 'factory'],
+            'layout': {
+                'icon-allow-overlap': true,
+                'icon-image': 'factory',
+                'icon-size': 0.3
+            }
+        });
+
         //alarm layers
 
         map.addLayer({
@@ -177,7 +228,7 @@ const createIconLayers =(map: mapboxgl.Map, selectedSiteId?: string) =>{
             'layout': {
                 'icon-allow-overlap': true,
                 'icon-image': 'lamp-red',
-                'icon-size': 0.1
+                'icon-size': 0.15
 
             },
             'filter': createFilter("street lamp"),
@@ -191,7 +242,7 @@ const createIconLayers =(map: mapboxgl.Map, selectedSiteId?: string) =>{
             'layout': {
                 'icon-allow-overlap': true,
                 'icon-image': 'house-red',
-                'icon-size': 0.1
+                'icon-size': 0.15
             }
         });
 
@@ -202,8 +253,8 @@ const createIconLayers =(map: mapboxgl.Map, selectedSiteId?: string) =>{
             'filter': createFilter("data center"),
             'layout': {
                 'icon-allow-overlap': true,
-                'icon-image': 'data-center_red',
-                'icon-size': 0.1
+                'icon-image': 'data-center-red',
+                'icon-size': 0.15
             } });
 
             map.addLayer({
@@ -214,12 +265,10 @@ const createIconLayers =(map: mapboxgl.Map, selectedSiteId?: string) =>{
                 'layout': {
                     'icon-allow-overlap': true,
                     'icon-image': 'factory-red',
-                    'icon-size': 0.2
+                    'icon-size': 0.3
                 }
             });
 
-
-
     map.addLayer({
         id: 'point-remaining',
         source: 'points',
@@ -232,56 +281,6 @@ const createIconLayers =(map: mapboxgl.Map, selectedSiteId?: string) =>{
             'circle-stroke-color': '#fff'
         }
     });
-
-    map.addLayer({
-        'id': 'select-point-lamps',
-        'type': 'symbol',
-        'source': 'selectedPoints',
-        'layout': {
-            'icon-allow-overlap': true,
-            'icon-image': 'lamp',
-            'icon-size': 0.15
-
-        },
-        'filter': ['==', 'type', 'street lamp'],
-    });
-
-    map.addLayer({
-        'id': 'select-point-buildings',
-        'type': 'symbol',
-        'source': 'selectedPoints',
-        'filter': ['==', 'type', 'high rise building'],
-        'layout': {
-            'icon-allow-overlap': true,
-            'icon-image': 'house',
-            'icon-size': 0.15
-        }
-    });
-
-    map.addLayer({
-        'id': 'select-point-data-center',
-        'type': 'symbol',
-        'source': 'selectedPoints',
-        'filter': ['==', 'type', 'data center'],
-        'layout': {
-            'icon-allow-overlap': true,
-            'icon-image': 'data-center',
-            'icon-size': 0.15
-        }
-    });
-
-
-    map.addLayer({
-        'id': 'select-point-factory',
-        'type': 'symbol',
-        'source': 'selectedPoints',
-        'filter': ['==', 'type', 'factory'],
-        'layout': {
-            'icon-allow-overlap': true,
-            'icon-image': 'factory',
-            'icon-size': 0.3
-        }
-    });
 }
 
  const addCommonLayers = (map: mapboxgl.Map) =>{
index 5fc67e3..7e51f69 100644 (file)
@@ -160,6 +160,10 @@ module.exports = (env) => {
           target: "http://localhost:3001",
           secure: false
         },
+        "/tiles/": {
+          target: "http://www.openstreetmap.org",
+          secure: false
+        },
         "/help/": {
           target: "http://10.20.6.29:8181",
           secure: false
index e7765af..ef9cc46 100644 (file)
@@ -26,7 +26,7 @@
     <parent>
         <groupId>org.onap.ccsdk.parent</groupId>
         <artifactId>odlparent</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
         <relativePath/>
     </parent>
 
@@ -45,7 +45,6 @@
 
     <properties>
         <maven.javadoc.skip>true</maven.javadoc.skip>
-        <checkstyle.skip>true</checkstyle.skip>
     </properties>
 
     <dependencies>
index a12b4ef..2d8c642 100644 (file)
@@ -29,7 +29,7 @@
     <parent>
         <groupId>org.onap.ccsdk.parent</groupId>
         <artifactId>single-feature-parent</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
         <relativePath/>
     </parent>
 
     </licenses>
 
     <dependencies>
+
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>sdnr-wt-odlux-core-provider</artifactId>
             <version>${project.version}</version>
         </dependency>
+
     </dependencies>
 </project>
index 5fa607a..65f71c2 100755 (executable)
@@ -26,7 +26,7 @@
     <parent>
         <groupId>org.onap.ccsdk.parent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
         <relativePath/>
     </parent>
 
index 55fd24f..a7477c1 100644 (file)
@@ -26,7 +26,7 @@
     <parent>
         <groupId>org.onap.ccsdk.parent</groupId>
         <artifactId>binding-parent</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
         <relativePath/>
     </parent>
 
@@ -45,7 +45,6 @@
 
     <properties>
         <maven.javadoc.skip>true</maven.javadoc.skip>
-        <checkstyle.skip>true</checkstyle.skip>
     </properties>
 
     <dependencies>
@@ -61,6 +60,7 @@
             <groupId>org.slf4j</groupId>
             <artifactId>slf4j-api</artifactId>
         </dependency>
+
     </dependencies>
 
     <build>
index b9eb5ca..7974dab 100644 (file)
@@ -26,7 +26,7 @@
     <parent>
         <groupId>org.onap.ccsdk.parent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
         <relativePath/>
     </parent>
 
index 1726303..19923bb 100644 (file)
@@ -26,7 +26,7 @@
     <parent>
         <groupId>org.onap.ccsdk.parent</groupId>
         <artifactId>binding-parent</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
         <relativePath/>
     </parent>
 
 
     <properties>
         <maven.javadoc.skip>true</maven.javadoc.skip>
-        <checkstyle.skip>true</checkstyle.skip>
     </properties>
 
     <dependencies>
+        <dependency>
+            <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
+            <artifactId>sdnr-wt-common</artifactId>
+            <version>${project.version}</version>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
             <artifactId>sdnr-wt-odlux-core-model</artifactId>
 
     <build>
         <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <configuration>
-                    <source>1.8</source>
-                    <target>1.8</target>
-                </configuration>
-            </plugin>
             <plugin>
                 <artifactId>maven-checkstyle-plugin</artifactId>
                 <configuration>
index 6d537e3..a194304 100644 (file)
  */
 package org.onap.ccsdk.features.sdnr.odlux.test;
 
-import static org.junit.Assert.*;
-import static org.mockito.Mockito.*;
+import static org.junit.Assert.fail;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
 import java.io.IOException;
-import java.io.StringWriter;
 import java.net.HttpURLConnection;
-import javax.servlet.ServletContext;
 import javax.servlet.ServletException;
-import javax.servlet.ServletOutputStream;
-import javax.servlet.WriteListener;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import org.junit.Test;
+import org.onap.ccsdk.features.sdnr.wt.common.test.ServletOutputStreamToStringWriter;
 import org.onap.ccsdk.features.sdnr.wt.odlux.OdluxBundleLoaderImpl;
 import org.onap.ccsdk.features.sdnr.wt.odlux.ResFilesServlet;
 import org.onap.ccsdk.features.sdnr.wt.odlux.model.bundles.OdluxBundle;
@@ -60,24 +59,7 @@ public class TestResFileServlet {
         HttpServletRequest req = mock(HttpServletRequest.class);
         HttpServletResponse resp = mock(HttpServletResponse.class);
         when(req.getRequestURI()).thenReturn(res);
-        StringWriter out = new StringWriter();
-        ServletOutputStream printOut = new ServletOutputStream() {
-
-            @Override
-            public void write(int arg0) throws IOException {
-                out.write(arg0);
-            }
-
-            @Override
-            public boolean isReady() {
-                return false;
-            }
-
-            @Override
-            public void setWriteListener(WriteListener writeListener) {
-
-            }
-        };
+        ServletOutputStreamToStringWriter printOut = new ServletOutputStreamToStringWriter();
         try {
             when(resp.getOutputStream()).thenReturn(printOut);
             servlet.doGet(req, resp);
index f1f73b1..daedd9d 100644 (file)
@@ -26,7 +26,7 @@
     <parent>
         <groupId>org.onap.ccsdk.parent</groupId>
         <artifactId>odlparent</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
         <relativePath/>
     </parent>
 
@@ -46,7 +46,7 @@
     <properties>
         <buildtime>${maven.build.timestamp}</buildtime>
         <distversion>ONAP Frankfurt (Neon, mdsal ${odl.mdsal.version})</distversion>
-        <buildno>86.51a94bd(20/11/17)</buildno>
+        <buildno>88.1c38886(20/12/04)</buildno>
         <odlux.version>ONAP SDN-R | ONF Wireless for ${distversion} - Build: ${buildtime} ${buildno} ${project.version}</odlux.version>
     </properties>
 
                             <token>##odlux.version##</token>
                             <value>${odlux.version}</value>
                         </replacement>
-                        <replacement>
+                         <replacement>
                             <token>##buildno##</token>
                             <value>${buildno}</value>
                         </replacement>
index 791f46d..6a24bfb 100644 (file)
@@ -57,6 +57,8 @@ declare module '@material-ui/core/styles/createMuiTheme' {
   }\r
 }\r
 \r
+export const transportPCEUrl = "transportPCEUrl";\r
+\r
 export const runApplication = () => {\r
   const applicationStore = applicationStoreCreator();\r
 \r
@@ -79,6 +81,7 @@ export const runApplication = () => {
   startHistoryListener(applicationStore);\r
   startForceLogoutService(applicationStore);\r
   startNotificationService(applicationStore);\r
+  addTransportPCEUrl();\r
 \r
   const App = (): JSX.Element => (\r
     <ApplicationStoreProvider applicationStore={applicationStore} >\r
@@ -91,3 +94,11 @@ export const runApplication = () => {
   ReactDOM.render(<App />, document.getElementById('app'));\r
 \r
 };\r
+\r
+const addTransportPCEUrl = () =>{\r
+  const url = window.localStorage.getItem(transportPCEUrl);\r
+  if(url === null){\r
+      window.localStorage.setItem(transportPCEUrl, "http://10.20.6.32:18082/");\r
+      console.log("set transport url :D")\r
+  }\r
+}\r
index 7720cb9..260aec4 100644 (file)
@@ -1,5 +1,4 @@
 {
-    "version":"86.51a94bd(20/11/17)",
-    "build":"2020-11-17T11:13:24Z"
-
+    "version":"88.1c38886(20/12/04)",
+    "build":"2020-12-04T06:06:24Z"
 }
\ No newline at end of file
index 96bcbf3..3b2f8e0 100644 (file)
@@ -29,6 +29,7 @@ import MenuItem from '@material-ui/core/MenuItem';
 import Menu from '@material-ui/core/Menu';
 import { lighten } from '@material-ui/core/styles/colorManipulator';
 import { SvgIconProps } from '@material-ui/core/SvgIcon/SvgIcon';
+import { Button } from '@material-ui/core';
 
 const styles = (theme: Theme) => createStyles({
   root: {
index 8c4b740..8828ac3 100644 (file)
@@ -36,11 +36,14 @@ export interface IListItemLinkProps extends WithStyles<typeof styles> {
   secondary?: React.ComponentType;\r
   to: string;\r
   exact?: boolean;\r
+  external?: boolean;\r
 }\r
 \r
 export const ListItemLink = withStyles(styles)((props: IListItemLinkProps) => {\r
-  const { icon, primary: Primary, secondary: Secondary, classes, to, exact = false } = props;\r
-  const renderLink = (itemProps: any): JSX.Element => (<NavLink exact={ exact } to={ to } activeClassName={ classes.active } { ...itemProps } />);\r
+  const { icon, primary: Primary, secondary: Secondary, classes, to, exact = false, external=false } = props;\r
+  const renderLink = (itemProps: any): JSX.Element => (\r
+    props.external ? <a target="_blank" href={to} { ...itemProps }></a> :\r
+  <NavLink exact={ exact } to={ to } activeClassName={ classes.active } { ...itemProps } />);\r
 \r
   const ariaLabel = typeof Primary === 'string' ? "link-to-"+Primary.toLowerCase().replace(/\s/g, "-") : "link-to-"+Primary.displayName?.toLowerCase();\r
   return (\r
index 790677a..437ba1b 100644 (file)
@@ -26,12 +26,14 @@ import List from '@material-ui/core/List';
 import Divider from '@material-ui/core/Divider';\r
 \r
 import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r
+import { faProjectDiagram } from '@fortawesome/free-solid-svg-icons';\r
 \r
 import ListItemLink from '../components/material-ui/listItemLink';\r
 \r
 import connect, { Connect } from '../flux/connect';\r
 import { MenuAction } from '../actions/menuAction';\r
 import * as classNames from 'classnames';\r
+import { transportPCEUrl } from '../app';\r
 \r
 \r
 const drawerWidth = 240;\r
@@ -125,6 +127,33 @@ export const NavigationMenu = withStyles(styles)(connect()(({ classes, state, di
     window.dispatchEvent(new Event('menu-resized'));\r
   }, [isOpen])\r
 \r
+  let menuItems = state.framework.applicationRegistraion && Object.keys(state.framework.applicationRegistraion).map(key => {\r
+    const reg = state.framework.applicationRegistraion[key];\r
+    return reg && (\r
+      <ListItemLink\r
+        key={reg.name}\r
+        to={reg.path || `/${reg.name}`}\r
+        primary={reg.menuEntry || reg.name}\r
+        secondary={reg.subMenuEntry}\r
+        icon={reg.icon && <FontAwesomeIcon icon={reg.icon} /> || null} />\r
+    ) || null;\r
+  }) || null;\r
+\r
+  const transportPCELink = <ListItemLink\r
+    key={"transportPCE"}\r
+    to={window.localStorage.getItem(transportPCEUrl)!}\r
+    primary={"TransportPCE"}\r
+    icon={<FontAwesomeIcon icon={faProjectDiagram}/>} \r
+    external/>;\r
+\r
+  const linkFound = menuItems.find(obj=>obj.key === "linkCalculation");\r
+  if(linkFound){\r
+    const index = menuItems.indexOf(linkFound);\r
+    menuItems.splice(index+1,0,transportPCELink);\r
+  }else{\r
+    menuItems.push(transportPCELink);\r
+  }\r
+\r
   return (\r
     <Drawer\r
       variant="permanent"\r
@@ -145,17 +174,7 @@ export const NavigationMenu = withStyles(styles)(connect()(({ classes, state, di
           <ListItemLink exact to="/" primary="Home" icon={<FontAwesomeIcon icon={faHome} />} />\r
           <Divider />\r
           {\r
-            state.framework.applicationRegistraion && Object.keys(state.framework.applicationRegistraion).map(key => {\r
-              const reg = state.framework.applicationRegistraion[key];\r
-              return reg && (\r
-                <ListItemLink\r
-                  key={reg.name}\r
-                  to={reg.path || `/${reg.name}`}\r
-                  primary={reg.menuEntry || reg.name}\r
-                  secondary={reg.subMenuEntry}\r
-                  icon={reg.icon && <FontAwesomeIcon icon={reg.icon} /> || null} />\r
-              ) || null;\r
-            }) || null\r
+          menuItems\r
           }\r
           <Divider />\r
           <ListItemLink to="/about" primary="About" icon={<FontAwesomeIcon icon={faAddressBook} />} />\r
index 4bcc05c..30091b5 100644 (file)
@@ -19,7 +19,7 @@ import * as X2JS from 'x2js';
 import { ApplicationStore } from '../store/applicationStore';
 import { SetWebsocketAction } from '../actions/websocketAction';
 
-const socketUrl = [location.protocol === 'https:' ? 'wss://' : 'ws://', 'admin', ':', 'admin', '@', location.hostname, ':', location.port, '/websocket'].join('');
+const socketUrl = [location.protocol === 'https:' ? 'wss://' : 'ws://', location.hostname, ':', location.port, '/websocket'].join('');
 const subscriptions: { [scope: string]: SubscriptionCallback[] } = {};
 let socketReady: Promise<WebSocket>;
 let userLoggedOut = false;
index 45b1bc6..99c067d 100644 (file)
   ~
   -->
 
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
         <groupId>org.onap.ccsdk.parent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
         <relativePath/>
     </parent>
 
                                     <type>jar</type>
                                     <overWrite>false</overWrite>
                                 </artifactItem>
-                                <!-- networkMapApp-->
+                                 <!-- networkMapApp-->
                                 <artifactItem>
                                     <groupId>${project.groupId}</groupId>
                                     <artifactId>sdnr-wt-odlux-app-networkMapApp</artifactId>
                                     <type>jar</type>
                                     <overWrite>false</overWrite>
                                 </artifactItem>
-                                <!-- linkCalculationApp-->
+                                 <!-- linkCalculationApp-->
                                 <artifactItem>
                                     <groupId>${project.groupId}</groupId>
                                     <artifactId>sdnr-wt-odlux-app-linkCalculationApp</artifactId>
index 1359ca8..7d38734 100644 (file)
@@ -26,7 +26,7 @@
     <parent>
         <groupId>org.onap.ccsdk.parent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
         <relativePath/>
     </parent>