Updated ROADM UI with Current Input Power

Change-Id: I5fd9c5802d94e6715659486170c15dc7715bd214
diff --git a/apps/roadm/app/src/main/java/org/onosproject/roadm/RoadmPortViewMessageHandler.java b/apps/roadm/app/src/main/java/org/onosproject/roadm/RoadmPortViewMessageHandler.java
index 54d1a59..1a27fd3 100644
--- a/apps/roadm/app/src/main/java/org/onosproject/roadm/RoadmPortViewMessageHandler.java
+++ b/apps/roadm/app/src/main/java/org/onosproject/roadm/RoadmPortViewMessageHandler.java
@@ -25,10 +25,12 @@
 import org.onosproject.net.AnnotationKeys;
 import org.onosproject.net.ConnectPoint;
 import org.onosproject.net.DeviceId;
+import org.onosproject.net.Direction;
 import org.onosproject.net.ModulationScheme;
 import org.onosproject.net.OchSignal;
 import org.onosproject.net.Port;
 import org.onosproject.net.PortNumber;
+import org.onosproject.net.behaviour.PowerConfig;
 import org.onosproject.net.behaviour.protection.ProtectedTransportEndpointState;
 import org.onosproject.net.behaviour.protection.TransportEndpointState;
 import org.onosproject.net.device.DeviceService;
@@ -47,6 +49,7 @@
 import java.util.Comparator;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 import java.util.Set;
 
 import static org.onosproject.net.Device.Type;
@@ -84,6 +87,7 @@
     private static final String GRID = "grid";
     private static final String POWER_RANGE = "powerRange";
     private static final String CURRENT_POWER = "currentPower";
+    private static final String CURRENT_INPUT_POWER = "currentInputPower";
     private static final String TARGET_POWER = "targetPower";
     private static final String MODULATION = "modulation";
     private static final String HAS_TARGET_POWER = "hasTargetPower";
@@ -91,7 +95,7 @@
 
     private static final String[] COLUMN_IDS = {
             ID, REVERSE_PORT, TYPE, NAME, ENABLED, MIN_FREQ, MAX_FREQ, GRID, POWER_RANGE,
-            CURRENT_POWER, SERVICE_STATE, TARGET_POWER, MODULATION, HAS_TARGET_POWER
+            CURRENT_POWER, CURRENT_INPUT_POWER, SERVICE_STATE, TARGET_POWER, MODULATION, HAS_TARGET_POWER
     };
 
     private RoadmService roadmService;
@@ -159,6 +163,7 @@
                     .cell(GRID, RoadmUtil.asGHz(channelSpacing))
                     .cell(POWER_RANGE, getPowerRange(deviceId, portNum))
                     .cell(CURRENT_POWER, getCurrentPower(deviceId, portNum))
+                    .cell(CURRENT_INPUT_POWER, getCurrentInputPower(deviceId, portNum))
                     .cell(SERVICE_STATE, getPortServiceState(deviceId, portNum))
                     .cell(MODULATION, getModulation(deviceId, portNum))
                     .cell(TARGET_POWER, getTargetPower(deviceId, portNum))
@@ -217,6 +222,17 @@
             return RoadmUtil.objectToString(currentPower, RoadmUtil.UNKNOWN);
         }
 
+        // Returns the current input power as a string, Unknown if no value can be found.
+        private String getCurrentInputPower(DeviceId deviceId, PortNumber portNumber) {
+            PowerConfig powerConfig = deviceService.getDevice(deviceId).as(PowerConfig.class);
+            Optional<Double> currentInputPower = powerConfig.currentInputPower(portNumber, Direction.ALL);
+            Double inputPowerVal = null;
+            if (currentInputPower.isPresent()) {
+                inputPowerVal = currentInputPower.orElse(Double.MIN_VALUE);
+            }
+            return RoadmUtil.objectToString(inputPowerVal, RoadmUtil.UNKNOWN);
+        }
+
         // Returns target power as a string, Unknown if target power is expected but
         // cannot be found, N/A if port does not have configurable target power
         private String getTargetPower(DeviceId deviceId, PortNumber portNumber) {
diff --git a/apps/roadm/web/roadm-gui/projects/roadm-gui-lib/src/lib/port/port.component.css b/apps/roadm/web/roadm-gui/projects/roadm-gui-lib/src/lib/port/port.component.css
index 00e195a..6fb15ef 100644
--- a/apps/roadm/web/roadm-gui/projects/roadm-gui-lib/src/lib/port/port.component.css
+++ b/apps/roadm/web/roadm-gui/projects/roadm-gui-lib/src/lib/port/port.component.css
@@ -40,6 +40,11 @@
     text-transform: none;
 }
 
+#ov-roadm-port .table-header td {
+    text-transform: unset;
+    font-variant: none;
+}
+
 /* Editable Target Power field */
 #ov-roadm-port .editable span {
     width: 100%;
diff --git a/apps/roadm/web/roadm-gui/projects/roadm-gui-lib/src/lib/port/port.component.html b/apps/roadm/web/roadm-gui/projects/roadm-gui-lib/src/lib/port/port.component.html
index db86b57..1e16d57 100644
--- a/apps/roadm/web/roadm-gui/projects/roadm-gui-lib/src/lib/port/port.component.html
+++ b/apps/roadm/web/roadm-gui/projects/roadm-gui-lib/src/lib/port/port.component.html
@@ -62,20 +62,21 @@
         <div class="table-header">
             <table>
                 <tr>
-                    <td colId="id">Port ID</td>
-                    <td colId="reversePort">Reverse Port</td>
-                    <td colId="name">Name</td>
-                    <td colId="type">Type</td>
-                    <td colId="enabled">Enabled</td>
-                    <td colId="minFreq">Min Freq (THz)</td>
-                    <td colId="maxFreq">Max Freq (THz)</td>
-                    <td colId="grid">Grid (GHz)</td>
-                    <td colId="modulation">Modulation</td>
-                    <td colId="powerRange">Power Range (dBm)</td>
-                    <td colId="currentPower">Current Power (dBm)</td>
-                    <td colId="targetPower">Target Power (dBm)</td>
-                    <td colId="hasTargetPower">Has Target Power</td>
-                    <td colId="serviceState">Service State</td>
+                    <td colId="id">PORT ID</td>
+                    <td colId="reversePort">REVERSE PORT</td>
+                    <td colId="name">NAME</td>
+                    <td colId="type">TYPE</td>
+                    <td colId="enabled">ENABLED</td>
+                    <td colId="minFreq">MIN FREQ (THz)</td>
+                    <td colId="maxFreq">MAX FREQ (THz)</td>
+                    <td colId="grid">GRID (GHz)</td>
+                    <td colId="modulation">MODULATION</td>
+                    <td colId="powerRange">POWER RANGE (dBm)</td>
+                    <td colId="currentPower">CURRENT POWER (dBm)</td>
+                    <td colId="currentInputPower">CURRENT INPUT POWER (dBm)</td>
+                    <td colId="targetPower">TARGET POWER (dBm)</td>
+                    <td colId="hasTargetPower">HAS TARGET POWER</td>
+                    <td colId="serviceState">SERVICE STATE</td>
                 </tr>
             </table>
         </div>
@@ -105,10 +106,11 @@
                         </form>
                     </td>
                     <td [ngClass]="(isDelta() ? 'delta' : '')">{{port.powerRange}}</td>
-                    <td [ngClass]="(isDelta() ? 'delta' : '')">{{port.currentPower | number: '1.2-2'}}</td>
+                    <td [ngClass]="(isDelta() ? 'delta' : '')">{{convertNumber(port.currentPower) | number: '1.2-2'}}</td>
+                    <td [ngClass]="(isDelta() ? 'delta' : '')">{{convertNumber(port.currentInputPower) | number: '1.2-2'}}</td>
                     <td [ngClass]="(isDelta() ? 'delta' : '')">
                         <form [formGroup]="powerForm" (ngSubmit)="submitPower(devId, port.id)" *ngIf="port.type=='OCH'">
-                            <input type="number" step="any" style="width:50px" value="{{port.targetPower | number: '1.2-2'}}" formControlName="newPower" required>
+                            <input type="number" step="any" style="width:50px" value="{{convertNumber(port.targetPower) | number: '1.2-2'}}" formControlName="newPower" required>
                             <button type="submit">Submit</button>
                         </form>
                     </td>
diff --git a/apps/roadm/web/roadm-gui/projects/roadm-gui-lib/src/lib/port/port.component.ts b/apps/roadm/web/roadm-gui/projects/roadm-gui-lib/src/lib/port/port.component.ts
index 869c256..4a0d36e 100644
--- a/apps/roadm/web/roadm-gui/projects/roadm-gui-lib/src/lib/port/port.component.ts
+++ b/apps/roadm/web/roadm-gui/projects/roadm-gui-lib/src/lib/port/port.component.ts
@@ -230,4 +230,8 @@
             this.log.debug('The power config operation is successful!');
         }
     }
+
+    convertNumber(str: string): number {
+        return Number(str);
+    }
 }
diff --git a/web/gui2-fw-lib/projects/gui2-fw-lib/src/lib/widget/tablefilter.pipe.ts b/web/gui2-fw-lib/projects/gui2-fw-lib/src/lib/widget/tablefilter.pipe.ts
index 5ef048c..927f756 100644
--- a/web/gui2-fw-lib/projects/gui2-fw-lib/src/lib/widget/tablefilter.pipe.ts
+++ b/web/gui2-fw-lib/projects/gui2-fw-lib/src/lib/widget/tablefilter.pipe.ts
@@ -45,10 +45,10 @@
             if (tableDataFilter.queryBy === '$') {
                 const t1 = Object.values(it);
                 const t2 = Object.values(it).filter(value => {
-                               return (<string>value).toLowerCase().includes(queryStr);
+                               return JSON.stringify(value).toLowerCase().includes(queryStr);
                            });
                 return Object.values(it).filter(value => {
-                    return (<string>value).toLowerCase().includes(queryStr);
+                    return JSON.stringify(value).toLowerCase().includes(queryStr);
                 }).length > 0;
             } else {
                 return it[tableDataFilter.queryBy].toLowerCase().includes(queryStr);