From 0687e567c45ebb097eb4ffd7fcbd0c123f361c6d Mon Sep 17 00:00:00 2001 From: Elisha Oren Date: Wed, 18 Jan 2017 15:21:43 +0200 Subject: [PATCH] UI Changes according to Ofir requirements * Inventory Tab * small fixes and move creation button to table header * change Profile Byte to KB Change-Id: I50e389cb9a27ef5507d161beee9b17658fafcc91 Signed-off-by: Elisha Oren --- .../main/resources/cpeui/admin.controller.js | 5 - .../src/main/resources/cpeui/admin.tpl.html | 64 +++-- .../src/main/resources/cpeui/cpeui.tpl.html | 2 +- .../cpeui/dialogs/AddProfile.tpl.html | 8 +- .../cpeui/dialogs/EditVlans.tpl.html | 4 +- .../cpeui/dialogs/LinkEvcUni.tpl.html | 6 +- .../cpeui/dialogs/LinkIpvcUni.tpl.html | 2 +- .../cpeui/services/cpeui.services.js | 18 +- .../main/resources/cpeui/services/utils.js | 2 +- .../resources/cpeui/static/cpeui-custom.css | 26 +- .../main/resources/cpeui/tenant.controller.js | 48 +++- .../src/main/resources/cpeui/tenant.tpl.html | 262 +++++++++--------- .../resources/cpeui/tenantsTable.tpl.html | 44 +-- 13 files changed, 277 insertions(+), 214 deletions(-) diff --git a/dlux/cpeui/cpeui-module/src/main/resources/cpeui/admin.controller.js b/dlux/cpeui/cpeui-module/src/main/resources/cpeui/admin.controller.js index 91bad4d7..6a035d2a 100644 --- a/dlux/cpeui/cpeui-module/src/main/resources/cpeui/admin.controller.js +++ b/dlux/cpeui/cpeui-module/src/main/resources/cpeui/admin.controller.js @@ -26,11 +26,6 @@ define([ 'app/cpeui/cpeui.module' ], function(cpeui) { }); }); - $scope.OpenTenantPortal = function(tenant) { - $scope.currentTenent = tenant; - window.location = "#cpeui/tenant/" + tenant.name +"/"; - }; - $scope.DeleteTenant = function(tenantID) { CpeuiDialogs.confirm(function() { CpeuiSvc.deleteTenant(tenantID, function() { diff --git a/dlux/cpeui/cpeui-module/src/main/resources/cpeui/admin.tpl.html b/dlux/cpeui/cpeui-module/src/main/resources/cpeui/admin.tpl.html index a5d74790..e4d30226 100644 --- a/dlux/cpeui/cpeui-module/src/main/resources/cpeui/admin.tpl.html +++ b/dlux/cpeui/cpeui-module/src/main/resources/cpeui/admin.tpl.html @@ -1,5 +1,5 @@
-

Admin Page

+

Global Administration

UNIs
@@ -86,7 +100,7 @@ - + @@ -119,36 +133,38 @@
-
Profiles
+
Bandwidth Profiles
- + - - + + - - - - + + +
Profile NameBandwidth Profile Name Committed Information Rate (kb/s)Committed Burst Size (Bytes)Committed Burst Size (KB) + +
{{ profile['bw-profile'] }}{{ profile.cir }}{{ profile.cbs }} + {{ profile['bw-profile'] }}{{ profile.cir }}{{ profile.cbs }}
-
- Add Profile -
diff --git a/dlux/cpeui/cpeui-module/src/main/resources/cpeui/cpeui.tpl.html b/dlux/cpeui/cpeui-module/src/main/resources/cpeui/cpeui.tpl.html index 512aacdd..0b43d1db 100644 --- a/dlux/cpeui/cpeui-module/src/main/resources/cpeui/cpeui.tpl.html +++ b/dlux/cpeui/cpeui-module/src/main/resources/cpeui/cpeui.tpl.html @@ -1,3 +1,3 @@ -
+
diff --git a/dlux/cpeui/cpeui-module/src/main/resources/cpeui/dialogs/AddProfile.tpl.html b/dlux/cpeui/cpeui-module/src/main/resources/cpeui/dialogs/AddProfile.tpl.html index dd2355dd..e15ecf9a 100644 --- a/dlux/cpeui/cpeui-module/src/main/resources/cpeui/dialogs/AddProfile.tpl.html +++ b/dlux/cpeui/cpeui-module/src/main/resources/cpeui/dialogs/AddProfile.tpl.html @@ -1,7 +1,7 @@ - +
-

{{params.edit ? 'Edit' : 'Create'}} Profile

+

{{params.edit ? 'Edit' : 'Create'}} Bandwidth Profile

@@ -12,7 +12,7 @@
- +
This is required!
@@ -27,7 +27,7 @@
- Use default Committed Burst Size {{obj.cir ? ('(' + getDefualtCbs(obj.cir) + ' Bytes)') : ''}} + Use default Committed Burst Size {{obj.cir ? ('(' + getDefualtCbs(obj.cir) + ' KB)') : ''}} diff --git a/dlux/cpeui/cpeui-module/src/main/resources/cpeui/dialogs/EditVlans.tpl.html b/dlux/cpeui/cpeui-module/src/main/resources/cpeui/dialogs/EditVlans.tpl.html index 5f9ebfdc..b246ec54 100644 --- a/dlux/cpeui/cpeui-module/src/main/resources/cpeui/dialogs/EditVlans.tpl.html +++ b/dlux/cpeui/cpeui-module/src/main/resources/cpeui/dialogs/EditVlans.tpl.html @@ -17,14 +17,14 @@ {{ vlan }} - - diff --git a/dlux/cpeui/cpeui-module/src/main/resources/cpeui/dialogs/LinkEvcUni.tpl.html b/dlux/cpeui/cpeui-module/src/main/resources/cpeui/dialogs/LinkEvcUni.tpl.html index 01127936..05f1bc9c 100644 --- a/dlux/cpeui/cpeui-module/src/main/resources/cpeui/dialogs/LinkEvcUni.tpl.html +++ b/dlux/cpeui/cpeui-module/src/main/resources/cpeui/dialogs/LinkEvcUni.tpl.html @@ -33,7 +33,7 @@ - + - None - {{ profile['bw-profile'] }} (CIR: {{profile.cir}}, CBS: {{profile.cbs}}) @@ -52,14 +52,14 @@ {{ vlan }} - - diff --git a/dlux/cpeui/cpeui-module/src/main/resources/cpeui/dialogs/LinkIpvcUni.tpl.html b/dlux/cpeui/cpeui-module/src/main/resources/cpeui/dialogs/LinkIpvcUni.tpl.html index 96360a70..b4ee2c04 100644 --- a/dlux/cpeui/cpeui-module/src/main/resources/cpeui/dialogs/LinkIpvcUni.tpl.html +++ b/dlux/cpeui/cpeui-module/src/main/resources/cpeui/dialogs/LinkIpvcUni.tpl.html @@ -32,7 +32,7 @@ - + - None - {{ profile['bw-profile'] }} (CIR: {{profile.cir}}, CBS: {{profile.cbs}}) diff --git a/dlux/cpeui/cpeui-module/src/main/resources/cpeui/services/cpeui.services.js b/dlux/cpeui/cpeui-module/src/main/resources/cpeui/services/cpeui.services.js index 5a169b8f..8b14c594 100644 --- a/dlux/cpeui/cpeui-module/src/main/resources/cpeui/services/cpeui.services.js +++ b/dlux/cpeui/cpeui-module/src/main/resources/cpeui/services/cpeui.services.js @@ -1,6 +1,6 @@ define(['app/cpeui/cpeui.module'],function(cpeui) { - cpeui.factory('CpeuiSvc', function($http, Utils) { + cpeui.factory('CpeuiSvc', function($http, CpeUiUtils) { var baseUrl = "/restconf/config/mef-global:mef-global/"; var svc = {}; @@ -54,6 +54,11 @@ define(['app/cpeui/cpeui.module'],function(cpeui) { url:"/restconf/config/mef-global:mef-global/profiles/ingress-bwp-flows/" }).then(function successCallback(response) { if (callback != undefined) { + if (response.data["ingress-bwp-flows"]["bwp-flow"]){ + response.data["ingress-bwp-flows"]["bwp-flow"].forEach(function(p){ + p.cir = Math.round(p.cir/1024); + }); + } callback(response.data["ingress-bwp-flows"]["bwp-flow"]); } }, function errorCallback(response) { @@ -70,7 +75,7 @@ define(['app/cpeui/cpeui.module'],function(cpeui) { url:"/restconf/config/mef-global:mef-global/profiles/ingress-bwp-flows/", data: {"bwp-flow":{ "bw-profile" : name, - "cir" : cir, + "cir" : cir*1024, "cbs" : cbs }} }).then(function successCallback(response) { @@ -86,7 +91,7 @@ define(['app/cpeui/cpeui.module'],function(cpeui) { url:"/restconf/config/mef-global:mef-global/profiles/ingress-bwp-flows/bwp-flow/"+name, data: {"bwp-flow":{ "bw-profile": name, - cir: cir, + cir: cir*1024, cbs:cbs }} }).then(function successCallback(response) { @@ -153,7 +158,6 @@ define(['app/cpeui/cpeui.module'],function(cpeui) { svc.getCes = function(callback) { var ces; var operMap = {}; - $http({ method:'GET', url:"/restconf/operational/mef-topology:mef-topology/devices/" @@ -311,7 +315,7 @@ define(['app/cpeui/cpeui.module'],function(cpeui) { // IPVCs svc.addIpvc = function(ipvc, tenant, callback) { - var ipvcId = Utils.randomId(); + var ipvcId = CpeUiUtils.randomId(); var data = { "mef-service" : { "svc-id" : ipvcId, @@ -336,7 +340,7 @@ define(['app/cpeui/cpeui.module'],function(cpeui) { }; svc.addIpUni = function(uniid, ip_address, vlan, segmentation_id, callback) { - var ipUniId = Utils.randomId(); + var ipUniId = CpeUiUtils.randomId(); var data = {"ip-uni":{ "ip-uni-id": ipUniId, "ip-address": ip_address @@ -455,7 +459,7 @@ define(['app/cpeui/cpeui.module'],function(cpeui) { svc.addEvc = function(evc, evc_type, tenant, callback) { var uni_json = getJsonUnis(evc.unis); // preserved-vlan - var evcId = Utils.randomId(); + var evcId = CpeUiUtils.randomId(); var data = { "mef-service" : { "svc-id" : evcId, diff --git a/dlux/cpeui/cpeui-module/src/main/resources/cpeui/services/utils.js b/dlux/cpeui/cpeui-module/src/main/resources/cpeui/services/utils.js index 4dbe208f..ff10fa13 100644 --- a/dlux/cpeui/cpeui-module/src/main/resources/cpeui/services/utils.js +++ b/dlux/cpeui/cpeui-module/src/main/resources/cpeui/services/utils.js @@ -9,7 +9,7 @@ define([ 'app/cpeui/cpeui.module' ], function(cpeui) { }); }; - cpeui.factory('Utils', function() { + cpeui.factory('CpeUiUtils', function() { var svc = {}; svc.randomId = function () { diff --git a/dlux/cpeui/cpeui-module/src/main/resources/cpeui/static/cpeui-custom.css b/dlux/cpeui/cpeui-module/src/main/resources/cpeui/static/cpeui-custom.css index 2a57adbf..a717ae6e 100644 --- a/dlux/cpeui/cpeui-module/src/main/resources/cpeui/static/cpeui-custom.css +++ b/dlux/cpeui/cpeui-module/src/main/resources/cpeui/static/cpeui-custom.css @@ -5,15 +5,6 @@ DIV { /* color: white;*/ } -/** -#EVCs-tab { - background: #808285 none repeat scroll 0 0; - overflow-y:auto; - z-index:1000; - border-bottom:0; - padding: 0 5px; -} - */ .nestedTabs .nav-tabs li a { background-color: transparent !important; border-radius: 4px 4px 0 0 !important; @@ -84,9 +75,6 @@ MD-SELECT-MENU MD-OPTION div, MD-SELECT-VALUE SPAN, MD-SELECT-VALUE SPAN * { .layout-padding md-input-container { padding: 0 !important; } -.delete-tr { - width:1px; -} .minimal-width { white-space: nowrap; width: 1px; @@ -165,4 +153,16 @@ MD-TOOLBAR:active { .animate-if.ng-leave, .animate-if.ng-enter.ng-enter-active { height:0; -} \ No newline at end of file +} +.footable .multiline-headers TH { + /* text-align: center; */ + vertical-align: middle; +} +a.link { + text-decoration: underline; +} +TD a.link { + display:block; + width:100%; +} + diff --git a/dlux/cpeui/cpeui-module/src/main/resources/cpeui/tenant.controller.js b/dlux/cpeui/cpeui-module/src/main/resources/cpeui/tenant.controller.js index 75dcc49c..2c39d328 100644 --- a/dlux/cpeui/cpeui-module/src/main/resources/cpeui/tenant.controller.js +++ b/dlux/cpeui/cpeui-module/src/main/resources/cpeui/tenant.controller.js @@ -6,6 +6,7 @@ define([ 'app/cpeui/cpeui.module' ], function(cpeui) { $scope.unis = []; $scope.ces = []; $scope.ipvcs = []; + $scope.evcs = []; $scope.subnets = {}; $scope.profiles =[]; $scope.cesDisplayNames = {}; @@ -17,11 +18,12 @@ define([ 'app/cpeui/cpeui.module' ], function(cpeui) { }; var tabIndexs = { + "inventory" : 0, "L2" : 1, "L3" : 2, - "unis" : 3, + "unis" : 6, } - if (tabIndexs[$stateParams.tenantTabName]) { + if ($stateParams.tenantTabName in tabIndexs) { $scope.tab.tenantData = tabIndexs[$stateParams.tenantTabName]; } @@ -74,12 +76,37 @@ define([ 'app/cpeui/cpeui.module' ], function(cpeui) { $scope.evcs = services.filter(function(svc){ return svc.evc != undefined;}); $scope.ipvcs = services.filter(function(svc){ return svc.ipvc != undefined;}); $scope.updateUnis(); - console.log($scope.ipvcs); + function mapUniToService(uni, service) { + var uniObj = $scope.unis.filterByField('uni-id',uni['uni-id'])[0]; + if (!uniObj.vlanToService) { + uniObj.vlanToService = []; + } + uniObj.hasService = true; + if (uni['evc-uni-ce-vlans'] && uni['evc-uni-ce-vlans']['evc-uni-ce-vlan']){ + uni['evc-uni-ce-vlans']['evc-uni-ce-vlan'].forEach(function(v){ + uniObj.vlanToService.push({"vlan":v.vid, "svc":service}); + }); + } else { + if (uni["ip-uni-id"]) { + var ipuni = $scope.unis.filterByField('uni-id',uni['uni-id'])[0]; + ipuni["ip-unis"]["ip-uni"].forEach(function(ipu){ + if (ipu['ip-uni-id'] == uni["ip-uni-id"]){ + var vlan = ipu.vlan ? ipu.vlan : 0; + uniObj.vlanToService.push({"vlan":vlan, "svc":service}); + } + }); + } else { + uniObj.vlanToService.push({"vlan":0, "svc":service}); + } + } + } + $scope.ipvcs.forEach(function(e){ if (e.ipvc.unis != undefined && e.ipvc.unis.uni != undefined){ e.ipvc.unis.uni.forEach(function(u){ u.device = u['uni-id'].split(":")[u['uni-id'].split(":").length-2]; u.prettyID = u['uni-id'].split(":")[u['uni-id'].split(":").length-1]; + mapUniToService(u,e); }); } }); @@ -93,6 +120,7 @@ define([ 'app/cpeui/cpeui.module' ], function(cpeui) { } u.prettyID = u['uni-id'].split(":")[u['uni-id'].split(":").length - 1]; e.device2unis[$scope.unisMap[u['uni-id']].device].push(u); + mapUniToService(u,e); }); } }); @@ -102,6 +130,15 @@ define([ 'app/cpeui/cpeui.module' ], function(cpeui) { }); }; + $scope.doesAllUniHasService = function(ceUnis) { + for (var i=0 ; i< ceUnis.length; ++i) { + if (!ceUnis[i].hasService) { + return false; + } + } + return true; + } + $scope.title = function(str) { if (!str) { return str; @@ -316,6 +353,11 @@ define([ 'app/cpeui/cpeui.module' ], function(cpeui) { $scope.sortUni = function(uni) { return uni['uni-id']; }; + + $scope.isEmpty = function(obj){ + return angular.equals({}, obj); + } + init(); }); }); diff --git a/dlux/cpeui/cpeui-module/src/main/resources/cpeui/tenant.tpl.html b/dlux/cpeui/cpeui-module/src/main/resources/cpeui/tenant.tpl.html index acfe1158..570cd8b1 100644 --- a/dlux/cpeui/cpeui-module/src/main/resources/cpeui/tenant.tpl.html +++ b/dlux/cpeui/cpeui-module/src/main/resources/cpeui/tenant.tpl.html @@ -1,15 +1,29 @@
-

Tenant {{ curTenant }}

+

Tenant Administration - {{ curTenant }}

-
-
EVCs Table
+
+
Inventory
- - - - - - - + + + - - - - - - - - - -
EVC NameEVC IDNetwork NameSVC TypeEVC TypeTenantUNIsCPE-IDDevice NameUNIs
{{ item['name'] }}{{ item.evc['evc-id'] }}{{ networkNames[item['svc-id']] }}{{ item['svc-type'] }}{{ title(item.evc['evc-type']) }}{{ item['tenant-id'] }} - - + + + + + - - - -
+ - - - - - - - + + + - - - - - - - - + + - - - - - - + + + + + +
- - DeviceUNIRoleVLANs (click to edit)Profile - - Interface NameVLANService
{{ cesDisplayNames[ce] }}{{ uni.prettyID }}{{ uni['role'] }} - {{ uni.vlans.join(', ') }} {{item.evc['preserve-ce-vlan-id'] ? '(Preserved)' : ''}} - {{ uni['ingress-bw-profile'] }} - +
+ + + {{svcs.svc.name ? svcs.svc.name : svcs.svc['svc-id']}}
{{ uni.prettyID }}{{ uni['role'] }} - {{ uni.vlans.join(', ') }} {{item.evc['preserve-ce-vlan-id'] ? '(Preserved)' : ''}} - {{ uni['ingress-bw-profile'] }} - -
{{uni.prettyID}}{{$last ? '' : ', '}}
-
-
IPVCs Table
+
L3 Service Config
- - - - - + + + + - - - -
IPVC NameIPVC IDIPVC TypeTenantUNIsService IDService NameService Endpoints + +
{{ ipvc['name'] }} {{ ipvc.ipvc['ipvc-id'] }}{{ ipvc.ipvc['ipvc-type'] }}{{ ipvc['tenant-id'] }} - - + + - +
{{ ipvc['name'] }} + - - - - + + - - + + + - - - + + - - + + +
- - DeviceUNIIP AddressDevice NamePort VlanProfileI/F AddressBandwidth Profile
{{ cesDisplayNames[ipuni.device] }}{{ ipuni.prettyID }}{{serviceIpuni['ip-address']}}{{ cesDisplayNames[ipuni.device] }}{{ ipuni.prettyID }} {{serviceIpuni.vlan}}{{ ipuni['ingress-bw-profile'] }}{{serviceIpuni['ip-address']}}{{ ipuni['ingress-bw-profile'] }}
+ + +