2 ============LICENSE_START=======================================================
4 ================================================================================
5 Copyright (C) 2017 AT&T Intellectual Property. All rights
7 ================================================================================
8 Licensed under the Apache License, Version 2.0 (the "License");
9 you may not use this file except in compliance with the License.
10 You may obtain a copy of the License at
12 http://www.apache.org/licenses/LICENSE-2.0
14 Unless required by applicable law or agreed to in writing, software
15 distributed under the License is distributed on an "AS IS" BASIS,
16 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 See the License for the specific language governing permissions and
18 limitations under the License.
19 ============LICENSE_END============================================
20 ===================================================================
21 ECOMP is a trademark and service mark of AT&T Intellectual Property.
28 background-color:#f2bfab;
33 background-color:#dddd;
42 .fileUpload input.upload {
51 filter: alpha(opacity = 0);
56 display: inline-block;
73 background-color: #f5f5f5;
75 margin: 15px 15px 0 0;
80 #tcaEditHolder #properties_tab>div+div {
95 .tcaParentItems label{
105 border-bottom: 1px solid #ddd;
106 border-collapse: collapse;
116 #tcaTable tr.highlight{
117 background-color: #f5f5f5;
130 <script type="text/javascript">
131 function disablefile() {
133 document.getElementById("fileUpload").disabled = true;
137 function disableSVN() {
138 var selectLength = document.querySelectorAll(".disabled-block-container .tab-close-popup");
139 if(selectLength && selectLength.length>0){
140 for(var i = 0; i< selectLength.length ; i++){
141 selectLength[i].disabled = true;
145 document.getElementById("schemaLocation").disabled = true;
146 document.getElementById("userID").disabled = true;
147 document.getElementById("password").disabled = true;
153 <div id="configure-widgets" class="disabled-block-container">
154 <div class="modal-header">
155 <button type="button" class="close" ng-click="close(false)"
156 aria-hidden="true" style="margin-top: -3px">×</button>
157 <h4>TCA Micro Services</h4>
159 <div class="modal-body">
160 <div style="height: 10px"></div>
161 <div class="panel panel-default" id="panelHolder">
163 <span id="formSpan" style="display:none;">
164 <div class="panel-body">
166 <form class="tcaParentItems">
168 <div class="col-sm-8 form-group">
169 <label class="col-sm-3"> Name </label>
170 <div class="col-sm-9" style="padding:0px;">
171 <input class="form-control" type="text" maxlength="48" id="tname" name="tname"></input>
175 <div class="col-sm-8 form-group" style="display:none;">
176 <label class="col-sm-3"> UUID </label>
177 <div class="col-sm-9" style="padding:0px;">
178 <input class="form-control" onkeydown="return false;" type="text" id="tuuid" name="tuuid"></input>
182 <div class="col-sm-8 form-group" style="display:none;">
183 <label class="col-sm-3"> NF Code </label>
184 <div class="col-sm-9" style="padding:0px;">
185 <input class="form-control" onkeydown="return false;" type="text" id="tnfc" name="tnfc"></input>
191 <div class="col-sm-8 form-group">
192 <label class="col-sm-3"> Policy </label>
193 <div class="col-sm-9" style="padding:0px;">
194 <select name="tcaPol" id="tcaPol" enableFilter="true"></select>
198 <div class="col-sm-8 form-group" style="display:none;">
199 <label class="col-sm-3"> Policy ID </label>
200 <div class="col-sm-9" style="padding:0px;">
201 <input class="form-control" onkeydown="return false;" type="text" id="tcaPolId" name="tcaPolId"></input>
208 <div class="tcaBody row">
209 <div class="col-sm-5" style="padding:0px 5px; margin: 15px;">
210 <div class="panel panel-default" id="tcaTableHolder">
211 <table id="tcaTable">
214 <div id="tcaError" class="tcaErr">Error: Please define/delete this new threshold</div>
215 <div id="tcaUnique" class="tcaErr">Error: Duplicate Set Name Found</div>
216 <div style="float:left">
217 <button type="button" id="createNewThresh" class="btn btn-sm">New Threshold</button>
219 <div style="float:right">
220 <button type="button" id="deleteThresh" class="btn btn-sm glyphicon glyphicon-trash" disabled></button>
225 <div id="tcaEditHolder" class="panel panel-default col-sm-6">
226 <div class="tab-content">
227 <div id="properties_tab" class="form-vertical">
229 <label class="control-label">Metric</label>
231 <select id="fieldPathM" name="fieldPathM"></select>
235 <label class="control-label">Operator</label>
237 <select id="operator" name="operator"></select>
241 <label class="control-label">Threshold</label>
243 <input type="text" maxlength="10" class="form-control" name="threshold"
244 onkeypress="return isNumberKey(event)" id="threshold"></input>
259 <div class="modal-footer">
260 <!--<button ng-click="reset()" class="btn btn-primary" style="float:left">Reset</button>-->
261 <button id="savePropsBtn" class="btn btn-primary">Close</button>
262 <button ng-click="close(true)" id="close_button"
263 class="btn btn-primary">Cancel</button>
266 <script language="javascript">
267 // helper that make jquery objects visibles or invisible
268 // to use instead of show to keep placeholder size correct
269 jQuery.fn.visible = function() {
270 return this.css('visibility', 'visible');
272 jQuery.fn.invisible = function() {
273 return this.css('visibility', 'hidden');
276 var generateTUUID = function(count){
277 var d = new Date().getTime();
278 var tuuid = 'xxxxxxxx-xxxx-txxx-xxxx-xxxxxxxxxxxx'.replace(/[x]/g, function(c){
279 var r = (d + Math.random()*16)%16 | 0;
280 d = Math.floor(d/16);
281 return (c == 'x' ? r : (r*0x3|0*8)).toString(16);
283 $("#formId" + count + " #tuuid").val(tuuid);
286 loadPropertyWindow("tca");
288 //load dropdown with policy options
289 if (typeof allPolicies !== "undefined"){
290 $.each(Object.keys(allPolicies), function(val, text) {
291 $('#tcaPol').append($('<option></option>').val(text).html(text));
293 } else if (typeof elementMap !== "undefined"){
294 for (key in elementMap){
295 if (key.indexOf("Policy")>-1){
296 $.each(Object.keys(elementMap[key]), function(val, text){
298 $('<option></option>').val(text).html(text)
307 //load metrics dropdown
308 if (elementMap["global"]){
309 for (var i = 0; i < (elementMap["global"].length); i++){
310 if ((elementMap["global"][i]["name"]) == "vf"){
311 var vfSel = elementMap["global"][i]["value"];
312 if (vf_Services["shared"]["byVf"][vfSel]["kpi"]){
313 $.each((vf_Services["shared"]["byVf"][vfSel]["kpi"]), function(val, text) {
314 $('#fieldPathM').append(
315 $('<option></option>').val(val).html(text)
324 var arr = elementMap[lastElementSelected];
326 if (arr !== undefined) {
328 var num = add_one_more();
329 for (var i=0; i< arr[x].length; i++){
331 if (arr[x][i].hasOwnProperty('serviceConfigurations')){
332 for (var j=0; j<arr[x][i]["serviceConfigurations"].length; j++){
333 $("#formId" + num + " #tcaTable").prepend("<tr><td>"
334 +arr[x][i]["serviceConfigurations"][j][0]+" "
335 +(Object.keys(defaults_props['tca']['operator']).find(key => defaults_props['tca']['operator'][key] == (arr[x][i]["serviceConfigurations"][j][1])))+ " "
336 +arr[x][i]["serviceConfigurations"][j][2]+"</td></tr>");
339 $("#formId" + num + " #"+arr[x][i].name).val(arr[x][i].value);
342 $('#go_properties_tab'+num).text($('#formId' +num+ ' #tname').val());
343 $("#formId"+num + " #properties_tab").invisible();
347 $("#savePropsBtn").click(function(event) {
349 if (($('#formId'+num+' #tcaTable .highlight').length > 0 ) &&
350 (!($('#formId'+num+' #threshold').val()) || !($('#formId'+num+' #fieldPathM').val())) ) {
351 $('#formId'+num+' #tcaError').show();
354 $('#formId'+num+' .tcaErr').hide();
355 if ($('#formId'+num+' #tcaTable .highlight').length > 0){
356 $('#formId'+num+' #tcaTable .highlight td').text(
357 $('#formId'+num+' #fieldPathM').val() + ' ' +
358 $('#formId'+num+' #operator').val() + ' ' +
359 $('#formId'+num+' #threshold').val());
362 $('.formId').each(function(){
363 var count = $(this).attr('id').slice(-1);
364 var header = $(this).find('.tcaParentItems').serializeArray();
368 $('#formId' +count+' #tcaTable tr').each(function(){
369 $('td', this).each(function(){
370 var splitTd = $(this).text().split(' ');
371 splitTd[1]=defaults_props['tca']['operator'][splitTd[1]];
372 var checkByKpi = vf_Services["shared"]["byKpi"][splitTd[0].replace(/\s/g, "")];
373 if (checkByKpi["fieldPath"]){
374 splitTd.push(Object.keys(vf_Services["shared"]["byKpi"][splitTd[0].replace(/\s/g, "")]["fieldPath"])[0]);
376 if ((checkByKpi["nfNamingCode"]) && (checkNF)){
377 $.grep(header, function(e,i){
378 if (e.name == "tnfc"){
379 header[i]["value"] = (Object.keys(checkByKpi["nfNamingCode"])[0]);
384 sconfa.push(splitTd);
388 var polSel = $(this).find('.tcaParentItems #tcaPol').val();
389 $.grep(header, function(e,i){
390 if (e.name == "tcaPolId"){
392 if (typeof allPolicies !== "undefined"){
393 header[i]["value"] = allPolicies[polSel][1]["value"];
394 } else if (typeof elementMap !== "undefined"){
395 for (key in elementMap){
396 if (key.indexOf("Policy")>-1){
397 header[i]["value"] = elementMap[key][polSel][1]["value"];
402 header[i]["value"]="";
407 sconf["serviceConfigurations"]=sconfa;
409 saveP[$(this).find('.tcaParentItems #tname').val()] = header;
412 saveProperties(saveP);
413 $("#close_button").click();
417 function uniquet(arr) {
419 for (var i=0, l=arr.length; i<l; i++){
420 if (a.indexOf(arr[i]) === -1 && arr[i] !== ''){
424 if (a.length==arr.length){
431 function add_one_more(){
432 $("#nav_Tabs li").removeClass("active");
433 var form=$($("#formSpan").children()[0]).clone();
435 if($(".formId").length>0){
439 for(var i=0;i<s.length; i++){
440 if(parseInt($(s[i]).attr("id").substring(6))>greatest){
441 greatest=parseInt($(s[i]).attr("id").substring(6))
445 $("#panelHolder").append(('<span class="formId" id="formId'+count+'"></span>'));
448 $("#panelHolder").append('<span class="formId" id="formId1"></span>');
451 $("#add_one_more").parent().before(' <li class="active"><a id="go_properties_tab'+count+'">New_Set</a><button id="tab_close'+count+'" type="button" class="close tab-close-popup" aria-hidden="true" style="margin-top: -30px;margin-right: 5px">×</button></li>');
452 $("#formId"+count).append(form);
453 $('#formId'+count+ ' #properties_tab').invisible();
454 $(".formId").not($("#formId"+count)).css("display","none");
455 addCustListen(count);
460 function isNumberKey(event){
461 var charCode = (event.which) ? event.which : event.keyCode
462 if (charCode > 31 && (charCode < 48 || charCode > 57)){
468 function addCustListen(count) {
469 $('#go_properties_tab' + count).click(function(event) {
470 if ($("#nav_Tabs li.active").length>0){
471 var oldCount = $("#nav_Tabs li.active").find("a").attr("id").slice(-1);
472 if (($('#formId'+oldCount+' #tcaTable .highlight').length > 0 ) &&
473 (!($('#formId'+oldCount+' #threshold').val()) || !($('#formId'+oldCount+' #fieldPathM').val())) ) {
474 $('#formId'+oldCount+' #tcaError').show();
477 $('#formId'+oldCount+' .tcaErr').hide();
478 if ($('#formId'+oldCount+' #tcaTable .highlight').length > 0){
479 $('#formId'+oldCount+' #tcaTable .highlight td').text(
480 $('#formId'+oldCount+' #fieldPathM').val() + ' ' +
481 $('#formId'+oldCount+' #operator').val() + ' ' +
482 $('#formId'+oldCount+' #threshold').val());
484 $("#formId"+oldCount+" #tcaTable .highlight").removeClass("highlight")
488 $("#nav_Tabs li").removeClass("active");
489 $(this).parent().addClass("active");
490 $("#formId"+count).css("display","");
491 $(".formId").not($("#formId"+count)).css("display","none");
494 $('#tab_close'+count).click(function(event){
495 $(this).parent().remove();
496 $("#formId"+count).remove();
499 $('#formId'+count+' #tcaTable').on('click', 'tr', function(event){
500 if (($('#formId'+count+' #tcaTable .highlight').length > 0 ) &&
501 (!($('#formId'+count+' #threshold').val()) || !($('#formId'+count+' #fieldPathM').val())) ) {
502 $('#formId'+count+' #tcaError').show();
505 $('#formId'+count+' .tcaErr').hide();
506 if ($('#formId'+count+' #tcaTable .highlight').length > 0){
507 $('#formId'+count+' #tcaTable .highlight td').text(
508 $('#formId'+count+' #fieldPathM').val() + ' ' +
509 $('#formId'+count+' #operator').val() + ' ' +
510 $('#formId'+count+' #threshold').val());
512 //$('#formId'+count+' #tcaTable .highlight').text();
513 $(this).addClass('highlight').siblings().removeClass('highlight');
514 var str = $(this).text().split(' ');
515 $('#formId'+count + ' #properties_tab').visible();
516 if (str.length == 3){
517 $('#formId'+count+' #fieldPathM').val(str[0]).multiselect('refresh');
518 $('#formId'+count+' #operator').val(str[1]).multiselect('refresh');
519 $('#formId'+count+' #threshold').val(str[2]);
522 if ((!(readOnly||readMOnly)) && ($('#formId'+count + ' #deleteThresh').prop('disabled'))) {
523 $('#formId'+count + ' #deleteThresh').prop('disabled', false);
528 $('#formId'+count+' #deleteThresh').on('click', function(){
529 $('#formId'+num+' .tcaErr').hide();
530 $('#formId'+count+ ' #properties_tab').invisible();
531 $('#formId'+count+ ' #tcaTable .highlight').remove();
532 $('#formId'+count+ ' #deleteThresh').prop('disabled', true);
535 $('#formId'+count+' #createNewThresh').on('click', function(){
536 if (($('#formId'+count+' #tcaTable .highlight').length > 0 ) &&
537 (!($('#formId'+count+' #threshold').val()) || !($('#formId'+count+' #fieldPathM').val())) ){
538 $('#formId'+count+' #tcaError').show();
541 $('#formId'+count+' .tcaErr').hide();
542 if ($('#formId'+count+' #tcaTable .highlight').length > 0){
543 $('#formId'+count+' #tcaTable .highlight td').text(
544 $('#formId'+count+' #fieldPathM').val() + ' ' +
545 $('#formId'+count+' #operator').val() + ' ' +
546 $('#formId'+count+' #threshold').val());
548 $('#formId'+count+ ' #properties_tab').visible();
549 if (('#formId'+count+' #tcaTable .highlight').length > 0 ){
550 $('#formId'+count+' #tcaTable tr.highlight').removeClass('highlight');
552 $('#formId'+count+' #tcaTable').prepend('<tr class="highlight"><td>New Threshold</td></tr>');
553 $('#formId'+count+' #fieldPathM').prop("selectedIndex", 0).multiselect('refresh');
554 $('#formId'+count+' #operator').prop("selectedIndex", 0).multiselect('refresh');
555 $('#formId'+count+' #threshold').val("");
557 if ($('#formId'+count + ' #deleteThresh').prop('disabled')) {
558 $('#formId'+count + ' #deleteThresh').prop('disabled', false);
563 $('#formId'+count+' #tname').on('change',function(){
564 $('#go_properties_tab'+count).text($('#formId'+count+' #tname').val())