change roadm app to support EDFA/ROADM/OPS devices, add OPS PowerConfig/LambdaQuery behaviour
Change-Id: Ieb6de727e766fdeb63740c0704f83fd11e44b935
diff --git a/apps/roadm/src/main/resources/app/view/roadmPort/roadmPort.css b/apps/roadm/src/main/resources/app/view/roadmPort/roadmPort.css
index 511b2fc..6be2601 100644
--- a/apps/roadm/src/main/resources/app/view/roadmPort/roadmPort.css
+++ b/apps/roadm/src/main/resources/app/view/roadmPort/roadmPort.css
@@ -67,3 +67,22 @@
font-size: 10px;
width: 180px;
}
+
+#ov-roadm-port .mode-select .mode-title {
+ margin: 0;
+ font-weight:bold;
+ font-size: 16px;
+}
+
+#ov-roadm-port .mode-select .mode-fail {
+ color: red;
+ font-size: 10px;
+}
+
+#ov-roadm-port .mode-select select {
+ width: 150px;
+}
+
+#ov-roadm-port .mode-select button {
+ width: 100px;
+}
\ No newline at end of file
diff --git a/apps/roadm/src/main/resources/app/view/roadmPort/roadmPort.html b/apps/roadm/src/main/resources/app/view/roadmPort/roadmPort.html
index 1e2affd..9ef475b 100644
--- a/apps/roadm/src/main/resources/app/view/roadmPort/roadmPort.html
+++ b/apps/roadm/src/main/resources/app/view/roadmPort/roadmPort.html
@@ -1,5 +1,5 @@
<!-- partial HTML -->
-<div id="ov-roadm-port" class="less-gap">
+<div id="ov-roadm-port" class="less-gap" ng-init="queryShowItems()">
<div class="tabular-header">
<h2>Ports for Optical Device {{devId}} ({{tableData.length}} total)</h2>
@@ -18,7 +18,7 @@
<div class="active"
icon icon-id="flowTable" icon-size="42"
tooltip tt-msg="flowTip"
- ng-click="nav('roadmFlow')"></div>
+ ng-click="nav('roadmFlow')" ng-show="showFlowIcon"></div>
<div class="current-view"
icon icon-id="portTable" icon-size="42"
@@ -27,7 +27,6 @@
</div>
<div class="summary-list" onos-table-resize>
-
<div class="table-header" onos-sortable-header>
<table>
<tr>
@@ -40,7 +39,8 @@
<td colId="grid" sortable>Grid <span class="units">(GHz)</span> </td>
<td colId="portMac" sortable>Input Power Range </td>
<td colId="currentPower">Current Power <span class="units">(0.01dBm)</span> </td>
- <td colId="targetPower" col-width="200px">Target Power <span class="units">(0.01dBm)</span> </td>
+ <td colId="serviceState" ng-show="showServiceState">Protection Status </td>
+ <td colId="targetPower" col-width="200px" ng-show="showTargetPower">Target Power <span class="units">(0.01dBm)</span> </td>
</tr>
</table>
</div>
@@ -48,7 +48,7 @@
<div class="table-body">
<table>
<tr ng-if="!tableData.length" class="no-data">
- <td colspan="10">
+ <td colspan="11">
{{annots.no_rows_msg}}
</td>
</tr>
@@ -64,10 +64,17 @@
<td>{{item.grid}}</td>
<td>{{item.inputPowerRange}}</td>
<td>{{item.currentPower}}</td>
- <td class="editable" roadm-power="item" roadm-set-power="setPortPower(port, targetVal, cb)"></td>
+ <td ng-show="showServiceState">{{item.serviceState}}</td>
+ <td ng-show="showTargetPower" class="editable" roadm-power="item" roadm-set-power="setPortPower(port, targetVal, cb)"></td>
</tr>
</table>
+ <div class="mode-select" ng-show="showServiceState">
+ <hr/>
+ <label class="mode-title">Protection Mode:</label>
+ <select ng-model="opsModeType" ng-options="mode.type for mode in opsModeTypes"></select>
+ <button ng-click="changeOpsMode()" title="Click to apply selected protection mode">Apply</button>
+ <label class="mode-fail" ng-if="changeModeFail">{{changeModeFailMsg}}</label>
+ </div>
</div>
-
</div>
</div>
diff --git a/apps/roadm/src/main/resources/app/view/roadmPort/roadmPort.js b/apps/roadm/src/main/resources/app/view/roadmPort/roadmPort.js
index 447ac7d..128b72c 100644
--- a/apps/roadm/src/main/resources/app/view/roadmPort/roadmPort.js
+++ b/apps/roadm/src/main/resources/app/view/roadmPort/roadmPort.js
@@ -4,6 +4,10 @@
var SET_TARGET_POWER_REQ = "roadmSetTargetPowerRequest";
var SET_TARGET_POWER_RESP = "roadmSetTargetPowerResponse";
+ var SHOW_ITEMS_REQ = "roadmShowPortItemsRequest";
+ var SHOW_ITEMS_RESP = "roadmShowPortItemsResponse";
+ var SET_OPS_MODE_REQ = "roadmSetOpsModeRequest";
+ var SET_OPS_MODE_RESP = "roadmSetOpsModeResponse";
// injected references
var $log, $scope, $location, fs, tbs, wss, ns;
@@ -13,7 +17,7 @@
function setPortPower(port, targetVal, cb) {
var id = port.id;
portCbTable[id] = cb;
- wss.sendEvent("roadmSetTargetPowerRequest",
+ wss.sendEvent(SET_TARGET_POWER_REQ,
{
devId: $scope.devId,
id: port.id,
@@ -25,6 +29,36 @@
portCbTable[data.id](data.valid, data.message);
}
+ function queryShowItems() {
+ wss.sendEvent(SHOW_ITEMS_REQ,
+ {
+ devId: $scope.devId,
+ });
+ }
+
+ function showItemsCb(data) {
+ $scope.showTargetPower = data.showTargetPower;
+ $scope.showServiceState = data.showServiceState;
+ $scope.showFlowIcon = data.showFlowIcon;
+ $scope.$apply();
+ }
+
+ function changeOpsMode() {
+ wss.sendEvent(SET_OPS_MODE_REQ,
+ {
+ devId: $scope.devId,
+ index: $scope.opsModeType.index
+ });
+ }
+
+ function changeOpsModeCb(data) {
+ $scope.changeModeFail = !data.valid;
+ if ($scope.changeModeFail) {
+ $scope.changeModeFailMsg = data.message;
+ }
+ $scope.$apply();
+ }
+
// check if value is an integer
function isInteger(val) {
var INTEGER_REGEXP = /^\-?\d+$/;
@@ -51,11 +85,18 @@
$scope.deviceTip = 'Show device table';
$scope.flowTip = 'Show flow view for this device';
- $scope.groupTip = 'Show group view for this device';
- $scope.meterTip = 'Show meter view for selected device';
+ $scope.portTip = 'Show port view for this device';
+ $scope.opsModeTypes = [
+ {index: 0, type: "Auto"},
+ {index: 1, type: "Primary"},
+ {index: 2, type: "Secondary"}
+ ];
+ $scope.opsModeType = $scope.opsModeTypes[0];//auto mode
var handlers = {};
handlers[SET_TARGET_POWER_RESP] = portPowerCb;
+ handlers[SHOW_ITEMS_RESP] = showItemsCb;
+ handlers[SET_OPS_MODE_RESP] = changeOpsModeCb;
wss.bindHandlers(handlers);
params = $location.search();
@@ -70,9 +111,11 @@
});
$scope.setPortPower = setPortPower;
+ $scope.queryShowItems = queryShowItems;
+ $scope.changeOpsMode = changeOpsMode;
$scope.setTargetPower = function (port, targetVal) {
- wss.sendEvent("roadmSetTargetPowerRequest",
+ wss.sendEvent(SET_TARGET_POWER_REQ,
{
devId: $scope.devId,
id: port.id,