aboutsummaryrefslogtreecommitdiffstats
path: root/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent
diff options
context:
space:
mode:
Diffstat (limited to 'sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent')
-rw-r--r--sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-bundle/pom.xml89
-rw-r--r--sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml19
-rw-r--r--sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/pom.xml14
-rwxr-xr-xsdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/src/main/resources/mwtnPerformanceCurrent/images/mwtnPerformance.pngbin0 -> 2974 bytes
-rw-r--r--sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/src/main/resources/mwtnPerformanceCurrent/mwtnPerformanceCurrent-custom.css13
-rw-r--r--sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/src/main/resources/mwtnPerformanceCurrent/mwtnPerformanceCurrent.controller.js741
-rw-r--r--sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/src/main/resources/mwtnPerformanceCurrent/mwtnPerformanceCurrent.module.js55
-rw-r--r--sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/src/main/resources/mwtnPerformanceCurrent/mwtnPerformanceCurrent.services.js30
-rw-r--r--sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/src/main/resources/mwtnPerformanceCurrent/mwtnPerformanceCurrent.tpl.html119
-rw-r--r--sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/pom.xml24
10 files changed, 1104 insertions, 0 deletions
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-bundle/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-bundle/pom.xml
new file mode 100644
index 00000000..0b03bf59
--- /dev/null
+++ b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-bundle/pom.xml
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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>
+ <artifactId>mwtnPerformanceCurrent</artifactId>
+ <groupId>com.highstreet.technologies.odl.dlux</groupId>
+ <version>0.5.1-SNAPSHOT</version>
+ </parent>
+ <artifactId>mwtnPerformanceCurrent-bundle</artifactId>
+ <name>${prefix} ${project.artifactId}</name>
+ <packaging>bundle</packaging>
+ <dependencies>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.core</artifactId>
+ <version>${osgi.core.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.compendium</artifactId>
+ <version>${osgi.core.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.osgi.compendium</artifactId>
+ <version>${apache.felix.compendium}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.opendaylight.dlux</groupId>
+ <artifactId>loader</artifactId>
+ <version>${dlux.loader.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>com.highstreet.technologies.odl.dlux</groupId>
+ <artifactId>mwtnPerformanceCurrent-module</artifactId>
+ <version>0.5.1-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
+ <build>
+ <resources>
+ <resource>
+ <directory>target/generated-resources</directory>
+ </resource>
+ <resource>
+ <directory>src/main/resources</directory>
+ </resource>
+ </resources>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <version>2.6</version>
+ <executions>
+ <!--loader Resources -->
+ <execution>
+ <id>unpack-loader-resources</id>
+ <goals>
+ <goal>unpack-dependencies</goal>
+ </goals>
+ <phase>generate-resources</phase>
+ <configuration>
+ <outputDirectory>${project.build.directory}/generated-resources</outputDirectory>
+ <groupId>com.highstreet.technologies.odl.dlux</groupId>
+ <includeArtifactIds>mwtnPerformanceCurrent-module</includeArtifactIds>
+ <excludes>META-INF\/**</excludes>
+ <excludeTransitive>true</excludeTransitive>
+ <ignorePermissions>false</ignorePermissions>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <extensions>true</extensions>
+ <configuration>
+ <instructions>
+ <Import-Package>org.osgi.service.http,
+ org.osgi.framework;version="1.0.0",
+ org.opendaylight.dlux.loader
+ </Import-Package>
+ <Export-Package></Export-Package>
+ </instructions>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml
new file mode 100644
index 00000000..4f73e930
--- /dev/null
+++ b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml
@@ -0,0 +1,19 @@
+<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
+ <reference id="httpService" availability="mandatory" activation="eager" interface="org.osgi.service.http.HttpService"/>
+ <reference id="loader" availability="mandatory" activation="eager" interface="org.opendaylight.dlux.loader.DluxModuleLoader"/>
+
+ <bean id="bundle" init-method="initialize" destroy-method="clean" class="org.opendaylight.dlux.loader.DluxModule">
+ <property name="httpService" ref="httpService"/>
+ <property name="loader" ref="loader"/>
+ <property name="moduleName" value="mwtnPerformanceCurrent"/>
+ <property name="url" value="/src/app/mwtnPerformanceCurrent"/>
+ <property name="directory" value="/mwtnPerformanceCurrent"/>
+ <property name="requireJs" value="app/mwtnPerformanceCurrent/mwtnPerformanceCurrent.module"/>
+ <property name="angularJs" value="app.mwtnPerformanceCurrent"/>
+ <property name="cssDependencies">
+ <list>
+ <value>src/app/mwtnPerformanceCurrent/mwtnPerformanceCurrent-custom.css</value>
+ </list>
+ </property>
+ </bean>
+</blueprint>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/pom.xml
new file mode 100644
index 00000000..2573f41a
--- /dev/null
+++ b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/pom.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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>
+ <artifactId>mwtnPerformanceCurrent</artifactId>
+ <groupId>com.highstreet.technologies.odl.dlux</groupId>
+ <version>0.5.1-SNAPSHOT</version>
+ </parent>
+ <artifactId>mwtnPerformanceCurrent-module</artifactId>
+ <name>${prefix} ${project.artifactId}</name>
+ <packaging>jar</packaging>
+</project> \ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/src/main/resources/mwtnPerformanceCurrent/images/mwtnPerformance.png b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/src/main/resources/mwtnPerformanceCurrent/images/mwtnPerformance.png
new file mode 100755
index 00000000..5517f5b1
--- /dev/null
+++ b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/src/main/resources/mwtnPerformanceCurrent/images/mwtnPerformance.png
Binary files differ
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/src/main/resources/mwtnPerformanceCurrent/mwtnPerformanceCurrent-custom.css b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/src/main/resources/mwtnPerformanceCurrent/mwtnPerformanceCurrent-custom.css
new file mode 100644
index 00000000..5e3cf838
--- /dev/null
+++ b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/src/main/resources/mwtnPerformanceCurrent/mwtnPerformanceCurrent-custom.css
@@ -0,0 +1,13 @@
+/**
+ * Add your application related css here
+ */
+
+.mwtnCurrentGrid{
+ height: 600px;
+ background-color: white;
+ color:black;
+}
+
+.mwtnCurrentGrid span{
+ color: #393939;
+} \ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/src/main/resources/mwtnPerformanceCurrent/mwtnPerformanceCurrent.controller.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/src/main/resources/mwtnPerformanceCurrent/mwtnPerformanceCurrent.controller.js
new file mode 100644
index 00000000..bffc77be
--- /dev/null
+++ b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/src/main/resources/mwtnPerformanceCurrent/mwtnPerformanceCurrent.controller.js
@@ -0,0 +1,741 @@
+/*
+ * @copyright 2017 highstreet technologies GmbH and others. All rights reserved.
+ *
+ * @license
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+define(['app/mwtnPerformanceCurrent/mwtnPerformanceCurrent.module',
+ 'app/mwtnPerformanceCurrent/mwtnPerformanceCurrent.services'],
+ function (mwtnPerformanceCurrentApp) {
+
+ mwtnPerformanceCurrentApp.register.controller('mwtnPerformanceCurrentCtrl', ['$scope', '$rootScope', '$window', '$translate', '$mwtnLog', '$mwtnPerformanceCurrent', 'uiGridConstants', 'OnfNetworkElement',
+ function ($scope, $rootScope, $window, $translate, $mwtnLog, $mwtnPerformanceCurrent, uiGridConstants, OnfNetworkElement) {
+
+ var COMPONENT = 'mwtnPerformanceCurrent';
+ $mwtnLog.info({ component: COMPONENT, message: 'mwtnPerformanceCurrent started!' });
+
+ $rootScope.section_logo = 'src/app/mwtnPerformanceCurrent/images/mwtnPerformance.png'; // Add your topbar logo location here such as 'assets/images/logo_topology.gif'
+
+ var radioSignalMap = new Map(); //holds uuid/singalid
+
+ var initPac = {
+ layerProtocol: 'unknown'
+ };
+
+ $scope.layerProtocol = 'MWPS';
+ $scope.layerProtocols = ['MWPS', 'ETC'];
+
+ var updateNe = function (data) {
+ if (!data) return;
+
+ // update onfNetworkElement
+ switch (data.revision) {
+ case '2016-03-23':
+ $mwtnLog.info({ component: COMPONENT, message: 'Revision ' + data.revision + 'not supported!' });
+ break;
+ default: //4. PoC
+ $scope.onfNetworkElement = JSON.parse(JSON.stringify(data['network-element']));
+ $scope.onfLtps = data['network-element'].ltp;
+ $scope.onfNetworkElement.ltpRefList = undefined;
+ }
+
+ // update onfLTPs
+ var order = $mwtnPerformanceCurrent.layerProtocolNameOrder;
+ $scope.onfLtps.sort(function (a, b) {
+ if (order[a.lp[0]['layer-protocol-name']] < order[b.lp[0]['layer-protocol-name']]) return -1;
+ if (order[a.lp[0]['layer-protocol-name']] > order[b.lp[0]['layer-protocol-name']]) return 1;
+ if (a.lp[0].uuid < b.lp[0].uuid) return -1;
+ if (a.lp[0].uuid > b.lp[0].uuid) return 1;
+ return 0;
+ });
+
+ // calculate conditional packages
+ $scope.airinterfaces = [];
+ $scope.ethernets = [];
+ $scope.tdms = [];
+ $scope.onfLtps.map(function (ltp) {
+ var lpId = ltp.lp[0].uuid;
+
+
+
+ switch (ltp.lp[0]['layer-protocol-name']) {
+ case "MWPS":
+ var init = JSON.parse(JSON.stringify(initPac));
+ init.layerProtocol = lpId;
+ $scope.airinterfaces.push(init);
+
+ break;
+ case "ETH-CTP":
+ case "ETC":
+ var init = JSON.parse(JSON.stringify(initPac));
+ init.layerProtocol = lpId;
+ $scope.ethernets.push(init);
+ break;
+
+ default:
+ $mwtnLog.info({ component: COMPONENT, message: 'The layerProtocol ' + ltp.lp[0]['layer-protocol-name'] + ' is not supported (yet)!' });
+ }
+ });
+
+ data.revision = undefined;
+ };
+
+ var updateAirInterface = function (data, key) {
+ // console.log(JSON.stringify(data), lpId);
+
+ if (Object.keys(data)[0].startsWith('air-interface-current-performance')) {
+
+ $scope.jsonvalue.push(data);
+ var label = new OnfNetworkElement($scope.onfNetworkElement).getLpById(data['layer-protocol']).getLabel() || data['layer-protocol'];
+ var radioSignal = radioSignalMap.get(data['layer-protocol'])
+ var list = data['air-interface-current-performance']['current-performance-data-list'] || data['air-interface-current-performance']['current-performance-data'];
+ list.map(function(item) {
+
+
+ var timestamp = $mwtnPerformanceCurrent.formatTimeStamp(item.timestamp);
+
+ switch (key) {
+
+ case 'performance826':
+ $scope.performance826.push({
+ timestamp: timestamp,
+ elapsedTime: checkData(item['elapsed-time']),
+ suspectInterval: item['suspect-interval-flag'],
+ scannerId: item['scanner-id'],
+ id: label,
+ period: item['granularity-period'],
+ es: item['performance-data'].es,
+ ses: item['performance-data'].ses,
+ uas: item['performance-data'].unavailability,
+ radioSignal: radioSignal
+ });
+ break;
+
+ case 'receiveLevel':
+ $scope.receiveLevel.push({
+ timestamp: timestamp,
+ elapsedTime: checkData(item['elapsed-time']),
+ suspectInterval: item['suspect-interval-flag'],
+ scannerId: item['scanner-id'],
+ id: label,
+ period: item['granularity-period'],
+ rxmin: checkData(item['performance-data']['rx-level-min']),
+ rxmax: checkData(item['performance-data']['rx-level-max']),
+ rxavg: checkData(item['performance-data']['rx-level-avg']),
+ radioSignal: radioSignal
+ });
+ break;
+
+ case 'transmissionLevel':
+
+ $scope.transmissionLevel.push({
+ timestamp: timestamp,
+ elapsedTime: checkData(item['elapsed-time']),
+ suspectInterval: item['suspect-interval-flag'],
+ scannerId: item['scanner-id'],
+ id: label,
+ period: item['granularity-period'],
+ txmin: checkData(item['performance-data']['tx-level-min']),
+ txmax: checkData(item['performance-data']['tx-level-max']),
+ txavg: checkData(item['performance-data']['tx-level-avg']),
+ radioSignal: radioSignal
+ });
+
+ break;
+
+ case 'modulation':
+
+ $scope.modulation.push(
+ {
+ timestamp: timestamp,
+ elapsedTime: checkData(item['elapsed-time']),
+ suspectInterval: item['suspect-interval-flag'],
+ scannerId: item['scanner-id'],
+ id: label,
+ period: item['granularity-period'],
+ time2S: checkData(item['performance-data']['time2-states-s']),
+ time2: checkData(item['performance-data']['time2-states']),
+ time2L: checkData(item['performance-data']['time2-states-l']),
+ time4S: checkData(item['performance-data']['time4-states-s']),
+ time4: checkData(item['performance-data']['time4-states']),
+ time4L: checkData(item['performance-data']['time4-states-l']),
+ time16S: checkData(item['performance-data']['time16-states-s']),
+ time16: checkData(item['performance-data']['time16-states']),
+ time16L: checkData(item['performance-data']['time16-states-l']),
+ time32S: checkData(item['performance-data']['time32-states-s']),
+ time32: checkData(item['performance-data']['time32-states']),
+ time32L: checkData(item['performance-data']['time32-states-l']),
+ time64S: checkData(item['performance-data']['time64-states-s']),
+ time64: checkData(item['performance-data']['time64-states']),
+ time64L: checkData(item['performance-data']['time64-states-l']),
+ time128S: checkData(item['performance-data']['time128-states-s']),
+ time128: checkData(item['performance-data']['time128-states']),
+ time128L: checkData(item['performance-data']['time128-states-l']),
+ time256S: checkData(item['performance-data']['time256-states-s']),
+ time256: checkData(item['performance-data']['time256-states']),
+ time256L: checkData(item['performance-data']['time256-states-l']),
+ time512S: checkData(item['performance-data']['time512-states-s']),
+ time512: checkData(item['performance-data']['time512-states']),
+ time512L: checkData(item['performance-data']['time512-states-l']),
+ time1024S: checkData(item['performance-data']['time1024-states-s']),
+ time1024: checkData(item['performance-data']['time1024-states']),
+ time1024L: checkData(item['performance-data']['time1024-states-l']),
+ time2048S: checkData(item['performance-data']['time2048-states-s']),
+ time2048: checkData(item['performance-data']['time2048-states']),
+ time2048L: checkData(item['performance-data']['time2048-states-l']),
+ time4096S: checkData(item['performance-data']['time4096-states-s']),
+ time4096: checkData(item['performance-data']['time4096-states']),
+ time4096L: checkData(item['performance-data']['time4096-states-l']),
+ time8192S: checkData(item['performance-data']['time8192-states-s']),
+ time8192: checkData(item['performance-data']['time8192-states']),
+ time8192L: checkData(item['performance-data']['time8192-states-l']),
+ radioSignal: radioSignal
+ });
+
+ break;
+
+ case 'temperature':
+
+ $scope.temperature.push({
+ timestamp: timestamp,
+ elapsedTime: checkData(item['elapsed-time']),
+ suspectInterval: item['suspect-interval-flag'],
+ scannerId: item['scanner-id'],
+ id: label,
+ period: item['granularity-period'],
+ rfTempMin: item['performance-data']['rf-temp-min'],
+ rfTempAvg: item['performance-data']['rf-temp-avg'],
+ rfTempMax: item['performance-data']['rf-temp-max'],
+ radioSignal: radioSignal
+ });
+ break;
+
+ case 'snir':
+
+ $scope.snir.push({
+ timestamp: timestamp,
+ elapsedTime: checkData(item['elapsed-time']),
+ suspectInterval: item['suspect-interval-flag'],
+ scannerId: item['scanner-id'],
+ id: label,
+ period: item['granularity-period'],
+ snirMin: item['performance-data']['snir-min'],
+ snirAvg: item['performance-data']['snir-avg'],
+ snirMax: item['performance-data']['snir-max'],
+ radioSignal: radioSignal
+ }
+ );
+
+ break;
+
+ case 'crossPolarDiscrimination':
+
+ $scope.cpdData.push({
+
+ timestamp: timestamp,
+ elapsedTime: checkData(item['elapsed-time']),
+ suspectInterval: item['suspect-interval-flag'],
+ scannerId: item['scanner-id'],
+ id: label,
+ period: item['granularity-period'],
+ xpdMin: item['performance-data']['xpd-min'],
+ xpdAvg: item['performance-data']['xpd-avg'],
+ xpdMax: item['performance-data']['xpd-max'],
+ radioSignal: radioSignal
+ });
+
+ break;
+ }
+
+ });
+
+ }
+ };
+
+ var updateContainer = function (lpId, part, data) {
+ // console.log(JSON.stringify(data), lpId);
+ var label = new OnfNetworkElement($scope.onfNetworkElement).getLpById(data['layer-protocol']).getLabel() || data['layer-protocol'];
+
+ if (Object.keys(data)[0].contains('ethernet-container')) {
+ $scope.ethernetJsonValue.push(data);
+
+ var list = data['ethernet-container-current-performance']['current-performance-data-list'] || data['ethernet-container-current-performance']['current-performance-data']
+ list.map(function (item) {
+
+ $scope.performanceEthernetContainer.push({
+ timestamp: $mwtnPerformanceCurrent.formatTimeStamp(item['timestamp']),
+ elapsedTime: checkData(item['elapsed-time']),
+ suspectInterval: item['suspect-interval-flag'],
+ scannerId: item['scanner-id'],
+ period: item['granularity-period'],
+ txEthernetBytesMaxS: checkData(item['performance-data']['tx-ethernet-bytes-max-s']),
+ txEthernetBytesMaxM: checkData(item['performance-data']['tx-ethernet-bytes-max-m']),
+ txEthernetBytesSum: checkData(item['performance-data']['tx-ethernet-bytes-sum']),
+ id: label
+ });
+ });
+ }
+ };
+
+ //replace -1 with undefined in json data
+ var checkData = function (value) {
+ if (value === -1 || value === undefined) return undefined;
+ else return value;
+ };
+
+ //perf log configuration
+ $scope.gridOptionsPerformance826 = {
+ paginationPageSizes: [25, 100, 1000, 10000],
+ paginationPageSize: 25,
+ enablePaginationControls: true,
+ enableFiltering: true,
+ enableGridMenu: true,
+ columnDefs: [
+
+ { field: 'id', type: 'string', displayName: $translate.instant('MWTN_LP'), width: 300 },
+ { field: 'radioSignal', type: 'string', displayName: 'Radio Signal Id', width: 90 },
+ { field: 'scannerId', type: 'string', displayName: 'Scanner Id', width: 90 },
+ {
+ field: 'timestamp', type: 'string', displayName: 'Request time', width: 200, sort: {
+ direction: uiGridConstants.ASC,
+ priority: 1
+ }
+ },
+ { field: 'elapsedTime', type: 'string', displayName: 'Elapsed Time', width: 100 },
+ { field: 'period', type: 'string', displayName: 'Period', width: 200 },
+ { field: 'suspectInterval', type: 'string', displayName: 'Suspect Interval Flag', width: 100 },
+ { field: 'es', type: 'string', displayName: 'ES', width: 70 },
+ { field: 'ses', type: 'string', displayName: 'SES', width: 70 },
+ { field: 'uas', type: 'string', displayName: 'UAS', width: 70 }
+ ],
+ data: 'performance826'
+ };
+
+ //receive lvl configuration
+ $scope.gridOptionsReceiveLevel = {
+ paginationPageSizes: [25, 100, 1000, 10000],
+ paginationPageSize: 25,
+ enablePaginationControls: true,
+ enableFiltering: true,
+ enableGridMenu: true,
+ columnDefs: [
+
+ { field: 'id', type: 'string', displayName: $translate.instant('MWTN_LP'), width: 300 },
+ { field: 'radioSignal', type: 'string', displayName: 'Radio Signal Id', width: 90 },
+ { field: 'scannerId', type: 'string', displayName: 'Scanner Id', width: 90 },
+ {
+ field: 'timestamp', type: 'string', displayName: 'Request time', width: 200, sort: {
+ direction: uiGridConstants.ASC,
+ priority: 1
+ }
+ },
+ { field: 'elapsedTime', type: 'string', displayName: 'Elapsed Time', width: 100 },
+ { field: 'period', type: 'string', displayName: 'Period', width: 200 },
+ { field: 'suspectInterval', type: 'string', displayName: 'Suspect Interval Flag', width: 100 },
+ { field: 'rxmin', type: 'string', displayName: 'Rx min [dBm]', width: 90 },
+ { field: 'rxavg', type: 'string', displayName: 'Rx avg [dBm]', width: 90 },
+ { field: 'rxmax', type: 'string', displayName: 'Rx max [dBm]', width: 90 }
+
+ ],
+ data: 'receiveLevel'
+ };
+
+ //transmission lvl configuration
+ $scope.gridOptionsTransmissionLevel = {
+ paginationPageSizes: [25, 100, 1000, 10000],
+ paginationPageSize: 25,
+ enablePaginationControls: true,
+ enableFiltering: true,
+ enableGridMenu: true,
+ columnDefs: [
+
+ { field: 'id', type: 'string', displayName: $translate.instant('MWTN_LP'), width: 300 },
+ { field: 'radioSignal', type: 'string', displayName: 'Radio Signal Id', width: 90 },
+ { field: 'scannerId', type: 'string', displayName: 'Scanner Id', width: 90 },
+ {
+ field: 'timestamp', type: 'string', displayName: 'Request time', width: 200, sort: {
+ direction: uiGridConstants.ASC,
+ priority: 1
+ }
+ },
+ { field: 'elapsedTime', type: 'string', displayName: 'Elapsed Time', width: 100 },
+ { field: 'period', type: 'string', displayName: 'Period', width: 200 },
+ { field: 'suspectInterval', type: 'string', displayName: 'Suspect Interval Flag', width: 100 },
+ { field: 'txmin', type: 'string', displayName: 'Tx min [dBm]', width: 90 },
+ { field: 'txavg', type: 'string', displayName: 'Tx avg [dBm]', width: 90 },
+ { field: 'txmax', type: 'string', displayName: 'Tx max [dBm]', width: 90 }
+
+ ],
+ data: 'transmissionLevel'
+ };
+
+ //modulation configuration
+ $scope.gridOptionsModulation = {
+ paginationPageSizes: [25, 100, 1000, 10000],
+ paginationPageSize: 25,
+ enablePaginationControls: true,
+ enableFiltering: true,
+ enableGridMenu: true,
+ columnDefs: [
+
+ { field: 'id', type: 'string', displayName: $translate.instant('MWTN_LP'), width: 300 },
+ { field: 'radioSignal', type: 'string', displayName: 'Radio Signal Id', width: 90 },
+ { field: 'scannerId', type: 'string', displayName: 'Scanner Id', width: 90 },
+ {
+ field: 'timestamp', type: 'string', displayName: 'Request time', width: 200, sort: {
+ direction: uiGridConstants.ASC,
+ priority: 1
+ }
+ },
+ { field: 'elapsedTime', type: 'string', displayName: 'Elapsed Time', width: 100 },
+ { field: 'period', type: 'string', displayName: 'Period', width: 200 },
+ { field: 'suspectInterval', type: 'string', displayName: 'Suspect Interval Flag', width: 100 },
+ { field: 'time2S', type: 'string', displayName: 'QAM2S', width: 90 },
+ { field: 'time2', type: 'string', displayName: 'QAM2', width: 90 },
+ { field: 'time2L', type: 'string', displayName: 'QAM2L', width: 90 },
+ { field: 'time4S', type: 'string', displayName: 'QAM4S', width: 90 },
+ { field: 'time4', type: 'string', displayName: 'QAM4', width: 90 },
+ { field: 'time4L', type: 'string', displayName: 'QAM4L', width: 90 },
+ { field: 'time16S', type: 'string', displayName: 'QAM16S', width: 90 },
+ { field: 'time16', type: 'string', displayName: 'QAM16', width: 90 },
+ { field: 'time16L', type: 'string', displayName: 'QAM16L', width: 90 },
+ { field: 'time32S', type: 'string', displayName: 'QAM32S', width: 90 },
+ { field: 'time32', type: 'string', displayName: 'QAM32', width: 90 },
+ { field: 'time32L', type: 'string', displayName: 'QAM32L', width: 90 },
+ { field: 'time64S', type: 'string', displayName: 'QAM64S', width: 90 },
+ { field: 'time64', type: 'string', displayName: 'QAM64', width: 90 },
+ { field: 'time64L', type: 'string', displayName: 'QAM64L', width: 90 },
+ { field: 'time128S', type: 'string', displayName: 'QAM128S', width: 90 },
+ { field: 'time128', type: 'string', displayName: 'QAM128', width: 90 },
+ { field: 'time128L', type: 'string', displayName: 'QAM128L', width: 90 },
+ { field: 'time256S', type: 'string', displayName: 'QAM256S', width: 90 },
+ { field: 'time256', type: 'string', displayName: 'QAM256', width: 90 },
+ { field: 'time256L', type: 'string', displayName: 'QAM256L', width: 90 },
+ { field: 'time512S', type: 'string', displayName: 'QAM512S', width: 90 },
+ { field: 'time512', type: 'string', displayName: 'QAM512', width: 90 },
+ { field: 'time512L', type: 'string', displayName: 'QAM512L', width: 90 },
+ { field: 'time1024S', type: 'string', displayName: 'QAM1024S', width: 90 },
+ { field: 'time1024', type: 'string', displayName: 'QAM1024', width: 90 },
+ { field: 'time1024L', type: 'string', displayName: 'QAM1024L', width: 90 },
+ { field: 'time2048S', type: 'string', displayName: 'QAM2048S', width: 90 },
+ { field: 'time2048', type: 'string', displayName: 'QAM2048', width: 90 },
+ { field: 'time2048L', type: 'string', displayName: 'QAM2048L', width: 90 },
+ { field: 'time4096S', type: 'string', displayName: 'QAM4096S', width: 90 },
+ { field: 'time4096', type: 'string', displayName: 'QAM4096', width: 90 },
+ { field: 'time4096L', type: 'string', displayName: 'QAM4096L', width: 90 },
+ { field: 'time8192S', type: 'string', displayName: 'QAM8192S', width: 90 },
+ { field: 'time8192', type: 'string', displayName: 'QAM8192', width: 90 },
+ { field: 'time8192L', type: 'string', displayName: 'QAM8192L', width: 90 }
+
+ ],
+ data: 'modulation', onRegisterApi: function (gridApi) {
+ $scope.gridApi = gridApi;
+ }
+ };
+
+ //temperature configuration
+ $scope.gridOptionsTemperature = {
+ paginationPageSizes: [25, 100, 1000, 10000],
+ paginationPageSize: 25,
+ enablePaginationControls: true,
+ enableFiltering: true,
+ enableGridMenu: true,
+ columnDefs: [
+
+ { field: 'id', type: 'string', displayName: $translate.instant('MWTN_LP'), width: 300 },
+ { field: 'radioSignal', type: 'string', displayName: 'Radio Signal Id', width: 90 },
+ { field: 'scannerId', type: 'string', displayName: 'Scanner Id', width: 90 },
+ {
+ field: 'timestamp', type: 'string', displayName: 'Request time', width: 200, sort: {
+ direction: uiGridConstants.ASC,
+ priority: 1
+ }
+ },
+ { field: 'elapsedTime', type: 'string', displayName: 'Elapsed Time', width: 100 },
+ { field: 'period', type: 'string', displayName: 'Period', width: 200 },
+ { field: 'suspectInterval', type: 'string', displayName: 'Suspect Interval Flag', width: 100 },
+ { field: 'rfTempMin', type: 'string', displayName: 'Rf Temp Min [&deg;C]', width: 90 },
+ { field: 'rfTempAvg', type: 'string', displayName: 'Rf Temp Avg [&deg;C]', width: 90 },
+ { field: 'rfTempMax', type: 'string', displayName: 'Rf Temp Max [&deg;C]', width: 90 }
+
+ ],
+ data: 'temperature'
+ }
+
+ //SNIR configuration
+ $scope.gridOptionsSnir = {
+ paginationPageSizes: [25, 100, 1000, 10000],
+ paginationPageSize: 25,
+ enablePaginationControls: true,
+ enableFiltering: true,
+ enableGridMenu: true,
+ columnDefs: [
+ { field: 'layerProtocol', type: 'string', displayName: 'Layer Protocol Name', width: 90, visible: false},
+ { field: 'id', type: 'string', displayName: $translate.instant('MWTN_LP'), width: 300 },
+ { field: 'radioSignal', type: 'string', displayName: 'Radio Signal Id', width: 90 },
+ { field: 'scannerId', type: 'string', displayName: 'Scanner Id', width: 90 },
+ {
+ field: 'timestamp', type: 'string', displayName: 'Request time', width: 200, sort: {
+ direction: uiGridConstants.ASC,
+ priority: 1
+ }
+ },
+ { field: 'elapsedTime', type: 'string', displayName: 'Elapsed Time', width: 100 },
+ { field: 'period', type: 'string', displayName: 'Period', width: 200 },
+ { field: 'suspectInterval', type: 'string', displayName: 'Suspect Interval Flag', width: 100 },
+ { field: 'snirMin', type: 'string', displayName: [$translate.instant('MWTN_SNIR_MIN'),'[dB]'].join(' '), width: 90 },
+ { field: 'snirAvg', type: 'string', displayName: [$translate.instant('MWTN_SNIR_AVG'),'[dB]'].join(' '), width: 90 },
+ { field: 'snirMax', type: 'string', displayName: [$translate.instant('MWTN_SNIR_MAX'),'[dB]'].join(' '), width: 90 }
+ ],
+ data: 'snir'
+ }
+
+ //CPD Configuration
+ $scope.gridOptionsCrossPolarDiscrimination = {
+ paginationPageSizes: [25, 100, 1000, 10000],
+ paginationPageSize: 25,
+ enablePaginationControls: true,
+ enableFiltering: true,
+ enableGridMenu: true,
+ columnDefs: [
+
+ { field: 'id', type: 'string', displayName: $translate.instant('MWTN_LP'), width: 300 },
+ { field: 'radioSignal', type: 'string', displayName: 'Radio Signal Id', width: 90 },
+ { field: 'scannerId', type: 'string', displayName: 'Scanner Id', width: 90 },
+ {
+ field: 'timestamp', type: 'string', displayName: 'Request time', width: 200, sort: {
+ direction: uiGridConstants.ASC,
+ priority: 1
+ }
+ },
+ { field: 'elapsedTime', type: 'string', displayName: 'Elapsed Time', width: 100 },
+ { field: 'period', type: 'string', displayName: 'Period', width: 200 },
+ { field: 'suspectInterval', type: 'string', displayName: 'Suspect Interval Flag', width: 100 },
+ { field: 'xpdMin', type: 'string', displayName: 'CPD min [dB]', width: 90 },
+ { field: 'xpdAvg', type: 'string', displayName: 'CPD avg [dB]', width: 90 },
+ { field: 'xpdMax', type: 'string', displayName: 'CPD max [dB]', width: 90 }
+
+ ],
+ data: 'cpdData'
+ }
+
+ //ethernet perf configuration
+ $scope.gridOptionsPerformanceEthernetContainer = {
+ paginationPageSizes: [25, 100, 1000, 10000],
+ paginationPageSize: 25,
+ enablePaginationControls: true,
+ enableFiltering: true,
+ enableGridMenu: true,
+ columnDefs: [
+
+ { field: 'id', type: 'string', displayName: $translate.instant('MWTN_LP'), width: 300 },
+ { field: 'scannerId', type: 'string', displayName: 'Scanner Id', width: 90 },
+ {
+ field: 'timestamp', type: 'string', displayName: 'Request time', width: 200, sort: {
+ direction: uiGridConstants.ASC,
+ priority: 1
+ }
+ },
+ { field: 'elapsedTime', type: 'string', displayName: 'Elapsed Time', width: 100 },
+ { field: 'period', type: 'string', displayName: 'Period', width: 200 },
+ { field: 'suspectInterval', type: 'string', displayName: 'Suspect Interval Flag', width: 100 },
+ { field: 'txEthernetBytesMaxS', type: 'number', displayName: 'Tx BytesMaxS', width: 90 },
+ { field: 'txEthernetBytesMaxM', type: 'number', displayName: 'Tx BytesMaxM', width: 90 },
+ { field: 'txEthernetBytesSum', type: 'number', displayName: 'Tx BytesSum', width: 90 }
+
+ ],
+ data: 'performanceEthernetContainer'
+ };
+
+ var updatePart = function (spec, data, key) {
+ switch (spec.pacId) {
+ case 'ne':
+ updateNe(data);
+ break;
+
+ case 'airinterface':
+ console.log(JSON.stringify(spec, JSON.stringify(data)));
+ updateAirInterface(data, key);
+ break;
+
+ case 'container':
+ updateContainer(spec.layerProtocolId, spec.partId, data);
+ break;
+
+ }
+ };
+
+ var refreshAirInterface = function (key) {
+ //get performance data from interfaces
+ for (var interf of $scope.airinterfaces) {
+ var airIterfaceSpec = {
+ nodeId: $scope.networkElementId,
+ revision: $scope.revision,
+ pacId: 'airinterface',
+ partId: 'CurrentPerformance',
+ layerProtocolId: interf.layerProtocol
+ };
+ $mwtnPerformanceCurrent.getPacParts(airIterfaceSpec).then(function (data) {
+ var yangfiedObj = $mwtnPerformanceCurrent.yangifyObject(data);
+ updatePart(airIterfaceSpec, yangfiedObj, key);
+ });
+ }
+ };
+
+ $scope.collapseAll = function () {
+ // close all groups
+ Object.keys($scope.status).map(function (group) {
+ $scope.status[group] = false;
+ });
+ Object.keys($scope.spinner).map(function (group) {
+ $scope.spinner[group] = false;
+ });
+ };
+
+ // events
+ $scope.status = { performanceEthernetContainer: true };
+ $scope.spinner = {};
+ $scope.separator = $mwtnPerformanceCurrent.separator; //'&nbsp;'
+
+ //get data on ne selection
+ $scope.$watch('networkElement', function (neId, oldValue) {
+ if (neId && neId !== '' && neId !== oldValue) {
+ $scope.collapseAll();
+
+ // clear lists visible on screen
+ $scope.performance826 = [];
+ $scope.receiveLevel = [];
+ $scope.transmissionLevel = [];
+ $scope.modulation = [];
+ $scope.temperature = [];
+ $scope.snir = [];
+ $scope.cpdData = [];
+ $scope.jsonvalue = [];
+ $scope.performanceEthernetContainer = [];
+ $scope.ethernetJsonValue = [];
+
+ var revision;
+ $scope.networkElements.map(function (ne) {
+ if (ne.id === neId) revision = ne.revision;
+ });
+ $scope.networkElementId = neId;
+ $scope.revision = revision;
+
+ var spec = {
+ nodeId: neId,
+ revision: revision,
+ pacId: 'ne'
+ };
+
+ //get ne data
+ $mwtnPerformanceCurrent.getPacParts(spec).then(function (success) {
+ var yangfiedObj = $mwtnPerformanceCurrent.yangifyObject(success);
+
+ updatePart(spec, yangfiedObj);
+
+ //get performance data from interfaces
+ $scope.airinterfaces.map(function(airInterface) {
+
+ //get configuration for airinterfaces
+ var airIterfaceSpec = {
+ nodeId: neId,
+ revision: revision,
+ pacId: 'airinterface',
+ partId: 'Configuration',
+ layerProtocolId: airInterface.layerProtocol
+ };
+
+ //get radioSignalID and add it to map
+ $mwtnPerformanceCurrent.getPacParts(airIterfaceSpec).then(function (data) {
+ var yangfiedObj = $mwtnPerformanceCurrent.yangifyObject(data);
+ radioSignalMap.set(yangfiedObj['layer-protocol'], yangfiedObj['air-interface-configuration']['radio-signal-id']);
+ });
+ });
+
+ }, function (error) {
+ updatePart(spec, error);
+ });
+ }
+ });
+
+ $scope.$watch('layerProtocol', function (newValue, oldValue) {
+
+ if (newValue && oldValue !== "" && newValue !== oldValue) {
+ $scope.collapseAll();
+ }
+
+ }, true);
+
+ //update data within tables on accordion - open
+ $scope.$watch('status', function (status, oldValue) {
+ Object.keys(status).map(function (key) {
+ if ($scope.networkElementId && status[key] && status[key] !== oldValue[key]) {
+ switch (key) {
+
+ case 'performance826':
+ $scope.performance826 = [];
+ refreshAirInterface(key);
+ break;
+
+ case 'receiveLevel':
+ $scope.receiveLevel = [];
+ refreshAirInterface(key);
+ break;
+
+ case 'transmissionLevel':
+ $scope.transmissionLevel = [];
+ refreshAirInterface(key);
+ break;
+
+ case 'modulation':
+ $scope.modulation = [];
+ refreshAirInterface(key);
+ break;
+
+ case 'temperature':
+ $scope.temperature = [];
+ refreshAirInterface(key);
+ break;
+
+ case 'snir':
+ $scope.snir = [];
+ refreshAirInterface(key);
+ break;
+
+ case 'crossPolarDiscrimination':
+ $scope.cpdData = [];
+ refreshAirInterface(key);
+ break;
+
+ case 'performanceEthernetContainer':
+ $scope.performanceEthernetContainer = [];
+ $scope.ethernetJsonValue = [];
+
+ //get performance data for ethernet
+ $scope.ethernets.map(function (item) {
+ var ethernetSpec = {
+ nodeId: $scope.networkElementId,
+ revision: $scope.revision,
+ pacId: 'container',
+ partId: 'CurrentPerformance',
+ layerProtocolId: item.layerProtocol
+ };
+
+ $mwtnPerformanceCurrent.getPacParts(ethernetSpec).then(function (data) {
+ var yangfiedObj = $mwtnPerformanceCurrent.yangifyObject(data);
+ updatePart(ethernetSpec, yangfiedObj);
+ });
+ });
+ break;
+
+ }
+ $window.dispatchEvent(new Event("resize"));
+ }
+ });
+ }, true);
+
+ }]);
+ });
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/src/main/resources/mwtnPerformanceCurrent/mwtnPerformanceCurrent.module.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/src/main/resources/mwtnPerformanceCurrent/mwtnPerformanceCurrent.module.js
new file mode 100644
index 00000000..e0e4e2fb
--- /dev/null
+++ b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/src/main/resources/mwtnPerformanceCurrent/mwtnPerformanceCurrent.module.js
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2016 highstreet technologies GmbH and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+define(['angularAMD',
+ 'app/routingConfig',
+ 'app/core/core.services',
+ 'common/config/env.module',
+ 'app/mwtnCommons/mwtnCommons.module'], function(ng) {
+ var mwtnPerformanceCurrentApp = angular.module('app.mwtnPerformanceCurrent', ['ui.grid', 'ui.bootstrap', 'app.core', 'ui.router.state', 'config', 'ui.router.state','ui.grid.exporter',
+ 'ui.grid.moveColumns', 'ui.grid.pinning', 'ui.grid.selection',
+ 'ui.grid.resizeColumns', 'ui.grid.pagination','ui.grid.autoResize']);
+
+ mwtnPerformanceCurrentApp.config(function($stateProvider, $compileProvider, $controllerProvider, $provide, NavHelperProvider, $translateProvider) {
+ mwtnPerformanceCurrentApp.register = {
+ controller : $controllerProvider.register,
+ directive : $compileProvider.directive,
+ factory : $provide.factory,
+ service : $provide.service
+
+ };
+
+ NavHelperProvider.addControllerUrl('app/mwtnPerformanceCurrent/mwtnPerformanceCurrent.controller');
+ NavHelperProvider.addToMenu('mwtnPerformanceCurrent', {
+ "link" : "#/pnfPerformanceCurrent",
+ "active" : "main.mwtnPerformanceCurrent",
+ "title" : "pnf PM Current",
+ "icon" : "fa fa-bar-chart", // Add navigation icon css class here
+ "page" : {
+ "title" : "pnf PM Current",
+ "description" : "mwtnPerformanceCurrent"
+ }
+ });
+
+ var access = routingConfig.accessLevels;
+
+ $stateProvider.state('main.mwtnPerformanceCurrent', {
+ url: 'pnfPerformanceCurrent',
+ access: access.admin,
+ views : {
+ 'content' : {
+ templateUrl: 'src/app/mwtnPerformanceCurrent/mwtnPerformanceCurrent.tpl.html',
+ controller: 'mwtnPerformanceCurrentCtrl'
+ }
+ }
+ });
+
+ });
+
+ return mwtnPerformanceCurrentApp;
+});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/src/main/resources/mwtnPerformanceCurrent/mwtnPerformanceCurrent.services.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/src/main/resources/mwtnPerformanceCurrent/mwtnPerformanceCurrent.services.js
new file mode 100644
index 00000000..d7adb5a6
--- /dev/null
+++ b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/src/main/resources/mwtnPerformanceCurrent/mwtnPerformanceCurrent.services.js
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2016 HCL Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+define(['app/mwtnCommons/mwtnCommons.module', 'app/mwtnPerformanceCurrent/mwtnPerformanceCurrent.module'],function(mwtnPerformanceCurrentApp) {
+
+ mwtnPerformanceCurrentApp.register.factory('$mwtnPerformanceCurrent', function($mwtnCommons, $mwtnLog) {
+
+ var COMPONENT = '$mwtnPerformanceCurrent';
+ $mwtnLog.info({component: COMPONENT, message: '$mwtnPerformanceCurrent started!'});
+
+ var service = {};
+
+ service.separator = $mwtnCommons.separator;
+ service.parts = $mwtnCommons.parts;
+ service.getMountPoints = $mwtnCommons.getMountPoints;
+ service.getPacParts = $mwtnCommons.getPacParts;
+ service.layerProtocolNameOrder = $mwtnCommons.layerProtocolNameOrder;
+ service.formatTimeStamp = $mwtnCommons.formatTimeStamp;
+
+ service.yangifyObject=$mwtnCommons.yangifyObject;
+
+ return service;
+ });
+
+});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/src/main/resources/mwtnPerformanceCurrent/mwtnPerformanceCurrent.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/src/main/resources/mwtnPerformanceCurrent/mwtnPerformanceCurrent.tpl.html
new file mode 100644
index 00000000..a212971e
--- /dev/null
+++ b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/src/main/resources/mwtnPerformanceCurrent/mwtnPerformanceCurrent.tpl.html
@@ -0,0 +1,119 @@
+<ht-header help-link='sdnr/pnfPerformance/0.4.0/README.md'></ht-header>
+<mwtn-select-network-element></mwtn-select-network-element>
+
+<div class="owl container" ng-if="networkElements.lenght !== 0 && networkElement" style="width: 100%">
+ <div class="row">
+ <div class="col-md-3">
+ <div class="form-group">
+ <select class="form-control" ng-model="layerProtocol">
+ <option ng-repeat="protocol in layerProtocols">{{protocol}}</option>
+ </select>
+ </div>
+ </div>
+ <div class="col-md-2">
+ <span class="white">{{'Select Layer Protocol' }}</span>
+ </div>
+ </div>
+ <div class="row" ng-if="layerProtocol === 'MWPS' ">
+ <div class="col">
+ <uib-accordion close-others="oneATime">
+ <div uib-accordion-group class="panel-primary" is-open="status.performance826">
+ <uib-accordion-heading> <i class="pull-left fa" ng-class="{'fa-chevron-down': status.performance826, 'fa-chevron-right': !status.performance826}"></i>
+ <span>Performance Data G.826</span>
+ <i class="pull-right fa fa-spinner fa-pulse" ng-show="spinner.performance826"></i>
+ </uib-accordion-heading>
+
+ <div id="mwtnFaultGridAlarmLog" ui-grid="gridOptionsPerformance826" ui-grid-pagination ui-grid-exporter ui-grid-selection
+ ui-grid-pinning ui-grid-resize-columns ui-grid-auto-resize ui-grid-move-columns class="mwtnCurrentGrid">
+ </div>
+ </div>
+ <div uib-accordion-group class="panel-primary" is-open="status.receiveLevel">
+ <uib-accordion-heading> <i class="pull-left fa" ng-class="{'fa-chevron-down': status.receiveLevel, 'fa-chevron-right': !status.receiveLevel}"></i>
+ <span>Receive Level</span>
+ <i class="pull-right fa fa-spinner fa-pulse" ng-show="spinner.receiveLevel"></i>
+ </uib-accordion-heading>
+
+ <div ui-grid="gridOptionsReceiveLevel" ui-grid-pagination ui-grid-exporter ui-grid-selection ui-grid-pinning ui-grid-resize-columns
+ ui-grid-auto-resize ui-grid-move-columns class="mwtnCurrentGrid">
+ </div>
+
+ </div>
+ <div uib-accordion-group class="panel-primary" is-open="status.transmissionLevel">
+ <uib-accordion-heading> <i class="pull-left fa" ng-class="{'fa-chevron-down': status.transmissionLevel, 'fa-chevron-right': !status.transmissionLevel}"></i>
+ <span>Transmission Power</span>
+ <i class="pull-right fa fa-spinner fa-pulse" ng-show="spinner.transmissionLevel"></i>
+ </uib-accordion-heading>
+
+ <div ui-grid="gridOptionsTransmissionLevel" ui-grid-pagination ui-grid-exporter ui-grid-selection ui-grid-pinning ui-grid-resize-columns
+ ui-grid-auto-resize ui-grid-move-columns class="mwtnCurrentGrid">
+ </div>
+
+ </div>
+ <div uib-accordion-group class="panel-primary" is-open="status.modulation">
+ <uib-accordion-heading> <i class="pull-left fa" ng-class="{'fa-chevron-down': status.modulation, 'fa-chevron-right': !status.modulation}"></i>
+ <span>Adaptive Modulation</span>
+ <i class="pull-right fa fa-spinner fa-pulse" ng-show="spinner.modulation"></i>
+ </uib-accordion-heading>
+
+ <div ui-grid="gridOptionsModulation" ui-grid-pagination ui-grid-exporter ui-grid-selection ui-grid-pinning ui-grid-resize-columns
+ ui-grid-move-columns class="mwtnCurrentGrid">
+ </div>
+
+ </div>
+ <div uib-accordion-group class="panel-primary" is-open="status.temperature">
+ <uib-accordion-heading> <i class="pull-left fa" ng-class="{'fa-chevron-down': status.temperature, 'fa-chevron-right': !status.temperature}"></i>
+ <span>Temperature</span>
+ <i class="pull-right fa fa-spinner fa-pulse" ng-show="spinner.temperature"></i>
+ </uib-accordion-heading>
+
+ <div ui-grid="gridOptionsTemperature" ui-grid-pagination ui-grid-exporter ui-grid-selection ui-grid-pinning ui-grid-resize-columns
+ ui-grid-move-columns class="mwtnFaultGrid">
+ </div>
+
+ </div>
+ <div uib-accordion-group class="panel-primary" is-open="status.snir">
+ <uib-accordion-heading> <i class="pull-left fa" ng-class="{'fa-chevron-down': status.snir, 'fa-chevron-right': !status.snir}"></i>
+ <span>{{'MWTN_SINR' | translate}}</span>
+ <i class="pull-right fa fa-spinner fa-pulse" ng-show="spinner.snir"></i>
+ </uib-accordion-heading>
+
+ <div ui-grid="gridOptionsSnir" ui-grid-pagination ui-grid-exporter ui-grid-selection ui-grid-pinning ui-grid-resize-columns
+ ui-grid-move-columns class="mwtnCurrentGrid">
+ </div>
+
+ </div>
+ <div uib-accordion-group class="panel-primary" is-open="status.crossPolarDiscrimination">
+ <uib-accordion-heading> <i class="pull-left fa" ng-class="{'fa-chevron-down': status.crossPolarDiscrimination, 'fa-chevron-right': !status.crossPolarDiscrimination}"></i>
+ <span>Cross Polar Discrimination</span>
+ <i class="pull-right fa fa-spinner fa-pulse" ng-show="spinner.crossPolarDiscrimination"></i>
+ </uib-accordion-heading>
+
+ <div ui-grid="gridOptionsCrossPolarDiscrimination" ui-grid-pagination ui-grid-exporter ui-grid-selection ui-grid-pinning ui-grid-resize-columns
+ ui-grid-move-columns class="mwtnCurrentGrid">
+ </div>
+
+ </div>
+ </uib-accordion>
+ </div>
+ </div>
+ <div class="row" ng-if="layerProtocol === 'ETC' ">
+ <div class="col">
+ <uib-accordion close-others="oneATime">
+ <div uib-accordion-group class="panel-primary" is-open="status.performanceEthernetContainer">
+ <uib-accordion-heading> <i class="pull-left fa" ng-class="{'fa-chevron-down': status.performanceEthernetContainer, 'fa-chevron-right': !status.performanceEthernetContainer}"></i>
+ <span>Performance Data</span>
+ <i class="pull-right fa fa-spinner fa-pulse" ng-show="spinner.performanceEthernetContainer"></i>
+ </uib-accordion-heading>
+
+ <div ui-grid="gridOptionsPerformanceEthernetContainer" ui-grid-pagination ui-grid-exporter ui-grid-selection ui-grid-pinning ui-grid-resize-columns
+ ui-grid-auto-resize ui-grid-move-columns class="mwtnCurrentGrid">
+ </div>
+ </div>
+ </uib-accordion>
+ </div>
+ </div>
+</div>
+<hr />
+<div class="owl">
+ <span class="white">ONAP SDN-R | ONF Wireless for @distversion@ - Build: @buildtime@</span>
+</div> \ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/pom.xml
new file mode 100644
index 00000000..7f2c1e52
--- /dev/null
+++ b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/pom.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<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/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>mwtn</artifactId>
+ <groupId>com.highstreet.technologies.odl.dlux</groupId>
+ <version>0.5.1-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+ <packaging>pom</packaging>
+ <groupId>com.highstreet.technologies.odl.dlux</groupId>
+ <artifactId>mwtnPerformanceCurrent</artifactId>
+ <version>0.5.1-SNAPSHOT</version>
+ <name>${prefix} ${project.artifactId}</name>
+
+ <prerequisites>
+ <maven>3.0</maven>
+ </prerequisites>
+
+ <modules>
+ <module>mwtnPerformanceCurrent-module</module>
+ <module>mwtnPerformanceCurrent-bundle</module>
+ </modules>
+</project>