· 9 years ago · Nov 18, 2016, 09:30 AM
1define('AdminManageIntegrationsView', ['jquery',
2 'underscore',
3 'backbone',
4 'handlebars',
5 'CloudHelpers',
6 'CloudApiManager',
7 'AdminIntegrationsCollection',
8 'AdminManageDiscoverNodesCollection',
9 'AdminManageDiscoverEntityCollection',
10 'AdminManageDiscoverNodesModel',
11 'AdminManageDiscoverEntityModel',
12 'AdminManageDiscoverServicesModel',
13 'AdminManageDiscoverServicesCollection',
14 'AdminManageIntegrationsServiceView',
15 'AdminManageIntegrationsWorkflowView',
16 'text!templates/admin-manage-integrations-tpl.html',
17 'text!templates/admin-manage-Serviceintegrations-tpl.html',
18 'text!templates/admin-manage-integrations-discoverData-tpl.html',
19 'text!templates/admin-emptyData-tpl.html',
20 'text!templates/manageworkflow/admin-manage-integrations-manageWorkflow-tpl.html',
21 'ConfigurationModel',
22 'backbone.poller',
23 'bootBox',
24 'spinner',
25 'AdminDetailsView'
26], function($, _, Backbone, handlebars, helpers, CloudApiManager, AdminIntegrationsCollection, AdminManageDiscoverNodesCollection, AdminManageDiscoverEntityCollection,
27 AdminManageDiscoverNodesModel, AdminManageDiscoverEntityModel, AdminManageDiscoverServicesModel, AdminManageDiscoverServicesCollection,
28 AdminManageIntegrationsServiceView, AdminManageIntegrationsWorkflowView, manageIntegrationsTemplate, manageIntegrationsServiceTemplate,
29 discoverTemplate, emptyTemplate, manageWorkflowTemplates, ConfigurationModel, Poller, bootBox, Spinner, AdminDetailsView) {
30 var AdminManageIntegrationsView;
31 AdminManageIntegrationsView = Backbone.View.extend({
32 events: {
33 'click .integrations-breadCrumb-home': 'gotoIntegrationsPage',
34 'click #editdetailsbtn': 'toggleEditandSave',
35 'click #cancelEditConnBtn': 'cancelEditConnection',
36 'click #savedetailsbtn': 'toggleSaveandEdit',
37 'click #discoverObjectList a': 'getSelectedEntityData',
38 'click #objectsbtn': 'showObjectsPanel',
39 'click #servicesbtn': 'showServicesPanel',
40 'click #servicespanel section a': 'getSelectedServiceEntity',
41 'click #discoveredUCSDService tbody tr': 'gotoManageServices',
42 'click #discoveredCliqrService tbody tr': 'gotoManageServices',
43 'click #renderManageWrokflowData tbody tr': 'gotoManageWorkflows',
44 'click #importConn': 'importConnection',
45 'click #deleteConn': 'deleteConnection',
46 'click .error-message-holder': 'clearError',
47 'change .selectChange': 'selectChange',
48 'click #testConn': 'testConnection',
49 'click #showLog': 'showLog',
50 'click #showLog-form-close': 'closeShowLogPnl',
51 'click #showLogRefresh': 'showLogIteration',
52 'click #generateService': 'generateService',
53 'click #generateServiceVariant': 'generateServiceVariant',
54 'click #generateTemplateService': 'generateServiceTemplate',
55 'click #generateTemplateServiceVariant': 'generateServiceTemplateVariant',
56 'click #generateCatalogUCSDService': 'generateUCSDService',
57 'click #generateCatalogUCSDServiceVariant': 'generateUCSDServiceVariant',
58 'click #generateTemplateUCSDService': 'generateUCSDService',
59 'click #generateTemplateUCSDServiceVariant': 'generateUCSDServiceVariant',
60 'click #getDetails': 'getEntityDetails',
61 'click #showDefaultInfo':'showCertificateInfo',
62 'click #UCSDAppProfileDetails':'showDetailsMenu',
63 'click #BmaImageDetails':'showDetailsMenu',
64 'click #VMEntityDetails':'showDetailsMenu',
65 'click #workFlowEntityDetails':'showDetailsMenu',
66 'click #defaultEntityDetails':'showDetailsMenu',
67 'click #cloudEntityDetails':'showDetailsMenu',
68 'click #deployEntityDetails':'showDetailsMenu',
69 'click #activationProfiles':'showDetailsMenu',
70 'click #groupEntityDetails':'showDetailsMenu',
71 'click #containerEntityDetails':'showDetailsMenu',
72 'click #userEntityDetails':'showDetailsMenu',
73 'click #vdcEntityDetails':'showDetailsMenu',
74 'click #imageEntityDetails':'showDetailsMenu',
75 'click #catalogEntityDetails':'showServiceMenu',
76 'click #templateEntityDetails':'showTemplateServiceMenu',
77 'click #defaultCliqrService':'showCliqrMenu',
78 'click #applicationProfileMenu':'showCliqrTemplateMenu'
79 },
80 initialize: function(attrbs) {
81 var self = this;
82 this.poller = null;
83 this.spinner = null;
84 this.adminCollection = new AdminIntegrationsCollection();
85 this.nodesCollection = new AdminManageDiscoverNodesCollection();
86 this.logs = new Backbone.Model();
87 this.logs.bind('change', this.reloadLogs);
88 //this.parentCollectionRef = attrbs.collection.models;
89 this.parentCollectionRef = "";
90 this.initialColum = "";
91 this.adminCollection.fetch({
92 reset: true,
93 async: false,
94 success: function(collection, response) {
95 self.parentCollectionRef = collection.models;
96 },
97 error: function(collection, response) {
98 console.log(response);
99 }
100 });
101 this.uniqueIdentifierName = attrbs.name;
102 this.providerName = attrbs.providerName;
103 this.providerType = '';
104 this.data = this.getModelData();
105 this.detailsData = this.constructJSONData(this.data);
106 this.providerImage = this.getProviderImage();
107 this.discoverNodesData = this.getNodesData();
108 this.discoveredEntityResult = this.getDiscoverEntityData();
109 this.template = handlebars.compile(manageIntegrationsTemplate);
110 this.discoverTemplate = handlebars.compile(discoverTemplate);
111 this.emptyTemplate = handlebars.compile(discoverTemplate);
112 this.workflowTemplate = handlebars.compile(manageWorkflowTemplates);
113 this.entity_data = "";
114 this.initialServiceData = "";
115 this.serviceEntityData = "";
116 this.skipValidCheckBox = "";
117 this.syncUserCheckBox = "";
118 this.baseTemplateData = "";
119 this.enablePollerCheckbox = "";
120 this.workflowData = "";
121 this.templData = "";
122 this.baseTemplateMap = [];
123 this.serviceLabelCount = "";
124 this.detailEntityType = "";
125 this.entityRowId = "";
126 this.serviceEntityRow = "";
127 this.serviceEntityName = "";
128 this.serviceEntityType = "";
129 this.serviceSelectValue = "";
130 this.serviceSelectId = "";
131 this.cliqrName = "";
132 this.cliqrSelectValue="";
133 this.cliqrSelectId = "";
134 this.cliqrTempName = "";
135 this.cliqrTempSelectValue="";
136 this.cliqrTempSelectId = "";
137 _.bindAll(this, 'cleanup');
138 this.geti18nObjectCreation();
139 this.render();
140 this.serviceTemplate = handlebars.compile(manageIntegrationsServiceTemplate);
141 this.updateConnectionStatus();
142 this.showHideManageWorkflow(this.providerName);
143 $("#discoveredEntity").scroll({
144 name: self.uniqueIdentifierName,
145 provider: self.providerName,
146 headerData: self.getEntityColumnNames,
147 initialBaseTempData: self.getBaseTemplateForCliqr()
148 }, self.getScroll);
149 },
150 getScroll: function(event) {
151 var self = this;
152 var length = $("#table-Customfixed tbody tr").length;
153 var offset = 0;
154 var limit = 10;
155 var infiniteList = $('#discoveredEntity');
156 if (infiniteList.scrollTop() + infiniteList.innerHeight() >= infiniteList.prop('scrollHeight')) {
157 offset = length;
158 var last_elem = $('#table-Customfixed tbody tr:last');
159 //$( "#table-Customfixed tbody tr:last" ).after(temp);
160 var scroll_element = $('.infiniteScroll');
161 var val = scroll_element[0].getElementsByClassName('badge')[0].innerHTML;
162 var totalRecords = Number(val);
163 if (length === totalRecords)
164 return;
165 //console.log(scroll_element.get(0).getAttribute('data-id'));
166 //$('#discoverObjectList a').trigger("click");
167
168 var param1 = scroll_element.get(0).getAttribute('data-id');
169 var param2 = scroll_element.get(0).getAttribute('data-datatableID');
170 var selectedEntity = new AdminManageDiscoverEntityCollection();
171 selectedEntity.multiSelect = false;
172 selectedEntity.shortName = event.data.name;
173 selectedEntity.provider = event.data.provider;
174 selectedEntity.entity = param1;
175 selectedEntity.datatableID = param2;
176 selectedEntity.qfilter.sortBy = 'uniqueidentifier';
177 selectedEntity.qfilter.startRow = offset;
178 selectedEntity.qfilter.lastQuery = '*';
179 selectedEntity.fetch({
180 reset: true,
181 sort: true,
182 async: false,
183 success: function(collection, response) {
184 if (collection.length === 0) {
185 //self.entity_data = "No Data Available";
186 console.log("No Data Available");
187 } else {
188 //self.entity_data = collection;
189 //console.log(collection);
190
191 var bodyContent = "";
192 var attrArray = Object.keys(event.data.headerData(param1));
193 var tableBodyData = collection.models.map(function(tempObject) {
194 var returnObject = {};
195 for (var idx = 0; idx < attrArray.length; idx++) {
196 returnObject[attrArray[idx]] = tempObject.attributes[attrArray[idx]];
197 }
198 return returnObject;
199 }).forEach(function(columnValue, index) {
200 var tempId = collection.models[index].attributes.UUID;
201 var name = collection.models[index].attributes.baseTemplateName;
202 var templateOptions = "";
203 templateOptions = templateOptions + '<option value="' + name + '">' + name + '</option>';
204 $.each(event.data.initialBaseTempData, function(key, value) {
205 if (value.templateName !== name) {
206 templateOptions = templateOptions + '<option value="' + value.templateName + '">' + value.templateName + '</option>';
207 }
208 });
209 var selectBoxForTemplate = '<select name="baseTemplateSelectBox" class="baseTemplateSelectBox">' + templateOptions + '</select>';
210 var tableRow = "<tr>";
211 for (var columnIndex = 0; columnIndex < attrArray.length; columnIndex++) {
212 if (attrArray[columnIndex] == 'settings') {
213 tableRow += "<td style='text-align:center' class='templateAction' data-uniqueId='" + tempId + "'>" + settingsIcon + "</td>";
214 } else if (attrArray[columnIndex] == 'selectBaseTemplate') {
215 tableRow += "<td>" + selectBoxForTemplate + "</td>";
216 } else {
217 tableRow += "<td>" + columnValue[attrArray[columnIndex]] + "</td>";
218 }
219 }
220 tableRow += "</tr>";
221 bodyContent = bodyContent + tableRow;
222 });
223 //console.log(bodyContent);
224 $("#table-Customfixed tbody tr:last").after(bodyContent);
225
226 }
227 //genHtmlContent = constructEntityDataTemplate();
228 },
229 error: function(collection, response) {
230 console.log('in view error');
231 console.log(response);
232 }
233 });
234 }
235 },
236
237 getEntityDetails: function(e) {
238 var self = this;
239 var scroll_element = $('.infiniteScroll');
240 var type_param = scroll_element.get(0).getAttribute('data-id');
241 self.detailEntityType = type_param;
242 //var $row = $(e.target).closest('tr').get(0);
243 //var selectId = $row.querySelector(".templateAction").getAttribute('data-uniqueid');
244 var selectId = self.entityRowId;
245 var param2 = "cloudEntityRecords";
246 var recordLength = $("#table-Customfixed tbody tr").length;
247 var entityDetails = new AdminManageDiscoverEntityCollection();
248 entityDetails.multiSelect = false;
249 entityDetails.shortName = self.uniqueIdentifierName;
250 entityDetails.provider = self.providerName;
251 entityDetails.entity = type_param;
252 entityDetails.datatableID = param2;
253 entityDetails.qfilter.recordSize = recordLength;
254 entityDetails.qfilter.sortBy = 'uniqueidentifier';
255 entityDetails.qfilter.lastQuery = '*';
256 entityDetails.fetch({
257 reset: true,
258 sort: true,
259 async: false,
260 success: function(collection, response) {
261 self.AdminDetailsView = new AdminDetailsView({
262 el: $('#integrations'),
263 data: collection.models,
264 recordData: collection,
265 identifier: selectId,
266 sName: self.uniqueIdentifierName,
267 pName: self.providerName,
268 providerType: self.providerType,
269 detailType: self.detailEntityType
270 });
271 },
272 error: function(collection, response) {
273 console.log('in view error');
274 console.log(response);
275 }
276 });
277
278 },
279 getCommonDataFromCollection: function() {
280 var self = this;
281 var collection_data = "";
282 var scroll_element = $('.infiniteScroll');
283 var type_param = scroll_element.get(0).getAttribute('data-id');
284 var param2 = "cloudEntityRecords";
285 var recordLength = $("#table-Customfixed tbody tr").length;
286 var datCollection = new AdminManageDiscoverEntityCollection();
287 datCollection.multiSelect = false;
288 datCollection.shortName = self.uniqueIdentifierName;
289 datCollection.provider = self.providerName;
290 datCollection.entity = type_param;
291 datCollection.datatableID = param2;
292 datCollection.qfilter.recordSize = recordLength;
293 datCollection.qfilter.sortBy = 'uniqueidentifier';
294 datCollection.qfilter.lastQuery = '*';
295 datCollection.fetch({
296 reset: true,
297 sort: true,
298 async: false,
299 success: function(collection, response) {
300 collection_data = collection.models;
301 },
302 error: function(collection, response) {
303 console.log('in view error');
304 console.log(response);
305 }
306 });
307 return collection_data;
308 },
309 showDetailsMenu:function(e){
310 var self= this;
311 e.preventDefault();
312 e.stopPropagation();
313 var $row = $(e.target).closest('tr').get(0);
314 self.entityRowId = $row.querySelector(".templateAction").getAttribute('data-uniqueid');
315 $('#detailsMenu').css( 'position', 'absolute' );
316 $('#detailsMenu').css( 'top', e.pageY - 90);
317 $('#detailsMenu').css( 'left', e.pageX - 190);
318 $('#detailsMenu').show();
319
320 $(document).on('click', function(event) {
321 $('#detailsMenu').hide();
322 });
323 },
324 showServiceMenu:function(e){
325 var self = this;
326 e.preventDefault();
327 e.stopPropagation();
328 var $row = $(e.target).closest('tr').get(0);
329 self.serviceEntityName= $row.querySelector(".templateAction").getAttribute('data-entityName');
330 self.serviceEntityType= $row.querySelector(".templateAction").getAttribute('data-EntityType');
331 if(self.providerType !== 'VACS'){
332 self.serviceSelectValue= $row.querySelector(".baseTemplateSelectBox").value;
333 }
334 self.serviceSelectId= $row.querySelector(".templateAction").getAttribute('data-uniqueid');
335 self.entityRowId = $row.querySelector(".templateAction").getAttribute('data-uniqueid');
336 $('#servieMenu').css( 'position', 'absolute' );
337 $('#servieMenu').css( 'top', e.pageY - 90);
338 $('#servieMenu').css( 'left', e.pageX - 190);
339 $('#servieMenu').show();
340
341 $(document).on('click', function(event) {
342 $('#servieMenu').hide();
343 });
344 },
345 showTemplateServiceMenu:function(e){
346 var self = this;
347 e.preventDefault();
348 e.stopPropagation();
349 var $row = $(e.target).closest('tr').get(0);
350 self.serviceEntityName= $row.querySelector(".templateAction").getAttribute('data-entityName');
351 self.serviceEntityType= $row.querySelector(".templateAction").getAttribute('data-EntityType');
352 if(self.providerType !== 'VACS'){
353 self.serviceSelectValue= $row.querySelector(".baseTemplateSelectBox").value;
354 }
355 self.serviceSelectId= $row.querySelector(".templateAction").getAttribute('data-uniqueid');
356 self.entityRowId = $row.querySelector(".templateAction").getAttribute('data-uniqueid');
357 $('#templateMenu').css( 'position', 'absolute' );
358 $('#templateMenu').css( 'top', e.pageY - 90);
359 $('#templateMenu').css( 'left', e.pageX - 190);
360 $('#templateMenu').show();
361
362 $(document).on('click', function(event) {
363 $('#templateMenu').hide();
364 });
365 },
366 showCliqrMenu:function(e){
367 var self = this;
368 e.preventDefault();
369 e.stopPropagation();
370 var $row = $(e.target).closest('tr').get(0); // Find the row
371 self.cliqrName = $(e.target).closest('tr').children('td:first').text();
372 self.cliqrSelectValue = $row.querySelector(".baseTemplateSelectBox").value;
373 self.cliqrSelectId = $row.querySelector(".templateAction").getAttribute('data-uniqueid');
374 self.entityRowId = $row.querySelector(".templateAction").getAttribute('data-uniqueid');
375 $('#cliqrServiceMenu').css( 'position', 'absolute' );
376 $('#cliqrServiceMenu').css( 'top', e.pageY - 90);
377 $('#cliqrServiceMenu').css( 'left', e.pageX - 190);
378 $('#cliqrServiceMenu').show();
379
380 $(document).on('click', function(event) {
381 $('#cliqrServiceMenu').hide();
382 });
383 },
384 showCliqrTemplateMenu:function(e){
385 var self = this;
386 e.preventDefault();
387 e.stopPropagation();
388 var $row = $(e.target).closest('tr').get(0); // Find the row
389 self.cliqrTempName = $(e.target).closest('tr').children('td:first').text();
390 self.cliqrTempSelectValue = $row.querySelector(".baseTemplateSelectBox").value;
391 self.cliqrTempSelectId = $row.querySelector(".templateAction").getAttribute('data-uniqueid');
392 self.entityRowId = $row.querySelector(".templateAction").getAttribute('data-uniqueid');
393 $('#cliqrTemplateServiceMenu').css( 'position', 'absolute' );
394 $('#cliqrTemplateServiceMenu').css( 'top', e.pageY - 90);
395 $('#cliqrTemplateServiceMenu').css( 'left', e.pageX - 190);
396 $('#cliqrTemplateServiceMenu').show();
397
398 $(document).on('click', function(event) {
399 $('#cliqrTemplateServiceMenu').hide();
400 });
401
402 },
403 showCertificateInfo:function(){
404 var self = this;
405 var certificateModel = new ConfigurationModel();
406 certificateModel.url = CloudApiManager.defaults.urls.showUCSDServerCert;
407 certificateModel.set('shortName', self.uniqueIdentifierName);
408 certificateModel.set('provider', self.providerName);
409 certificateModel.save(certificateModel.attributes, {type :'PUT',
410 contentType: "application/json; charset=utf-8",
411 success:function(model, response) {
412 var strboxHtml = '<div class="psc-modal-warning"><div class="psc-modal-warning-msg"><table class="ucsd-table-textarea"><tr><h4 id="certificateHeading"> '+(self.providerName).toUpperCase()+' Server Certificate</h4></tr><tr><td><textarea id="txtArCertificate1" rows="20" cols="100" style="width:100%;margin-top: 24px;" readonly="readonly">'+model.attributes.List[0]+'</textarea></td></tr></table></div></div>';
413 bootbox.dialog({
414 closeButton: false,
415 message: strboxHtml,
416 className: "psc-ucsd-bootbox",
417 buttons: {
418 success: {
419 label: "Cancel",
420 className: "ucsd-btn-cancelservice btn-gray",
421 callback: function() {
422 bootbox.hideAll();
423 return false;
424 }
425 }
426 }
427 });
428 },
429 error: function(model, response) {
430 console.log(model);
431
432 }
433 });
434
435 },
436 geti18nObjectCreation: function() {
437 var self = this;
438 this.i18N = {
439 msg_17352: cloudDashboardMessage.getString("17352"), //Error Message
440 msg_16035: cloudDashboardMessage.getString("16035"), //Identifier
441 msg_16036: cloudDashboardMessage.getString("16036"), //Name
442 msg_16037: cloudDashboardMessage.getString("16037"), //Host Name or IP Address
443 msg_16039: cloudDashboardMessage.getString("16039"), //Protocol
444 msg_16040: cloudDashboardMessage.getString("16040"), //Port
445 msg_16041: cloudDashboardMessage.getString("16041"), //User Name
446 msg_17570: cloudDashboardMessage.getString("17570"), //Skip Certificate Validation
447 msg_17600: cloudDashboardMessage.getString("17600"), //Select Base Template
448 msg_17606: cloudDashboardMessage.getString("17606"), //Ingegtations
449 msg_17619: cloudDashboardMessage.getString("17619"), //Integration Types
450 msg_17620: cloudDashboardMessage.getString("17620"), //Configure Integration
451 msg_17621: cloudDashboardMessage.getString("17621"), //API Key
452 msg_17622: cloudDashboardMessage.getString("17622"), //Root CA Certificate
453 msg_17623: cloudDashboardMessage.getString("17623"), //Create Integration
454 msg_17682: cloudDashboardMessage.getString("17682"), //Give your connection a good short name so you can identify it later
455 msg_17683: cloudDashboardMessage.getString("17683"), //Give your connection a good name so you can identify it later
456 msg_17684: cloudDashboardMessage.getString("17684"), //Ex: http://172.24.3.4
457 msg_17685: cloudDashboardMessage.getString("17685"), //Deault option is https
458 msg_17686: cloudDashboardMessage.getString("17686"), //Ex: 80, 8080
459 msg_17687: cloudDashboardMessage.getString("17687"), //Paste your root CA certificate here
460 msg_17688: cloudDashboardMessage.getString("17688"), //Check to skip the certificate validation
461 msg_17689: cloudDashboardMessage.getString("17689"), //Which username do you want to use to connect to CloudCenter?
462 msg_17690: cloudDashboardMessage.getString("17690"), //Paste your API Key here
463 msg_17691: cloudDashboardMessage.getString("17691"), //Select any base template service
464 msg_17693: cloudDashboardMessage.getString("17693"), //Paste your Password here
465 msg_17694: cloudDashboardMessage.getString("17694"), //Check to sync user with IaaS
466 msg_17695: cloudDashboardMessage.getString("17695"), //Check to enable the poller
467 msg_14576: cloudDashboardMessage.getString("14576"), //Service Name
468 msg_16676: cloudDashboardMessage.getString("16676"), //Manage Workflows
469 msg_17736: cloudDashboardMessage.getString("17736"), //Workflow Name
470 msg_12071: cloudDashboardMessage.getString("12071"), //manage integrations
471 msg_17826: cloudDashboardMessage.getString("17826"), //Show Log
472 msg_17827: cloudDashboardMessage.getString("17827"), //Import All Objects
473 msg_17828: cloudDashboardMessage.getString("17828"), //Test Connectivity
474 msg_17829: cloudDashboardMessage.getString("17829"), //Remove
475 msg_17830: cloudDashboardMessage.getString("17830"), //Details
476 msg_17333: cloudDashboardMessage.getString("17333"), //Edit
477 msg_17330: cloudDashboardMessage.getString("17330"), //Cancel
478 msg_17329: cloudDashboardMessage.getString("17329"), //Save
479 msg_17831: cloudDashboardMessage.getString("17831"),
480 msg_17832: cloudDashboardMessage.getString("17832"),
481 msg_17833: cloudDashboardMessage.getString("17833"),
482 msg_17834: cloudDashboardMessage.getString("17834"),
483 msg_17835: cloudDashboardMessage.getString("17835"),
484 msg_17836: cloudDashboardMessage.getString("17836"),
485 msg_17837: cloudDashboardMessage.getString("17837"),
486 msg_17838: cloudDashboardMessage.getString("17838"),
487 msg_provider: self.integrationTitle
488 };
489 },
490 cleanup: function() {
491 this.undelegateEvents();
492 $(this.el).empty();
493 },
494 hasEmptyArrays: function(obj) {
495 if (obj == null) return true;
496
497 // Assume if it has a length property with a non-zero value
498 // that that property is correct.
499 if (obj.length > 0) return false;
500 if (obj.length === 0) return true;
501
502 // If it isn't an object at this point
503 // it is empty, but it can't be anything *but* empty
504 // Is it empty? Depends on your application.
505 if (typeof obj !== "object") return true;
506
507 // Otherwise, does it have any properties of its own?
508 // Note that this doesn't handle
509 // toString and valueOf enumeration bugs in IE < 9
510 for (var key in obj) {
511 if (Object.prototype.hasOwnProperty.call(obj, key)) return false;
512 }
513
514 return true;
515 },
516 gotoIntegrationsPage: function() {
517 var newFragment = Backbone.history.getFragment($(this).attr('href'));
518 if (Backbone.history.fragment == newFragment) {
519 // need to null out Backbone.history.fragement because
520 // navigate method will ignore when it is the same as newFragment
521 Backbone.history.fragment = null;
522 }
523 Backbone.history.navigate('integrations', {
524 trigger: true
525 });
526
527 return false;
528 },
529 getModelData: function() {
530 var self = this;
531 var data = "";
532 _.each(self.parentCollectionRef, function(item, index) {
533 var name = self.parentCollectionRef[index].get("shortName");
534 if (self.uniqueIdentifierName == name)
535 data = self.parentCollectionRef[index];
536 });
537 return data;
538 },
539 cancelEditConnection: function() {
540 var identifierName = this.uniqueIdentifierName;
541 var providerName = this.providerName;
542 $('#integrations').unbind();
543
544 if (identifierName.length > 0) {
545 self.AdminManageIntegrationsView = new AdminManageIntegrationsView({
546 el: $('#integrations'),
547 name: identifierName,
548 providerName: providerName
549 });
550 }
551 },
552 constructJSONData: function(data) {
553 var details = {
554 "baseTemplateID": data.attributes.baseTemplateID,
555 "baseTemplate": data.attributes.baseTemplate,
556 "certificate": data.attributes.certficateData,
557 "name": data.attributes.description,
558 "hostName": data.attributes.hostName,
559 "msp": data.attributes.msp,
560 "password": data.attributes.password,
561 "pollerEnable": data.attributes.pollerEnabled,
562 "port": data.attributes.port,
563 "protocol": data.attributes.protocol,
564 "provider": data.attributes.providerType,
565 "shortName": data.attributes.shortName,
566 "skipCertificate": data.attributes.skipValidateCertificate,
567 "status": data.attributes.status,
568 "system": data.attributes.system,
569 "token": data.attributes.token,
570 "url": data.attributes.url,
571 "username": data.attributes.userName,
572 "version": data.attributes.version,
573 "exportUser":data.attributes.exportUser
574 };
575 return details;
576 },
577 getProviderImage: function() {
578 var providerName = this.providerName;
579 var image;
580 var imgObj = {
581 ucsdImage: "/RequestCenter/modules/clouddashboard/icons/ciscopm.png",
582 cliqrImage: "/RequestCenter/modules/clouddashboard/icons/cliqr.png",
583 ucspmImage: "/RequestCenter/modules/clouddashboard/icons/ciscopm.png"
584 };
585 if (providerName == "CLIQR") {
586 image = imgObj.cliqrImage;
587 } else if (providerName == "UCSD") {
588 image = imgObj.ucsdImage;
589 } else if (providerName == "UCSPM") {
590 image = imgObj.ucspmImage;
591 }
592 return image;
593 },
594 getNodesData: function() {
595 var self = this;
596 var nodetitles = "";
597 var search_params = {
598 type: 'discoveredObjects',
599 key: 'discoveredObjects',
600 shortName: self.uniqueIdentifierName
601 };
602 self.nodesCollection.fetch({
603 async: false,
604 data: $.param(search_params),
605 success: function(collection) {
606 nodetitles = collection.toJSON();
607 },
608 error: function(coll, res) {
609 console.log('error');
610 if (res.status === 404) {
611 console.log('in error 404');
612 // TODO: handle 404 Not Found
613 } else if (res.status === 500) {
614 console.log('in error 500');
615 // TODO: handle 500 Internal Server Error
616 }
617 }
618 });
619 return nodetitles;
620 },
621 getEntityColumnNames: function(element) {
622 if(this.data.attributes.msp == 1){
623 if(element == "ApplicationProfiles"){
624 element = "UCSDApplicationProfiles";
625 }
626 }
627 var entitycol = {
628 "ApplicationProfiles": {
629 "name": "Name",
630 "description": "Description",
631 "serviceTierId": "Service Tier ID",
632 "profileCategory": "Profile Category",
633 "selectBaseTemplate": "select Base Template",
634 "settings": "Settings"
635 },
636 "DeploymentEnvironment": {
637 "name": "Name",
638 "description": "Description",
639 "settings": "Settings"
640 },
641 "Cloud": {
642 "name": "Name",
643 "cloudfamily": "Cloud Family",
644 "description": "Description",
645 "settings": "Settings"
646 },
647 "ActivationProfile": {
648 "name": "Name",
649 "description": "Description",
650 "settings": "Settings"
651 },
652 "Group": {
653 "Group_ID": "Group",
654 "Group_Name": "Group Name",
655 "Group_Code": "Group Code",
656 "Group_Description": "Group Description",
657 "settings": "Settings"
658 },
659 "User": {
660 "Login_Name": "Login Name",
661 "First_Name": "First Name",
662 "Last_Name": "Last Name",
663 "User_Group": "User Group",
664 "Contact_Email_Address": "Contact Email Address",
665 "settings": "Settings"
666 },
667 "Catalog": {
668 "Catalog_ID": "Catalog ID",
669 "Catalog_Name": "Catalog Name",
670 "Folder": "Folder",
671 "Catalog_Type": "Catalog Type",
672 "Cloud": "Cloud",
673 "Image": "Image",
674 "Group": "Group"
675 },
676 "Template": {
677 "Container_Template": "Container Template",
678 "Template_Description": "Template Description",
679 "Container_Type": "Container Type"
680 },
681 "Container": {
682 "containerType": "Container Type",
683 "containerName": "Container Name",
684 "containerLabel": "Container Label",
685 "settings": "Settings"
686 },
687 "VDC": {
688 "Cloud": "Cloud",
689 "vDC_ID": "vDC ID",
690 "Group": "Group",
691 "vDC": "vDC",
692 "Type": "Type",
693 "Total_VMs": "Total VMs",
694 "settings": "Settings"
695 },
696 "Image": {
697 "ID": "Cloud",
698 "Image_ID": "Image ID",
699 "Group": "Group",
700 "settings": "Settings"
701 },
702 "Workflow": {
703 "Workflow_ID": "Workflow ID",
704 "Workflow_Name": "Workflow Name",
705 "Workflow_Description": "Workflow Description",
706 "Compound_Task": "Compound Task",
707 "Workflow_Folder": "Workflow Folder",
708 "settings": "Settings"
709 },
710 "VM": {
711 "Cloud": "Cloud",
712 "VM_Label": "VM Label",
713 "VM_Name": "VM Name",
714 "Image_Id": "Image Id",
715 "Group_Name": "Group Name",
716 "vDC": "vDC",
717 "Group_ID": "Group ID",
718 "settings": "Settings"
719 },
720 "BMAImage": {
721 "Label": "Label",
722 "Value": "Value",
723 "settings": "Settings"
724 },
725 "UCSDApplicationProfiles": {
726 "profileName": "Profile Name",
727 "description": "Description",
728 "settings": "Settings"
729 }
730
731 };
732 if (entitycol.hasOwnProperty(element)) {
733 return entitycol[element];
734 } else {
735 return "key not available";
736 }
737 },
738 toggleEditandSave: function() {
739 var self = this;
740 $('#savedetailsbtn').css('display', 'table');
741 $('#cancelEditConnBtn').css('display', 'table');
742 $('#editdetailsbtn').css('display', 'none');
743 $('#readonlydetails').css('display', 'none');
744 $('#editDetails').css('display', 'table');
745 self.getCertificate();
746
747 },
748 saveCloudConnection: function() {
749 var self = this;
750 var model = self.populateModelForSave(false);
751 self.saveConnection(model);
752
753 return false;
754 },
755 selectChange: function(e) {
756 var self = this;
757 var protocolTxt = $("#Protocol").val();
758 var portTxt = $("#Port").val();
759 if (protocolTxt === 'http' && (isNaN(portTxt) || portTxt === 0 || portTxt === 443)) {
760 $("#Port").val('80');
761 } else if (protocolTxt === 'https' && (isNaN(portTxt) || portTxt === 0 || portTxt === 80)) {
762 $("#Port").val('443');
763 }
764 if (protocolTxt == "http") {
765 $("#SkipValidCert").attr("disabled", true);
766 $("#SkipValidCert").prop('checked', false);
767 $('#Certificate').attr('disabled', true);
768 } else if (protocolTxt == "https") {
769 $("#SkipValidCert").removeAttr("disabled");
770 $('#Certificate').removeAttr("disabled");
771 }
772 },
773
774 populateModelForSave: function(isReadonly) {
775 var self = this;
776 var certificate = '';
777 var override_Certificate = '';
778 var model = new ConfigurationModel();
779
780 var protocolTxt = $('#cliqr-config-form').find('[name="Protocol"]').val();
781 var textCertificate = $('#cliqr-config-form').find(':input[name="Certificate"]').val();
782 if (protocolTxt != '' && protocolTxt == 'https' && textCertificate != "") {
783 certificate = textCertificate;
784 override_Certificate = 'y';
785 } else {
786 certificate = textCertificate;
787 override_Certificate = '';
788 }
789
790 model.set('id', self.data.attributes.primaryID + '');
791 model.set('shortName', $('#cliqr-config-form').find(':input[name="ShortName"]').val());
792 model.set('description', encodeURIComponent($('#cliqr-config-form').find(':input[name="Description"]').val()));
793 model.set('protocol', $('#cliqr-config-form').find('[name="Protocol"]').val());
794 model.set('hostName', $('#cliqr-config-form').find(':input[name="HostName"]').val());
795 model.set('port', $('#cliqr-config-form').find(':input[name="Port"]').val());
796 model.set('un', $('#cliqr-config-form').find(':input[name="UserName"]').val());
797 if (self.providerName == "CLIQR") {
798 model.set('up', $('#cliqr-config-form').find(':input[name="cliqrPassword"]').val().trim());
799 } else if (self.providerName == "UCSD") {
800 model.set('up', $('#cliqr-config-form').find(':input[name="UCSDpassword"]').val().trim());
801 } else if (self.providerName == "UCSPM") {
802 model.set('up', $('#cliqr-config-form').find(':input[name="UCSPMpassword"]').val().trim());
803 }
804 model.set('pollerEnabled', $('#cliqr-config-form').find(':input[name="Poller"]').is(':checked') ? "1" : "0");
805 model.set('exportUser', $('#cliqr-config-form').find(':input[name="ExportUser"]').is(':checked') ? "1" : "0");
806 model.set('cert', certificate);
807 model.set('ovCert', override_Certificate);
808
809 model.set('validationUrl', $('#cliqr-config-form').find(':input[name="ProviderUrl"]').val());
810 model.set('skipValidateCertificate', $('#cliqr-config-form').find(':input[name="SkipValidCert"]').is(':checked') ? "1" : "0");
811 model.set('authMech', $('#cliqr-config-form').find(':input[name="AuthMech"]').val());
812 model.set('userNameParams', $('#cliqr-config-form').find(':input[name="UserNameParams"]').val());
813 model.set('passwordParams', $('#cliqr-config-form').find(':input[name="PasswordParams"]').val());
814 model.set('loginUrl', $('#cliqr-config-form').find(':input[name="LoginUrl"]').val());
815 model.set('authTokenParam', $('#cliqr-config-form').find(':input[name="AuthTokenParam"]').val());
816 model.set('connBaseTemplate', $('#cliqr-config-form').find(':input[name="ConnBaseTemplate"]').val());
817 model.set('virtualHost', $('#cliqr-config-form').find(':input[name="VirtualHost"]').val());
818 model.set('publicKey', $('#cliqr-config-form').find(':input[name="PublicKey"]').val());
819 model.set('secureStringFormat', $('#cliqr-config-form').find(':input[name="SecureStringFormat"]').val());
820 model.set('serverDownNotification', $('#cliqr-config-form').find(':input[name="ServerDownNotification"]').val());
821 model.set('recoveryInterval', $('#cliqr-config-form').find(':input[name="RecoveryInterval"]').val());
822 model.set('inboundQueue', $('#cliqr-config-form').find(':input[name="InboundQueue"]').val());
823 model.set('messageType', $('#cliqr-config-form').find(':input[name="MessageType"]').val());
824 model.set('basicAuthentication', $('#cliqr-config-form').find(':input[name="BasicAuth"]').is(':checked') ? "1" : "0");
825 model.set('isTriggeredByPoller', false);
826 model.set('provider', this.providerName);
827
828 return model;
829 },
830 gotoManageIntegrationsPage: function() {
831 var self = this;
832 var identifierName = self.uniqueIdentifierName;
833 var providerName = self.providerName;
834 $('#integrations').unbind();
835
836 if (identifierName.length > 0) {
837 self.AdminManageIntegrationsView = new AdminManageIntegrationsView({
838 el: $('#integrations'),
839 name: identifierName,
840 providerName: providerName
841 });
842 }
843 },
844 saveConnection: function(model) {
845 var self = this;
846 $(".cloud-connection-configure").attr("disabled", true);
847 this.spinner = new Spinner().spin(document.getElementById('detailscontent'));
848 model.url = CloudApiManager.defaults.urls.saveConnection;
849 this.encryptUCSDPass(model);
850 model.save(model.attributes, {
851 type: 'POST',
852 contentType: "application/json; charset=utf-8",
853 success: function(model, response) {
854 self.spinner.spin(false);
855 console.log('Successfully saved!');
856
857 var jsonText = JSON.stringify(response);
858 var jsonObject = eval("(" + jsonText + ")");
859 if (jsonObject.hasOwnProperty("List")) {
860 var jsonArray = jsonObject["List"];
861 self.LdapOn = response.List[1].LdapOn;
862 } else {
863 var jsonArray = jsonObject["ArrayList"];
864 self.LdapOn = response.ArrayList[1].LdapOn;
865 }
866 var arrayValue = jsonArray[2];
867 var arrayMessage = jsonArray[3];
868
869
870 if (arrayValue == "false") {
871 var strboxHtml = '<div class="psc-modal-warning"><i class="icon-untitled-127"></i><div class="psc-modal-warning-msg">' + jsonArray[3] +
872 '</div></div>';
873 bootbox.dialog({
874 closeButton: false,
875 message: strboxHtml,
876 className: "psc-cloud-bootbox",
877 buttons: {
878 success: {
879 label: self.i18N.msg_17838,
880 className: "psc-btn",
881 callback: function() {
882 bootbox.hideAll();
883 return false;
884 }
885 }
886 }
887 });
888 } else {
889 $('#savedetailsbtn').css('display', 'none');
890 $('#editdetailsbtn').css('display', 'table');
891 $('#cancelEditConnBtn').css('display', 'none');
892 $('#readonlydetails').css('display', 'table');
893 $('#editDetails').css('display', 'none');
894 self.gotoManageIntegrationsPage();
895 }
896 },
897 error: function(model, error) {
898 self.spinner.spin(false);
899 self.requestErrorHandler(error, '');
900 }
901 });
902
903 if (!model.isValid()) {
904 var errors = "";
905 var errorArr = model.validationError;
906 var isFocusSet = false;
907 for (var i = 0; i < (errorArr.length); i++) {
908 var jsonObj = errorArr[i];
909 $('#' + jsonObj.name).addClass('validation-error');
910 if (!isFocusSet)
911 $('#' + jsonObj.name + ':first').focus();
912 errors += jsonObj.message;
913 if (i != errorArr.length - 1) {
914 errors += '<br/>';
915 }
916 isFocusSet = true;
917 }
918 this.showError(errors);
919 }
920
921
922 },
923 encryptUCSDPass: function(model) {
924 var splChars1 = '!@^_';
925 var splChars2 = '_^@!';
926
927 var password = model.get('up');
928 if (password != "" && password != null && password != undefined && password.indexOf(splChars1) == -1) {
929 var encryptedPassword = window.btoa(unescape(password));
930 encryptedPassword = splChars1 + encryptedPassword + splChars2;
931 model.set('up', encryptedPassword);
932 password = '';
933 }
934 },
935
936 toggleSaveandEdit: function() {
937 var self = this;
938 self.saveCloudConnection();
939 },
940 generateService: function(e) {
941 var self = this;
942 //var $row = $(e.target).closest('tr').get(0); // Find the row
943 var name = self.cliqrName;
944 var selectValue = self.cliqrSelectValue;
945 var selectId = self.cliqrSelectId;
946 var serviceModelData = self.getCommonDataFromCollection();
947 //var serviceModelData = self.discoveredEntityResult;
948 //console.log(selectValue);
949 self.passToUpdate(e, this, self.updateService, '', false, name, selectValue, selectId, serviceModelData);
950 },
951 generateServiceVariant: function(e) {
952 var self = this;
953 //var $row = $(e.target).closest('tr').get(0); // Find the row
954 var name = self.cliqrName;
955 var selectValue = self.cliqrSelectValue;
956 var selectId = self.cliqrSelectId;
957 var regServiceModelData = self.getCommonDataFromCollection();
958 //var regServiceModelData = self.discoveredEntityResult;
959 self.passToUpdate(e, this, self.updateService, '', true, name, selectValue, selectId, regServiceModelData);
960 },
961 generateServiceTemplate: function(e) {
962 var self = this;
963 //var $row = $(e.target).closest('tr').get(0);
964 var name = self.cliqrTempName;
965 var selectValue = self.cliqrTempSelectValue;
966 var selectId = self.cliqrTempSelectId;
967 var underscoreServiceModelData = self.getCommonDataFromCollection(); //self.entity_data.models;
968 self.passToUpdate(e, this, self.updateService, '', false, name, selectValue, selectId, underscoreServiceModelData);
969 },
970 generateServiceTemplateVariant: function(e) {
971 var self = this;
972 //var $row = $(e.target).closest('tr').get(0);
973 var name = self.cliqrTempName;
974 var selectValue = self.cliqrTempSelectValue;
975 var selectId = self.cliqrTempSelectId;
976 var underscoreVariantModelData = self.getCommonDataFromCollection(); //self.entity_data.models;
977 self.passToUpdate(e, this, self.updateService, '', true, name, selectValue, selectId, underscoreVariantModelData);
978 },
979 generateUCSDServiceVariant: function(e) {
980 var self = this;
981 var $row = self.serviceEntityRow;
982 var name = self.serviceEntityName;
983 var entityType = self.serviceEntityType;
984 var selectValue = self.serviceSelectValue;
985 var selectId = self.serviceSelectId;
986 var ucsdVariantModelData = self.getCommonDataFromCollection(); // self.entity_data.models;
987 self.passToUpdate(e, this, self.updateUCSDService, entityType, true, name, selectValue, selectId, ucsdVariantModelData);
988 },
989 generateUCSDService: function(e) {
990 var self = this;
991 var $row = self.serviceEntityRow;
992 var name = self.serviceEntityName;
993 var entityType = self.serviceEntityType;
994 var selectValue = self.serviceSelectValue;
995 var selectId = self.serviceSelectId;
996 var ucsdServiceModelData = self.getCommonDataFromCollection(); //self.entity_data.models;
997 self.passToUpdate(e, this, self.updateUCSDService, entityType, false, name, selectValue, selectId, ucsdServiceModelData);
998 },
999 passToUpdate: function(e, self, methodName, type, generateVariant, tempName, selboxValue, uniqueId, data){
1000 var alertStr = '';
1001 if(generateVariant){
1002 alertStr = 'This will override the variant service if is already exists. Do you want to Continue ?';
1003 }else{
1004 alertStr = 'This will override the service. Do you want to Continue ?';
1005 }
1006 var strboxHtml = '<div class="psc-modal-warning"><i class="icon-untitled-127"></i><div class="psc-modal-warning-msg">' +
1007 '' + alertStr +
1008 '</div></div>';
1009 bootbox.dialog({
1010 closeButton: false,
1011 message: strboxHtml,
1012 className: "psc-ucsd-bootbox",
1013 buttons: {
1014 success: {
1015 label: "Ok",
1016 className: "psc-btn",
1017 callback: function() {
1018 methodName(e, self, generateVariant, tempName, type, selboxValue, uniqueId, data);
1019 }
1020 },
1021 main: {
1022 label: cloudDashboardMessage.getString("64"),
1023 className: "btn-gray",
1024 callback: function() {
1025 bootbox.hideAll();
1026 return false;
1027 }
1028 }
1029 }
1030 });
1031 },
1032 updateService: function(e, self, generateVariant, tempName, type, selboxValue, uniqueId, data) {
1033 var fetchedRows = [];
1034 var tableRecords = data;
1035 var selectedRecord = "";
1036 $.each(tableRecords, function(key, value) {
1037 if (tableRecords[key].attributes.hasOwnProperty('UUID')) {
1038 if (tableRecords[key].attributes.UUID == uniqueId) {
1039 selectedRecord = tableRecords[key];
1040 return selectedRecord;
1041 }
1042 }
1043 });
1044
1045 fetchedRows.push({
1046 ApplicationProfileName: tempName,
1047 TemplateName: selboxValue,
1048 Version: selectedRecord.attributes.version,
1049 UniqueIdentifier: selectedRecord.attributes.UUID
1050 });
1051 if (fetchedRows.length === 0) {
1052 var alertMsg = 'Please select Application Profile to perform this operation';
1053 var strboxHtml = '<div class="psc-modal-warning"><i class="icon-untitled-127"></i><div class="psc-modal-warning-msg">' +
1054 '' + alertMsg +
1055 '</div></div>';
1056 bootbox.dialog({
1057 closeButton: false,
1058 message: strboxHtml,
1059 className: "psc-ucsd-bootbox",
1060 buttons: {
1061 success: {
1062 label: "Ok",
1063 className: "psc-btn",
1064 callback: function() {
1065 bootbox.hideAll();
1066 return false;
1067 }
1068 }
1069 }
1070 });
1071 return;
1072 }
1073 //This block will compare 2 similar array's and return the diff elements
1074 var difference = function(array) {
1075 var rest = Array.prototype.concat.apply(Array.prototype, Array.prototype.slice.call(arguments, 1));
1076
1077 var containsEquals = function(obj, target) {
1078 if (obj == null) return false;
1079 return _.any(obj, function(value) {
1080 return _.isEqual(value, target);
1081 });
1082 };
1083
1084 return _.filter(array, function(value) {
1085 return !containsEquals(rest, value);
1086 });
1087 };
1088 var changedBaseTemplateRows = difference(fetchedRows, self.baseTemplateMap);
1089 var regenerateServiceRequestParams = {
1090 "templates": changedBaseTemplateRows,
1091 "provider": self.providerName,
1092 "shortName": self.uniqueIdentifierName,
1093 "datatableID": 'cloudEntityRecords',
1094 "generateVariant": generateVariant,
1095 };
1096
1097 var regenerateServiceURL = CloudApiManager.defaults.urls.regenerateService;
1098 self.spinner = new Spinner().spin(document.getElementById('renderDiscoveredData'));
1099 var showMessage = function(msg) {
1100 var alertMsg = msg;
1101 var strboxHtml = '<div class="psc-modal-warning"><i class="icon-untitled-127"></i><div class="psc-modal-warning-msg">' +
1102 '' + alertMsg +
1103 '</div></div>';
1104 bootbox.dialog({
1105 closeButton: false,
1106 message: strboxHtml,
1107 className: "psc-ucsd-bootbox",
1108 buttons: {
1109 success: {
1110 label: "Ok",
1111 className: "psc-btn",
1112 callback: function() {
1113 bootbox.hideAll();
1114 //Reload table to fetch the fresh set of mapping data
1115 self.clearError();
1116 //self.reloadDataTable();
1117 return;
1118 }
1119 }
1120 }
1121 });
1122 };
1123 $.ajax({
1124 type: 'POST',
1125 url: regenerateServiceURL,
1126 timeout: 1000000,
1127 contentType: "application/json; charset=utf-8",
1128 data: JSON.stringify(regenerateServiceRequestParams),
1129 complete: function(xhr) {
1130 try {
1131 if (self.spinner != null) {
1132 self.spinner.spin(false);
1133 }
1134 var jsonRes = JSON.parse(xhr.responseText);
1135 var items = jsonRes.List[0];
1136 //console.log(items);
1137 showMessage(items);
1138 } catch (e) {
1139 //Error
1140 }
1141 },
1142 error: function(x, e) {
1143 console.log("error occur");
1144 showMessage("Error occured while performing the operation.");
1145 }
1146 });
1147
1148 },
1149 updateUCSDService: function(e, self, generateVariant, tempName, type, selboxValue, uniqueId, data) {
1150 var fetchedRows = [];
1151 var tableRecords = data;
1152 var selectedRecord = "";
1153 $.each(tableRecords, function(key, value) {
1154 if (tableRecords[key].attributes.hasOwnProperty('UUID')) {
1155 if (tableRecords[key].attributes.UUID == uniqueId) {
1156 selectedRecord = tableRecords[key];
1157 return selectedRecord;
1158 }
1159 }
1160 });
1161
1162 fetchedRows.push({
1163 "templates": [{
1164 "EntityName": tempName,
1165 "TemplateName": selboxValue,
1166 "UniqueIdentifier": uniqueId,
1167 "EntityType": type
1168 }],
1169 "provider": self.providerName,
1170 "shortName": self.uniqueIdentifierName,
1171 "datatableID": "cloudEntityRecords",
1172 "generateVariant": generateVariant
1173 });
1174 console.log(fetchedRows);
1175 if (fetchedRows.length === 0) {
1176 var alertMsg = 'Please select Application Profile to perform this operation';
1177 var strboxHtml = '<div class="psc-modal-warning"><i class="icon-untitled-127"></i><div class="psc-modal-warning-msg">' +
1178 '' + alertMsg +
1179 '</div></div>';
1180 bootbox.dialog({
1181 closeButton: false,
1182 message: strboxHtml,
1183 className: "psc-ucsd-bootbox",
1184 buttons: {
1185 success: {
1186 label: "Ok",
1187 className: "psc-btn",
1188 callback: function() {
1189 bootbox.hideAll();
1190 return false;
1191 }
1192 }
1193 }
1194 });
1195 return;
1196 }
1197 //This block will compare 2 similar array's and return the diff elements
1198 var difference = function(array) {
1199 var rest = Array.prototype.concat.apply(Array.prototype, Array.prototype.slice.call(arguments, 1));
1200
1201 var containsEquals = function(obj, target) {
1202 if (obj == null) return false;
1203 return _.any(obj, function(value) {
1204 return _.isEqual(value, target);
1205 });
1206 };
1207
1208 return _.filter(array, function(value) {
1209 return !containsEquals(rest, value);
1210 });
1211 };
1212 var changedBaseTemplateRows = difference(fetchedRows, self.baseTemplateMap);
1213 var regenerateServiceRequestParams = {
1214 "templates": [{
1215 "EntityName": tempName,
1216 "TemplateName": selboxValue,
1217 "UniqueIdentifier": uniqueId,
1218 "EntityType": type
1219 }],
1220 "provider": self.providerName,
1221 "shortName": self.uniqueIdentifierName,
1222 "datatableID": "cloudEntityRecords",
1223 "generateVariant": generateVariant
1224 };
1225 var regenerateServiceURL = CloudApiManager.defaults.urls.regenerateUCSDService;
1226 self.spinner = new Spinner().spin(document.getElementById('renderDiscoveredData'));
1227 var showMessage = function(msg) {
1228 var alertMsg = msg;
1229 var strboxHtml = '<div class="psc-modal-warning"><i class="icon-untitled-127"></i><div class="psc-modal-warning-msg">' +
1230 '' + alertMsg +
1231 '</div></div>';
1232 bootbox.dialog({
1233 closeButton: false,
1234 message: strboxHtml,
1235 className: "psc-ucsd-bootbox",
1236 buttons: {
1237 success: {
1238 label: "Ok",
1239 className: "psc-btn",
1240 callback: function() {
1241 bootbox.hideAll();
1242 //Reload table to fetch the fresh set of mapping data
1243 self.clearError();
1244 //self.reloadDataTable();
1245 return;
1246 }
1247 }
1248 }
1249 });
1250 };
1251 $.ajax({
1252 type: 'POST',
1253 url: regenerateServiceURL,
1254 timeout: 1000000,
1255 contentType: "application/json; charset=utf-8",
1256 data: JSON.stringify(regenerateServiceRequestParams),
1257 complete: function(xhr) {
1258 try {
1259 if (self.spinner != null) {
1260 self.spinner.spin(false);
1261 }
1262 var jsonRes = JSON.parse(xhr.responseText);
1263 var items = jsonRes.List[0];
1264 //console.log(items);
1265 showMessage(items);
1266 } catch (e) {
1267 //Error
1268 }
1269 },
1270 error: function(x, e) {
1271 console.log("error occur");
1272 showMessage("Error occured while performing the operation.");
1273 }
1274 });
1275
1276 },
1277
1278 getDiscoverEntityData: function() {
1279 var self = this;
1280 var discover_data = "";
1281 param1 = "";
1282 settingsIcon = "";
1283 providerName = this.providerName;
1284 var emptyNode = self.hasEmptyArrays(self.discoverNodesData);
1285 if (emptyNode == false) {
1286 var nodes = _.pluck(self.discoverNodesData, 'key');
1287 param1 = _.first(nodes);
1288 }
1289 this.initialColum = self.getEntityColumnNames(param1);
1290 var param2 = "cloudEntityRecords";
1291 var dicoverEntity = new AdminManageDiscoverEntityCollection();
1292 dicoverEntity.multiSelect = false;
1293 dicoverEntity.shortName = self.uniqueIdentifierName;
1294 dicoverEntity.provider = self.providerName;
1295 dicoverEntity.entity = param1;
1296 dicoverEntity.datatableID = param2;
1297 dicoverEntity.qfilter.sortBy = 'uniqueidentifier';
1298 dicoverEntity.qfilter.lastQuery = '*';
1299 dicoverEntity.fetch({
1300 reset: true,
1301 sort: true,
1302 async: false,
1303 success: function(collection, response) {
1304 if (collection.length === 0) {
1305 $('#discoveredEntity').css('display', 'none');
1306 handlebars.registerHelper('genetateTableHeaders', function(headerData, bodyData, options) {});
1307 } else {
1308 $('#discoveredEntity').css('display', 'table');
1309 var initialBaseTempData = self.getBaseTemplateForCliqr();
1310 discover_data = collection.models;
1311 handlebars.registerHelper('genetateTableHeaders', function(headerData, bodyData, options) {
1312 var tableData = "";
1313 var attrArray = "";
1314 var bodyContent = "";
1315 if (providerName == "UCSD") {
1316 settingsIcon = "<a href='javascript:void(0)' id='defaultEntityDetails'><i class='fa fa-cog'></i></a>";
1317 } else if (providerName == "CLIQR") {
1318 settingsIcon = "<a href='javascript:void(0)' id='defaultCliqrService'><i class='fa fa-cog'></i></a>";
1319 }
1320 $.each(headerData, function(key, value) {
1321 tableData = tableData + '<th>' + value + '</th>';
1322 });
1323 attrArray = Object.keys(headerData);
1324 var tableBodyData = collection.models.map(function(tempObject) {
1325 var returnObject = {};
1326 for (var idx = 0; idx < attrArray.length; idx++) {
1327 returnObject[attrArray[idx]] = tempObject.attributes[attrArray[idx]];
1328 }
1329 return returnObject;
1330 }).forEach(function(columnValue, index) {
1331 var tempId = bodyData[index].attributes.UUID;
1332 var name = bodyData[index].attributes.baseTemplateName;
1333 var templateOptions = "";
1334 templateOptions = templateOptions + '<option value="' + name + '">' + name + '</option>';
1335 $.each(initialBaseTempData, function(key, value) {
1336 if (value.templateName !== name) {
1337 templateOptions = templateOptions + '<option value="' + value.templateName + '">' + value.templateName + '</option>';
1338 }
1339 });
1340 var selectBoxForTemplate = '<select name="baseTemplateSelectBox" class="baseTemplateSelectBox">' + templateOptions + '</select>';
1341 var tableRow = "<tr>";
1342 for (var columnIndex = 0; columnIndex < attrArray.length; columnIndex++) {
1343 if (attrArray[columnIndex] == 'settings') {
1344 tableRow += "<td style='text-align:center' class='templateAction' data-uniqueId='" + tempId + "'>" + settingsIcon + "</td>";
1345 } else if (attrArray[columnIndex] == 'selectBaseTemplate') {
1346 tableRow += "<td>" + selectBoxForTemplate + "</td>";
1347 } else {
1348 tableRow += "<td>" + columnValue[attrArray[columnIndex]] + "</td>";
1349 }
1350 }
1351 tableRow += "</tr>";
1352 bodyContent = bodyContent + tableRow;
1353 });
1354 tableData = '<thead>' + tableData + '</thead>' + '<tbody>' + bodyContent + '</tbody>';
1355 return tableData;
1356 });
1357 }
1358 },
1359 error: function(collection, response) {
1360 console.log('in view error');
1361 console.log(response);
1362 }
1363 });
1364
1365 return discover_data;
1366 },
1367 getSelectedEntityData: function(e) {
1368 var self = this;
1369 var template = "";
1370 var templateNames = [];
1371 var modifiedTemplateObject = {};
1372 var param1 = e.currentTarget.getAttribute('data-id');
1373 var param2 = e.currentTarget.getAttribute('data-datatableID');
1374 var entity_col = self.getEntityColumnNames(param1);
1375 var columns = _.values(entity_col);
1376 var selectedEntity = new AdminManageDiscoverEntityCollection();
1377 selectedEntity.multiSelect = false;
1378 selectedEntity.shortName = self.uniqueIdentifierName;
1379 selectedEntity.provider = self.providerName;
1380 selectedEntity.entity = param1;
1381 selectedEntity.datatableID = param2;
1382 selectedEntity.qfilter.sortBy = 'uniqueidentifier';
1383 selectedEntity.qfilter.lastQuery = '*';
1384 selectedEntity.fetch({
1385 reset: true,
1386 sort: true,
1387 async: false,
1388 success: function(collection, response) {
1389 if (collection.length === 0) {
1390 self.entity_data = "No Data Available";
1391 } else {
1392 self.entity_data = collection;
1393 }
1394 //genHtmlContent = constructEntityDataTemplate();
1395 },
1396 error: function(collection, response) {
1397 console.log('in view error');
1398 console.log(response);
1399 }
1400 });
1401 var initialBaseTempData = self.getBaseTemplateForCliqr();
1402 var providerType = self.providerName;
1403 if(self.providerName == "UCSD" && initialBaseTempData[0].isVacs == "1"){
1404 providerType = 'VACS';
1405 self.providerType = 'VACS';
1406 }
1407 var colData = {
1408 data: self.entity_data,
1409 templatedata: initialBaseTempData,
1410 providerType: providerType,
1411 col_data: columns
1412 };
1413 var selectedId = '#' + param1;
1414 if (param1 == "ApplicationProfiles" && self.providerName == "UCSD") {
1415 template = _.template($('#UCSDApplicationProfiles').text());
1416 } else {
1417 template = _.template($(selectedId).text());
1418 }
1419 self.$el.find('#discoveredEntity section table').html(template(colData));
1420 var node_class = $('.list-group-item');
1421 for (var c = 0; c < node_class.length; c++) {
1422 var id = node_class[c].getAttribute('data-id');
1423 if (node_class[c].classList.contains('infiniteScroll')) {
1424 node_class[c].classList.remove('infiniteScroll');
1425 }
1426 if (id == param1) {
1427 node_class[c].classList.add('infiniteScroll');
1428 }
1429 }
1430
1431
1432 },
1433 showObjectsPanel: function() {
1434 $("#servicespanel").hide();
1435 $("#objectspanel").show();
1436 $("#objectsbtn").addClass("active");
1437 $("#servicesbtn").removeClass("active");
1438 },
1439 getServiceLabelCount: function() {
1440 var self = this;
1441 var restURL = "/RequestCenter/nsapi/ucsd/services/providertype/" + self.providerName + "/shortname/" + self.uniqueIdentifierName + "";
1442 Backbone.ajax({
1443 type: 'GET',
1444 url: restURL,
1445 async: false,
1446 contentType: "application/json; charset=utf-8",
1447 success: function(model, response) {
1448 self.serviceLabelCount = model;
1449 },
1450 error: function(model, response) {
1451 console.log("in error" + response);
1452 }
1453 });
1454 return self.serviceLabelCount;
1455 },
1456 showServicesPanel: function() {
1457 var self = this;
1458 var tabTemplate = "";
1459 var ServiceCount = "";
1460 param1 = "";
1461 var filterGroup = new Array();
1462 $("#objectspanel").hide();
1463 $("#servicespanel").show();
1464 $("#servicesbtn").addClass("active");
1465 $("#objectsbtn").removeClass("active");
1466 var initialService = new AdminManageDiscoverServicesCollection();
1467 var serviceLabelCount = self.getServiceLabelCount();
1468 console.log(serviceLabelCount);
1469 if (self.providerName == "CLIQR") {
1470 param1 = 'ApplicationProfileService';
1471 ServiceCount = {
1472 ApplicationProfileService: serviceLabelCount.ApplicationProfileServices
1473 };
1474 } else if (self.providerName == "UCSD") {
1475 param1 = "Template";
1476 ServiceCount = {
1477 AdvanceCatalogServices: serviceLabelCount.AdvanceCatalogServices,
1478 ContainerCatalogServices: serviceLabelCount.ContainerCatalogServices,
1479 ContainerTemplateServices: serviceLabelCount.ContainerTemplateServices,
1480 StandardCatalogServices: serviceLabelCount.StandardCatalogServices
1481 };
1482 }
1483 var param2 = "ucsdService";
1484 initialService.multiSelect = false;
1485 initialService.shortName = self.uniqueIdentifierName;
1486 initialService.provider = self.providerName;
1487 initialService.entity = param1;
1488 initialService.datatableID = param2;
1489 initialService.qfilter.sortBy = 'name';
1490 filterGroup.push('Type:' + param1);
1491 initialService.filterGroup = filterGroup;
1492 initialService.qfilter.lastQuery = '*';
1493
1494 initialService.fetch({
1495 reset: true,
1496 sort: true,
1497 async: false,
1498 success: function(collection, response) {
1499 if (collection.length == 0) {
1500 self.initialServiceData = "No Data Available";
1501 } else {
1502 self.initialServiceData = collection.toJSON();
1503 }
1504 },
1505 error: function(collection, response) {
1506 console.log('in view');
1507 console.log('in error');
1508 console.log(collection);
1509
1510 }
1511 });
1512 self.$el.find('#servicespanel').html(self.serviceTemplate({
1513 serviceProviderName: this.providerName,
1514 initialData: this.initialServiceData,
1515 count: ServiceCount
1516 }));
1517 //Service Section Infinite Scroll
1518 $("#discoveredUCSDService").scroll({
1519 name: self.uniqueIdentifierName,
1520 provider: self.providerName,
1521 selfObj:self
1522 }, self.getScrollForService);
1523
1524 $("#discoveredCliqrService").scroll({
1525 name: self.uniqueIdentifierName,
1526 provider: self.providerName,
1527 selfObj:self
1528 }, self.getScrollForService);
1529
1530 },
1531 getScrollForService: function(event) {
1532 var self = event.data.selfObj;
1533 var length = 0;
1534 var infiniteList = '';
1535
1536 if (self.providerName == "CLIQR") {
1537 length = $("#cliqr-Servicetable-Customfixed tbody tr").length;
1538 infiniteList = $('#discoveredCliqrService');
1539 } else if (self.providerName == "UCSD") {
1540 length = $("#ucsd-Servicetable-Customfixed tbody tr").length;
1541 infiniteList = $('#discoveredUCSDService');
1542 }
1543 var offset = 0;
1544 var limit = 10;
1545
1546 if (infiniteList.scrollTop() + infiniteList.innerHeight() >= infiniteList.prop('scrollHeight')) {
1547 offset = length;
1548 var scroll_element = $('.infiniteScrollForService');
1549 var val = scroll_element[0].getElementsByClassName('badge')[0].innerHTML;
1550 var totalRecords = Number(val);
1551 if (length === totalRecords)
1552 return;
1553 var param1 = scroll_element.get(0).getAttribute('data-id');
1554 var filterGroup = new Array();
1555 var initialService = new AdminManageDiscoverServicesCollection();
1556 var param2 = "ucsdService";
1557
1558 initialService.multiSelect = false;
1559 initialService.shortName = event.data.name;
1560 initialService.provider = event.data.provider;
1561 initialService.entity = param1;
1562 initialService.datatableID = param2;
1563 initialService.qfilter.sortBy = 'name';
1564 initialService.qfilter.startRow = offset;
1565 filterGroup.push('Type:' + param1);
1566 initialService.filterGroup = filterGroup;
1567 initialService.qfilter.lastQuery = '*';
1568 initialService.fetch({
1569 reset: true,
1570 sort: true,
1571 async: false,
1572 success: function(collection, response) {
1573 if (collection.length == 0) {
1574 self.serviceEntityData = "No Data Available";
1575 } else {
1576 var bodyContent = "";
1577 var initialServiceData = collection.toJSON();
1578 for(var i=0;i<initialServiceData.length;i++){
1579 var service = initialServiceData[i];
1580 var tableRow = "<tr data-name="+ service.Name + " data-ServiceID=" + service.ServiceID +">";
1581 tableRow += "<td>" + service.Name + "</td>";
1582 tableRow += "<td>" + service.Description + "</td>";
1583 tableRow += "</tr>";
1584 bodyContent = bodyContent + tableRow;
1585 }
1586
1587 if (self.providerName == "CLIQR") {
1588 $("#cliqr-Servicetable-Customfixed tbody tr:last").after(bodyContent);
1589 } else if (self.providerName == "UCSD") {
1590 $("#ucsd-Servicetable-Customfixed tbody tr:last").after(bodyContent);
1591 }
1592 }
1593 },
1594 error: function(collection, response) {
1595 console.log('in view error');
1596 console.log(response);
1597 }
1598 });
1599 }
1600 },
1601 getSelectedServiceEntity: function(e) {
1602 var self = this;
1603 var template = "";
1604 var param1 = e.currentTarget.getAttribute('data-id');
1605 var filterGroup = new Array();
1606 var selectedServiceEntity = new AdminManageDiscoverServicesCollection();
1607 selectedServiceEntity.multiSelect = false;
1608 selectedServiceEntity.shortName = self.uniqueIdentifierName;
1609 selectedServiceEntity.provider = self.providerName;
1610 selectedServiceEntity.entity = param1;
1611 selectedServiceEntity.datatableID = 'ucsdService';
1612 selectedServiceEntity.qfilter.sortBy = 'name';
1613 filterGroup.push('Type:' + param1);
1614 selectedServiceEntity.filterGroup = filterGroup;
1615 selectedServiceEntity.qfilter.lastQuery = '*';
1616 selectedServiceEntity.fetch({
1617 reset: true,
1618 sort: true,
1619 async: false,
1620 success: function(collection, response) {
1621 if (collection.length == 0) {
1622 self.serviceEntityData = "No Data Available";
1623 } else {
1624 self.serviceEntityData = collection;
1625 }
1626 //genHtmlContent = constructEntityDataTemplate();
1627 },
1628 error: function(collection, response) {
1629 console.log('in view error');
1630 console.log(response);
1631 }
1632 });
1633 var serData = {
1634 data: self.serviceEntityData
1635 };
1636 var node_class = $('.list-group-item');
1637 for (var c = 0; c < node_class.length; c++) {
1638 var id = node_class[c].getAttribute('data-id');
1639 if (node_class[c].classList.contains('infiniteScrollForService')) {
1640 node_class[c].classList.remove('infiniteScrollForService');
1641 }
1642 if (id == param1) {
1643 node_class[c].classList.add('infiniteScrollForService');
1644 }
1645 }
1646 var selectedId = '#' + param1 + 'Service';
1647 template = _.template($(selectedId).text());
1648 self.$el.find('.serviceTable').html(template(serData));
1649
1650 },
1651 gotoManageServices: function(e) {
1652 var self = this;
1653 var serviceName = e.currentTarget.getAttribute('data-name');
1654 var ServiceId = e.currentTarget.getAttribute('data-ServiceID');
1655 var buildservice = true;
1656 $('#integrations').unbind();
1657 self.adminManageIntegrationsServiceView = new AdminManageIntegrationsServiceView({
1658 el: $('#integrations'),
1659 buildservice: buildservice,
1660 serviceid: ServiceId,
1661 serviceName: serviceName,
1662 identifierName: self.uniqueIdentifierName,
1663 providerName: self.providerName
1664 });
1665 },
1666 gotoManageWorkflows: function(e) {
1667 var self = this;
1668 var workflowName = e.currentTarget.getAttribute('data-name');
1669 var workflowId = e.currentTarget.getAttribute('data-WorkflowID');
1670 $('#integrations').unbind();
1671 self.adminManageIntegrationsWorkflowView = new AdminManageIntegrationsWorkflowView({
1672 el: $('#integrations'),
1673 workflowId: workflowId,
1674 workflowName: workflowName,
1675 identifierName: self.uniqueIdentifierName,
1676 providerName: self.providerName
1677 });
1678
1679 },
1680 importConnection: function(e) {
1681 var model = this.populateModel(true);
1682 if (model.get('up') == '') {
1683 model.set('up', 'test');
1684 }
1685 this.deleteEntities(model);
1686 },
1687 testConnection: function(e) {
1688 var self = this;
1689 this.spinner = new Spinner().spin(document.getElementById('detailscontent'));
1690 var model = this.populateModel(true);
1691 if (model.get('up') == '') {
1692 model.set('up', 'test');
1693 }
1694 if (model.get('un') == '') {
1695 model.set('un', 'test');
1696 }
1697 if (model.get("passwordParams") == "") {
1698 model.set("passwordParams", "test");
1699 model.set("userNameParams", "test");
1700 }
1701 model.url = CloudApiManager.defaults.urls.validateConnection;
1702 model.save(model.attributes, {
1703 type: 'POST',
1704 success: function(model, response) {
1705 self.clearError();
1706 self.spinner.spin(false);
1707 var strboxHtml = '<div class="psc-modal-warning"><i class="icon-untitled-127"></i><div class="psc-modal-warning-msg">' +
1708 '' + cloudDashboardMessage.getString("16160") + ' to ' + model.attributes.protocol + '://' + model.attributes.hostName + ':' + model.attributes.port +
1709 '</div></div>';
1710 bootbox.dialog({
1711 closeButton: false,
1712 message: strboxHtml,
1713 className: "psc-ucsd-bootbox",
1714 buttons: {
1715 success: {
1716 label: self.i18N.msg_17838,
1717 className: "psc-btn",
1718 callback: function() {
1719 bootbox.hideAll();
1720 return false;
1721 }
1722 }
1723 }
1724 });
1725 self.hideShowConnectionStatus('ACTIVE');
1726 return false;
1727 },
1728 error: function(model, response) {
1729 self.requestErrorHandler(response, '');
1730 self.spinner.spin(false);
1731 var strboxHtml = '<div class="psc-modal-warning"><i class="icon-untitled-127"></i><div class="psc-modal-warning-msg">Cisco Prime Service Catalog was unable to connect to ' +
1732 '' + model.attributes.protocol + '://' + model.attributes.hostName + ':' + model.attributes.port +
1733 '</div></div>';
1734 bootbox.dialog({
1735 closeButton: false,
1736 message: strboxHtml,
1737 className: "psc-ucsd-bootbox",
1738 buttons: {
1739 success: {
1740 label: self.i18N.msg_17838,
1741 className: "psc-btn",
1742 callback: function() {
1743 bootbox.hideAll();
1744 return false;
1745 }
1746 }
1747 }
1748 });
1749 self.hideShowConnectionStatus('FAILED');
1750 }
1751 });
1752 },
1753 updateConnectionStatus: function() {
1754 var self = this;
1755 var model = this.populateModel(true);
1756 if (model.get('up') == '') {
1757 model.set('up', 'test');
1758 }
1759 if (model.get('un') == '') {
1760 model.set('un', 'test');
1761 }
1762 if (model.get("passwordParams") == "") {
1763 model.set("passwordParams", "test");
1764 model.set("userNameParams", "test");
1765 }
1766 model.url = CloudApiManager.defaults.urls.validateConnection;
1767 model.save(model.attributes, {
1768 type: 'POST',
1769 success: function(model, response) {
1770 self.clearError();
1771 self.hideShowConnectionStatus('ACTIVE');
1772
1773 return false;
1774 },
1775 error: function(model, response) {
1776 self.hideShowConnectionStatus('FAILED');
1777 }
1778 });
1779 },
1780 populateModel: function(isReadonly) {
1781 var self = this;
1782 var certificate = '';
1783 var override_Certificate = '';
1784 var connDetails = self.data.attributes;
1785
1786 var model = new ConfigurationModel();
1787 var protocolTxt = connDetails.protocol;
1788 var textCertificate = connDetails.certficateData;
1789 if (protocolTxt != '' && protocolTxt == 'https' && textCertificate != "") {
1790 certificate = textCertificate;
1791 override_Certificate = 'y';
1792 } else {
1793 certificate = textCertificate;
1794 override_Certificate = '';
1795 }
1796
1797 model.set('id', connDetails.primaryID + '');
1798 model.set('shortName', connDetails.shortName);
1799 model.set('description', connDetails.description);
1800 model.set('protocol', connDetails.protocol);
1801 model.set('hostName', connDetails.hostName);
1802 model.set('port', connDetails.port + '');
1803 model.set('un', connDetails.userName);
1804 model.set('up', connDetails.password);
1805 model.set('pollerEnabled', connDetails.pollerEnabled + '');
1806 model.set('exportUser', connDetails.exportUser + '');
1807 model.set('cert', certificate);
1808 model.set('ovCert', override_Certificate);
1809 model.set('validationUrl', connDetails.validationUrl);
1810 model.set('skipValidateCertificate', connDetails.skipValidateCertificate + '');
1811 model.set('authMech', connDetails.authMech);
1812 model.set('userNameParams', connDetails.userNameParams);
1813 model.set('passwordParams', connDetails.passwordParams);
1814 model.set('loginUrl', connDetails.loginUrl);
1815 model.set('authTokenParam', connDetails.token);
1816 model.set('connBaseTemplate', connDetails.baseTemplateID + '');
1817 model.set('virtualHost', connDetails.virtualHost);
1818 model.set('publicKey', connDetails.publicKey);
1819 model.set('secureStringFormat', connDetails.secureStringFormat);
1820 model.set('serverDownNotification', connDetails.serverDownNotification);
1821 model.set('recoveryInterval', connDetails.recoveryInterval);
1822 model.set('inboundQueue', connDetails.inboundQueue);
1823 model.set('messageType', connDetails.messageType);
1824 model.set('basicAuthentication', connDetails.basicAuthentication + '');
1825 model.set('isTriggeredByPoller', false);
1826 model.set('provider', self.providerName);
1827
1828 return model;
1829 },
1830 deleteEntities: function(model) {
1831 var self = this;
1832 model.url = CloudApiManager.defaults.urls.deleteEntity;
1833 model.save(model.attributes, {
1834 type: "POST",
1835 success: function(model, response) {
1836 self.clearError();
1837 if (model.has("List")) {
1838 model.unset("List");
1839 }
1840 if (model.has("ArrayList")) {
1841 model.unset("ArrayList");
1842 }
1843 self.clearError();
1844 self.getData(model);
1845 },
1846 error: function(model, error) {
1847 self.requestErrorHandler(error, '');
1848 }
1849 });
1850 },
1851 getData: function(model) {
1852 var self = this;
1853 $('.ucsd-log-Info').html('');
1854 var opts = {
1855 color: '#ffffff'
1856 };
1857 this.spinner = new Spinner(opts).spin(document.getElementById('spinner'));
1858 this.logs.attributes.active = true;
1859 var options = {
1860 // default delay is 1000ms
1861 delay: 2000,
1862 // run after the first delay. defaults to false
1863 delayed: true,
1864 // condition for keeping polling active (when this stops being true, polling will stop)
1865 condition: function(model) {
1866 return model.get('active') === true;
1867 }
1868 }
1869 this.poller = Poller.get(this.logs);
1870 //Show Mask for modal dialog popup
1871 self.showModalMasking();
1872 $('#loadingPnl').removeClass('loadingClassHide');
1873
1874 /*$('#loadingPnl').enscroll({
1875 verticalTrackClass: 'logPanel',
1876 verticalHandleClass: 'logPanelhandle'
1877 });
1878 var width = document.documentElement.clientWidth;
1879 var height = document.documentElement.clientHeight;
1880
1881 $($('.logPanel')[0].parentNode).css('cssText', ' position: absolute; top: ' + height * 0.3 + 'px;');
1882 $('.logPanel').css('cssText', 'position: relative; margin-left:' + width * 0.68 + 'px;');
1883 */
1884
1885 this.logs.url = CloudApiManager.defaults.urls.importLogs + '?shortName=';
1886 this.logs.url = this.logs.url + this.uniqueIdentifierName;
1887 this.poller.start();
1888
1889 model.url = CloudApiManager.defaults.urls.importData;
1890 model.save(model.attributes, {
1891 type: 'POST',
1892 success: function(model, response) {
1893 setTimeout(function() {
1894 self.cancelPoller();
1895 self.clearError();
1896 self.getImportedObjects();
1897 }, 2000);
1898 },
1899 error: function(model, error) {
1900 self.requestErrorHandler(error, '');
1901 }
1902 });
1903
1904 if (!model.isValid()) {
1905 var strboxHtml = '<div class="psc-modal-warning"><i class="icon-untitled-127"></i><div class="psc-modal-warning-msg">' +
1906 model.get('id') + ' ' + model.validationError + ' </div></div>';
1907 bootbox.dialog({
1908 closeButton: false,
1909 message: strboxHtml,
1910 className: "psc-ucsd-bootbox",
1911 buttons: {
1912 success: {
1913 label: self.i18N.msg_17838,
1914 className: "psc-btn",
1915 callback: function() {
1916 bootbox.hideAll();
1917 return false;
1918 }
1919 }
1920 }
1921 });
1922 }
1923 },
1924 reloadLogs: function(res) {
1925 var logList = res.get('ArrayList');
1926 if (logList === undefined && res.get('List') != null) {
1927 logList = res.get('List');
1928 }
1929 var output = '';
1930 if (logList != null) {
1931 for (var i = 0; i < logList.length; i++) {
1932 if (logList[i] != null && logList[i].description != null && logList[i].description != '') {
1933 output = output + logList[i].description + ' ' + logList[i].type + '(' + logList[i].count + ')<br/>';
1934 }
1935 }
1936 }
1937 $('.ucsd-log-Info').html(output);
1938 },
1939 cancelPoller: function() {
1940 if (this.spinner != null)
1941 this.spinner.spin(false);
1942 this.logs.attributes.active = false;
1943 $('#loadingPnl').addClass('loadingClassHide');
1944 //Hide mask for modal popup
1945 this.hideModalMasking();
1946 $('.ucsd-log-Info').html('');
1947 if (this.poller != null) {
1948 this.poller.stop();
1949 console.log('Clear Poller');
1950 this.poller = null;
1951 }
1952 },
1953 clearError: function() {
1954 var self = this;
1955 $('.error-message-holder').fadeOut(100, function() {
1956 //Body
1957 });
1958
1959 },
1960 showError: function(message, oInput) {
1961 $('.error-message').html(message);
1962 $('.error-message-holder').fadeIn();
1963 if (this.spinner != null) {
1964 this.spinner.spin(false);
1965 }
1966 //Scroll to top to see the error messages
1967 window.scrollTo(0, 0);
1968 },
1969 timeoutHandler: function(response) {
1970 if (response.status == 401) {
1971 location.reload(); /*session timeout*/
1972 }
1973 },
1974 requestError: function(response, prefixMessage) {
1975 this.timeoutHandler(response);
1976 this.cancelPoller();
1977 var message = '';
1978 if (typeof(response.responseText) == 'undefined') {
1979 message = response;
1980 } else if (response.responseText.indexOf('nsapi-error-response') == -1) {
1981 message = response.responseText;
1982 } else {
1983 try {
1984 var xmlDoc = $.parseXML(response.responseText);
1985 var $xml = $(xmlDoc);
1986 var message = $xml.find("nsapi-error-response").text();
1987 if (prefixMessage != '') {
1988 message = '<b>' + prefixMessage + ': </b>' + message;
1989 }
1990 } catch (exception) {
1991 //Error
1992 }
1993 }
1994 if (response != null && response.responseText != null)
1995 console.log('response status : ' + response.status + ' response text : ' + response.responseText);
1996 return message;
1997 },
1998 requestErrorHandler: function(response, prefixMessage) {
1999 if (this.spinner != null) {
2000 this.spinner.spin(false);
2001 }
2002 var message = this.requestError(response, prefixMessage);
2003 if (message != null)
2004 this.showError(message);
2005 },
2006 getTemplate: function() {
2007 var self = this;
2008 if (this.discoveredEntityResult === "") {
2009 self.$el.find('#renderDiscoveredData').html(self.emptyTemplate({}));
2010 } else {
2011 self.$el.find('#renderDiscoveredData').html(self.discoverTemplate({
2012 discoverdData: self.discoverNodesData,
2013 discoverEntityData: self.discoveredEntityResult,
2014 columns: self.initialColum
2015 }));
2016 }
2017 },
2018 getImportedObjects: function() {
2019 var self = this;
2020 self.discoverNodesData = self.getNodesData();
2021 self.discoveredEntityResult = self.getDiscoverEntityData();
2022 self.$el.find('#renderDiscoveredData').html(self.discoverTemplate({
2023 discoverdData: self.discoverNodesData,
2024 discoverEntityData: self.discoveredEntityResult,
2025 columns: self.initialColum
2026 }));
2027 },
2028 getBaseTemplateForCliqr: function() {
2029 var self = this;
2030 self.adminCollection.setFilter({
2031 createConnection: "createConnection",
2032 providerName: self.providerName,
2033 shortName:self.detailsData.shortName
2034 }).fetch({
2035 async: false,
2036 success: function(collection, response) {
2037 var jsonRes = response;
2038 var baseTemplates = [];
2039 var items = jsonRes['ArrayList'];
2040 for (var i = 0; i < items.length; i++) {
2041 if (items[i].ServiceID > 0) {
2042 baseTemplates.push({
2043 templateID: items[i].ServiceID + "",
2044 templateName: items[i].ServiceName,
2045 templateType: items[i].TemplateType,
2046 isVacs: items[i].IsVacs
2047 });
2048 }
2049 }
2050
2051 //self.$el.html(self.template({data : baseTemplates, i18nMessage : self.i18N}));
2052 self.baseTemplateData = baseTemplates;
2053 $(function() {
2054 $('[data-toggle="tooltip"]').tooltip();
2055 });
2056 },
2057 error: function(coll, res) {
2058 console.log('error');
2059 console.log(coll);
2060 console.log(res);
2061 if (res.status === 404) {
2062 console.log('in error 404');
2063
2064 // TODO: handle 404 Not Found
2065 } else if (res.status === 500) {
2066 console.log('in error 500');
2067 // TODO: handle 500 Internal Server Error
2068 }
2069 }
2070 });
2071 return self.baseTemplateData;
2072 },
2073 getCertificate: function() {
2074 var self = this;
2075 var protocolTxt = $("#Protocol").val();
2076 if (self.providerName == 'AMQP' && protocolTxt == 'TCP') {
2077 return;
2078 }
2079 var ShortNameTxt = self.uniqueIdentifierName;
2080 var model = new ConfigurationModel();
2081 model.url = CloudApiManager.defaults.urls.showUCSDServerCert;
2082 model.set('shortName', ShortNameTxt);
2083 model.set('provider', self.providerName);
2084 model.save(model.attributes, {
2085 type: 'PUT',
2086 //async: false,
2087 contentType: "application/json; charset=utf-8",
2088 success: function(model, response) {
2089
2090 var servercert = response.List[0];
2091 var basecert = response.List[1];
2092
2093 $('#Certificate').val(basecert);
2094
2095 self.clearError();
2096 },
2097 error: function(model, response) {
2098 self.requestErrorHandler(response, '');
2099 }
2100 });
2101
2102 },
2103 showLog: function(e) {
2104 var self = this;
2105 $('#showLogPnl').removeClass('showLogDivHide');
2106 $('#showLogPnl').css({
2107 'top': '50px',
2108 'right': '133.283px'
2109 });
2110 $('#logTxtArea').enscroll({
2111 verticalTrackClass: 'track3',
2112 verticalHandleClass: 'handle3'
2113 });
2114 $('#logTxtArea').height('350px');
2115 $('#logTxtArea').next().find('.track3').height($('#logTxtArea').height() + 'px');
2116 $('#logTxtArea').next().find('.track3').css('right', '0px');
2117 $('#logTxtArea').next().find('.track3').css('margin-top', '0px');
2118 $('#logTxtArea').next().find('.handle3').height('35px');
2119 var model = new ConfigurationModel();
2120 var shortName = this.uniqueIdentifierName;
2121 model.url = CloudApiManager.defaults.urls.showUCSDLog + '/' + shortName;
2122 model.save(model.attributes, {
2123 type: 'GET',
2124 contentType: "application/json; charset=utf-8",
2125 success: function(model, response) {
2126 var optionHtml = "";
2127 var logTxtAreaList = "";
2128 var logTxtArea = '';
2129 var logMap = response.Map;
2130 var index = 0;
2131 var selectedIndex = 0;
2132 var selectedKey = "";
2133 var mapLength = Object.keys(response.Map).length - 1;
2134 var htmlList = [];
2135 for (var key in logMap) {
2136 if (index < mapLength) {
2137 if (selectedIndex == 0 || key > selectedIndex) {
2138 selectedIndex = key;
2139 }
2140 htmlList.push('<option class="load-iteration" data-iteration="' + key + '" value="' + key + '">' + logMap[key] + '</option>');
2141 } else {
2142 selectedKey = key;
2143 }
2144 index++;
2145 }
2146 logTxtAreaList += logMap[selectedKey][selectedIndex];
2147 for (var i = htmlList.length - 1; i > -1; i--) {
2148 optionHtml += htmlList[i];
2149 }
2150 var logTxtAreaStrList = logTxtAreaList.split(',');
2151 //logTxtArea = logTxtAreaList.replace(/,/g,'<br />');
2152 for (var j = 0; j < logTxtAreaStrList.length; j++) {
2153 var logLine = logTxtAreaStrList[j];
2154 if (logLine.indexOf("Error") == 0 || logLine.lastIndexOf("failed") == 44) {
2155 logLine = '<font color="red">' + logLine + '</font>'
2156 }
2157 logTxtAreaStrList[j] = logLine;
2158 }
2159 logTxtArea = logTxtAreaStrList.join('<br />');
2160
2161 $('#logTxtAreaMsg').html(logTxtArea);
2162 $('#showLogIteration').html(optionHtml);
2163 $('#showLogIteration').val(selectedIndex);
2164
2165 $('#showLogIteration').on('change', function(e) {
2166 self.showLogIteration(e)
2167 });
2168 self.clearError();
2169 },
2170 error: function(model, response) {
2171 self.requestErrorHandler(response, '');
2172 }
2173 });
2174 },
2175 showLogIteration: function(e) {
2176 var self = this;
2177 var logTxtAreaList = "";
2178 var logTxtArea = '';
2179 var model = new ConfigurationModel();
2180 var iterationNumArr = e.currentTarget.value;
2181 var iterationNum = "0";
2182 if (iterationNumArr === "Refresh") {
2183 iterationNumArr = $('#showLogIteration').val();
2184 }
2185 if (iterationNumArr != null) {
2186 iterationNum = iterationNumArr;
2187 }
2188 var shortName = this.uniqueIdentifierName;
2189 model.url = CloudApiManager.defaults.urls.showUCSDLogByIteration + '/instanceName/' + shortName + '/iterationId/' + iterationNum;
2190 model.save(model.attributes, {
2191 type: 'GET',
2192 contentType: "application/json; charset=utf-8",
2193 success: function(model, response) {
2194 var logMap = response.Map;
2195 for (var key in logMap) {
2196 logTxtAreaList += logMap[key];
2197 }
2198 var logTxtAreaStrList = logTxtAreaList.split(',');
2199 for (var j = 0; j < logTxtAreaStrList.length; j++) {
2200 var logLine = logTxtAreaStrList[j];
2201 if (logLine.indexOf("Error") == 0 || logLine.lastIndexOf("failed") == 44) {
2202 logLine = '<font color="red">' + logLine + '</font>'
2203 }
2204 logTxtAreaStrList[j] = logLine;
2205 }
2206 logTxtArea = logTxtAreaStrList.join('<br />');
2207 $('#logTxtAreaMsg').html(logTxtArea);
2208 self.clearError();
2209 },
2210 error: function(model, response) {
2211 self.requestErrorHandler(response, '');
2212 }
2213 });
2214 },
2215 closeShowLogPnl: function(e) {
2216 $('#showLogPnl').addClass('showLogDivHide');
2217 },
2218 hideShowConnectionStatus: function(status) {
2219 if (status.toUpperCase() == "ACTIVE") {
2220 $('#cloudConnStatus').addClass('active-status');
2221 $('#cloudConnStatus').html('ACTIVE');
2222 } else {
2223 $('#cloudConnStatus').addClass('failed-status');
2224 $('#cloudConnStatus').html('FAILED');
2225 }
2226 },
2227 showModalMasking: function() {
2228 if ($('#maskingDiv')) {
2229 $('#maskingDiv').remove();
2230 }
2231 var loadingDiv = document.createElement('div');
2232 loadingDiv.id = 'maskingDiv';
2233 loadingDiv.style.height = ($(document).height()) + "px";
2234 loadingDiv.className = 'loading-class-wrapper';
2235 var bodyRef = document.getElementsByTagName('body');
2236 bodyRef[0].appendChild(loadingDiv);
2237
2238 $("body").addClass("modal-open");
2239 },
2240 hideModalMasking: function() {
2241 $('#maskingDiv').hide();
2242 $("body").removeClass("modal-open")
2243 },
2244 deleteConnection: function(e) {
2245 var self = this;
2246 var alertStr = '';
2247 if (this.providerName == 'UCSPM') {
2248 alertStr = "Are you sure you want to proceed?";
2249 } else {
2250 alertStr = cloudDashboardMessage.getString("16801");
2251
2252 }
2253 var strboxHtml = '<div class="psc-modal-warning"><i class="icon-untitled-127"></i><div class="psc-modal-warning-msg">' +
2254 '' + alertStr +
2255 '</div></div>';
2256 bootbox.dialog({
2257 closeButton: false,
2258 message: strboxHtml,
2259 className: "psc-ucsd-bootbox",
2260 buttons: {
2261 success: {
2262 label: self.i18N.msg_17838,
2263 className: "psc-btn",
2264 callback: function() {
2265 $('.stackdesigner-delete').addClass('stackdesigner-disabled');
2266 this.spinner = new Spinner().spin(document.getElementById('psc-stack-div'));
2267 var model = self.populateModel(true);
2268 if (model.get('up') == '') {
2269 model.set('up', 'test');
2270 }
2271 if (self.providerName == "WEBCONN") {
2272 if (model.get('un') == '') {
2273 model.set('un', 'test');
2274 }
2275 }
2276 if (model.get("passwordParams") == "") {
2277 model.set("passwordParams", "test");
2278 model.set("userNameParams", "test");
2279 }
2280 model.url = CloudApiManager.defaults.urls.deleteConnection;
2281 model.save({}, {
2282 type: 'DELETE',
2283 success: function(model, response) {
2284 if (this.spinner != null)
2285 this.spinner.spin(false);
2286 self.clearError();
2287 self.gotoIntegrationsPage();
2288 },
2289 error: function(model, error) {
2290 if (this.spinner != null)
2291 this.spinner.spin(false);
2292 self.requestErrorHandler(error, '');
2293 }
2294 });
2295 }
2296 },
2297 main: {
2298 label: cloudDashboardMessage.getString("64"),
2299 className: "btn-gray",
2300 callback: function() {
2301 bootbox.hideAll();
2302 return false;
2303 }
2304 }
2305 }
2306 });
2307 },
2308 showHideManageWorkflow: function(providerName) {
2309 var self=this;
2310 if (providerName.toUpperCase() === "UCSD") {
2311 var isExportUser = self.data.attributes.exportUser;
2312 var isMSPEnabled = self.data.attributes.msp;
2313 if(isExportUser == 1 && isMSPEnabled == 1){
2314 $('#enityManageWrokflowSection').removeClass('manageWorkflowSectionHide');
2315 this.showManageWorkflowPanel();
2316 }else{
2317 $('#enityManageWrokflowSection').addClass('manageWorkflowSectionHide');
2318 }
2319 } else {
2320 $('#enityManageWrokflowSection').addClass('manageWorkflowSectionHide');
2321 }
2322 },
2323 showManageWorkflowPanel: function() {
2324 var self = this;
2325 var tabTemplate = "";
2326 var filterGroup = new Array();
2327 var workflowColl = new AdminManageDiscoverServicesCollection();
2328
2329 var param1 = "manageWorkflows";
2330 var param2 = "manageWorkflows";
2331 workflowColl.multiSelect = false;
2332 workflowColl.shortName = self.uniqueIdentifierName;
2333 workflowColl.provider = self.providerName;
2334 workflowColl.entity = param1;
2335 workflowColl.datatableID = param2;
2336 workflowColl.qfilter.sortBy = 'name';
2337 filterGroup.push('Type:' + param1);
2338 workflowColl.filterGroup = filterGroup;
2339 workflowColl.qfilter.lastQuery = '*';
2340
2341 workflowColl.fetch({
2342 reset: true,
2343 sort: true,
2344 async: false,
2345 success: function(collection, response) {
2346 if (collection.length == 0) {
2347 self.workflowData = "No Data Available";
2348 } else {
2349 self.workflowData = collection.toJSON();
2350 }
2351 },
2352 error: function(collection, response) {
2353 console.log('in view');
2354 console.log('in error');
2355 console.log(collection);
2356
2357 }
2358 });
2359 self.$el.find('#renderManageWrokflowData').html(self.workflowTemplate({
2360 initialData: this.workflowData,
2361 i18nMessage: self.i18N
2362 }));
2363 },
2364 render: function(e) {
2365 var self = this;
2366 var templData = "";
2367 var checkBoxStatus = self.detailsData;
2368 if (checkBoxStatus.skipCertificate === 0) {
2369 this.skipValidCheckBox = false;
2370 } else if (checkBoxStatus.skipCertificate === 1) {
2371 this.skipValidCheckBox = true;
2372 }
2373 if (checkBoxStatus.exportUser === 0 && checkBoxStatus.msp === 0) {
2374 this.syncUserCheckBox = false;
2375 } else if (checkBoxStatus.exportUser === 1 && checkBoxStatus.msp === 1) {
2376 this.syncUserCheckBox = true;
2377 }else if(checkBoxStatus.exportUser === 1 || checkBoxStatus.msp === 0){
2378 this.syncUserCheckBox = false;
2379 }
2380 if (checkBoxStatus.pollerEnable === 0) {
2381 this.enablePollerCheckbox = false;
2382 } else if (checkBoxStatus.pollerEnable === 1) {
2383 this.enablePollerCheckbox = true;
2384 }
2385 if (self.providerName == "CLIQR") {
2386 self.templData = self.getBaseTemplateForCliqr();
2387 }
2388 self.$el.html(self.template({
2389 imgURL: this.providerImage,
2390 data: this.detailsData,
2391 discoverdData: this.discoverNodesData,
2392 discoverEntityData: this.discoveredEntityResult,
2393 providerName: this.providerName,
2394 columns: this.initialColum,
2395 i18nMessage: self.i18N,
2396 protocol: this.detailsData.protocol,
2397 skipCert: (this.skipValidCheckBox).toString(),
2398 msp: (this.syncUserCheckBox).toString(),
2399 poller: (this.enablePollerCheckbox).toString(),
2400 baseTemData: this.templData
2401 }));
2402 self.getTemplate();
2403 $("#discoverObjectList a:first").addClass('infiniteScroll');
2404
2405 }
2406 });
2407 return AdminManageIntegrationsView;
2408});