1 define([ 'app/cpeui/cpeui.module' ], function(cpeui) {
2 cpeui.register.controller('OpenTenantCtrl', function($scope, CpeuiSvc, CpeuiDialogs, $stateParams) {
4 $scope.curTenant = $stateParams.tenantid;
5 $scope.unisTables = {};
9 $scope.cesDisplayNames = {};
11 $scope.networkNames = {};
12 $scope.expandFlags = {
22 if (tabIndexs[$stateParams.tenantTabName]) {
23 $scope.tab.tenantData = tabIndexs[$stateParams.tenantTabName];
27 $scope.updateUnis(function(unis){
28 CpeuiSvc.getCes(function(ces) {
29 $scope.ces = ces.filter(function(item) {
31 var filteredUnis = unis.filterByField('device', item["dev-id"]);
32 filteredUnis = filteredUnis.filterByField('prettyID', 'br-int', true);
33 filteredUnis = filteredUnis.filter(function(i){return !(i.prettyID && i.prettyID.startsWith('tun'));});
35 return (filteredUnis.length);
37 ces.forEach(function(ce){
38 $scope.cesDisplayNames[ce['dev-id']] = ce['device-name'] ? ce['device-name'] : ce['dev-id'];
40 $scope.updateEvcView();
44 CpeuiSvc.getNetworkNames(function(networks){
45 networks.forEach(function(net){
46 $scope.networkNames[net.uuid] = net.name;
51 $scope.updateUnis = function(callback) {
52 CpeuiSvc.getUnis(function(unis) {
53 unis.forEach(function(u) {
54 u.prettyID = u['uni-id'].split(":")[u['uni-id'].split(":").length - 1];
55 $scope.unisMap[u['uni-id']] = u;
57 $scope.unis = unis.filter(function(u){return u["tenant-id"] == $scope.curTenant;});
60 callback($scope.unis);
65 $scope.updateEvcView = function() {
66 CpeuiSvc.getServices($scope.curTenant, function(services) {
68 $scope.evcs = services.filter(function(svc){ return svc.evc != undefined;});
69 $scope.ipvcs = services.filter(function(svc){ return svc.ipvc != undefined;});
71 console.log($scope.ipvcs);
72 $scope.ipvcs.forEach(function(e){
73 if (e.ipvc.unis != undefined && e.ipvc.unis.uni != undefined){
74 e.ipvc.unis.uni.forEach(function(u){
75 u.device = u['uni-id'].split(":")[u['uni-id'].split(":").length-2];
76 u.prettyID = u['uni-id'].split(":")[u['uni-id'].split(":").length-1];
80 $scope.evcs.forEach(function(e){
81 e.isTree = (e.evc['evc-type'] == 'rooted-multipoint');
83 if (e.evc.unis != undefined && e.evc.unis.uni != undefined){
84 e.evc.unis.uni.forEach(function(u){
85 if (e.device2unis[$scope.unisMap[u['uni-id']].device] == undefined){
86 e.device2unis[$scope.unisMap[u['uni-id']].device] = [];
88 u.prettyID = u['uni-id'].split(":")[u['uni-id'].split(":").length - 1];
89 e.device2unis[$scope.unisMap[u['uni-id']].device].push(u);
96 $scope.title = function(str) {
100 return str.split('-').map(function(s) {
101 return s[0].toUpperCase() + s.slice(1);
105 $scope.svcTypes = [ 'epl', 'evpl', 'eplan', 'evplan', 'eptree', 'evptree' ]
107 'epl' : 'point-to-point',
108 'evpl' : 'point-to-point',
109 'eplan' : 'multipoint-to-multipoint',
110 'evplan' : 'multipoint-to-multipoint',
111 'eptree' : 'rooted-multipoint',
112 'evptree' : 'rooted-multipoint'
115 var addEvcController = function($scope, $mdDialog) {
116 $scope.validate = function(form) {
117 form.svc_type.$setTouched(); // patch because angular bug http://stackoverflow.com/questions/36138442/error-not-showing-for-angular-material-md-select
123 $scope.evcDialog = new CpeuiDialogs.Dialog('AddEvc', {}, function(obj) {
124 CpeuiSvc.addEvc(obj, evcTypes[obj.svc_type], $scope.curTenant, function() {
125 $scope.updateEvcView();
127 }, addEvcController);
129 $scope.ipvcDialog = new CpeuiDialogs.Dialog('AddIpvc', {}, function(obj) {
130 CpeuiSvc.addIpvc(obj, $scope.curTenant, function() {
131 $scope.updateEvcView();
135 $scope.linkIpvcUniDialog = new CpeuiDialogs.Dialog('LinkIpvcUni', {},
137 CpeuiSvc.addIpvcUni(obj.svc_id, obj.uni['uni-id'], obj.ip_uni,
139 $scope.updateEvcView();
143 var ipUniDialogController = function($scope, $mdDialog) {
144 $scope.hasVlans = false;
145 if ($scope.params.uni['ip-unis'] && $scope.params.uni['ip-unis']['ip-uni']) {
146 var ipunis = $scope.params.uni['ip-unis']['ip-uni'];
147 for (i = 0; i < ipunis.length; i++) {
149 $scope.hasVlans = true;
155 $scope.ipUniDialog = new CpeuiDialogs.Dialog('AddIpUni', {}, function(obj) {
156 CpeuiSvc.addIpUni(obj['uni-id'], obj['ip-uni-id'], obj['ip-address'], obj.vlan, obj.subnets, function() {
157 var uni = $scope.unis.filterByField('uni-id',obj['uni-id'])[0];
158 if (uni['ip-unis'] == undefined || uni['ip-unis']['ip-uni'] == undefined){
159 uni['ip-unis'] = {'ip-uni':[]};
161 uni['ip-unis']['ip-uni'].push(obj);
163 }, ipUniDialogController);
165 $scope.openIpUniDialog = function(event,uni){
166 if (uni['ip-unis'] && (uni['ip-unis']['ip-uni'] != undefined)){
167 var ipunis = uni['ip-unis']['ip-uni'];
168 for (i = 0; i < ipunis.length; i++) {
169 if (!ipunis[i].vlan){
170 CpeuiDialogs.alert("Error","You Can't have more then one ip-uni with no vlan. please remove the non-vlan ip-uni before adding new.")
175 $scope.ipUniDialog.show(event,{'uniid':uni['uni-id'], uni:uni})
178 $scope.ipUniSubnetDialog = new CpeuiDialogs.Dialog('AddIpUniSubnet', {}, function(obj) {
179 CpeuiSvc.addIpUniSubnet(obj.uniid, obj.ipuniid, obj.subnet, obj.gateway, function() {
180 CpeuiSvc.getIpUniSubnets(obj.uniid, obj.ipuniid, function(subnets) {
181 $scope.unis.filterByField('uni-id',obj.uniid)[0]['ip-unis']['ip-uni'].filterByField('ip-uni-id',obj.ipuniid)[0].subnets = {subnet:subnets};
186 $scope.deleteIpUni = function(uniid, ipuni_id) {
187 CpeuiDialogs.confirm(function() {
188 CpeuiSvc.deleteIpUni(uniid, ipuni_id, function() {
189 $scope.updateEvcView(); // TODO update unis only
193 $scope.deleteIpvcUni = function(svc_id, uni_id) {
194 CpeuiDialogs.confirm(function() {
195 CpeuiSvc.deleteIpvcUni(svc_id, uni_id, function() {
196 $scope.updateEvcView();
200 $scope.getMefInterfaceIpvc = function(uni_id,ipuni_id){
201 var uni = $scope.unis.filterByField('uni-id',uni_id)[0];
202 if ((uni == undefined) || (uni['ip-unis'] == undefined) || (uni['ip-unis']['ip-uni'] == undefined)) {
205 return uni['ip-unis']['ip-uni'].filterByField('ip-uni-id',ipuni_id)[0];
208 $scope.deleteIpUniSubnet = function(uniid, ipuni_id, subnet) {
209 CpeuiDialogs.confirm(function() {
210 CpeuiSvc.deleteIpUniSubnet(uniid, ipuni_id, subnet, function() {
211 $scope.updateEvcView(); // TODO update unis only
216 $scope.deleteEvc = function(svcid) {
217 CpeuiDialogs.confirm(function() {
218 CpeuiSvc.removeEvc(svcid, function() {
219 $scope.updateEvcView();
224 $scope.deleteEvcUni = function(svc_id, uni_id) {
225 CpeuiDialogs.confirm(function() {
226 CpeuiSvc.deleteEvcUni(svc_id, uni_id, function() {
227 $scope.updateEvcView();
232 var linkEvcUniController = function($scope, $mdDialog, params) {
233 $scope.params = params;
237 $scope.deleteVlan = function(vlan) {
238 $scope.obj.vlans.splice($scope.obj.vlans.indexOf(vlan), 1);
240 $scope.addVlan = function(vlan) {
241 if ($scope.obj.vlans.indexOf(vlan) == -1) {
242 $scope.obj.vlans.push(vlan);
245 $('#vlan_input').val(undefined);
248 $scope.filterUsedUnis = function(evc){
250 if (u.prettyID == 'br-int') {
253 if (u.prettyID && u.prettyID.startsWith('tun')) {
256 if (evc.evc == undefined || evc.evc.unis.uni == undefined){
259 return evc.evc.unis.uni.filterByField('uni-id',u['uni-id']).length == 0;
264 $scope.linkEvcUniDialog = new CpeuiDialogs.Dialog('LinkEvcUni', {},
269 CpeuiSvc.addEvcUni(obj.svc_id, obj.uni_id, obj.role, obj.vlans,
271 $scope.updateEvcView();
273 }, linkEvcUniController);
275 var editVlanController = function($scope, $mdDialog, params) {
276 $scope.params = params;
278 $scope.deleteVlan = function(svc_id, uni_id, vlan, allvlans) {
279 CpeuiSvc.deleteVlan(svc_id, uni_id, vlan, function() {
280 allvlans.splice(allvlans.indexOf(vlan), 1)
283 $scope.addVlan = function(svc_id, uni_id, vlan, allvlans) {
284 if (allvlans == undefined) {
287 if (allvlans.indexOf(vlan) == -1) {
288 CpeuiSvc.addVlan(svc_id, uni_id, vlan, function() {
292 $('#vlan_input').val(undefined);
296 $scope.editVlanDialog = new CpeuiDialogs.Dialog('EditVlans', {}, undefined, editVlanController);
298 $scope.sortEvc = function(evc) {
299 return evc.evc['evc-id'];
301 $scope.sortUni = function(uni) {
302 return uni['uni-id'];
304 $scope.sortIpvc = function(ipvc) {
305 return ipvc['ipvc-id'];