6 .done(function( data ) {
7 if(data != undefined && data != null){
8 console.dir(data.sliValuesObj[0]['AicHoming_PROPS']);
9 console.dir(data.sliValuesObj[0]['AicHoming_RPCS']);
20 function addParam(idVal){
22 //console.log(global_editor.getText());
23 if(global_added_obj["a" + idVal] != undefined && global_added_obj["a" + idVal] != null){
24 global_added_obj["a" + idVal]= global_added_obj["a" + idVal]+1;
25 $("#addCnt" + + idVal).text("added " + global_added_obj["a" + idVal] + " times");
27 global_added_obj["a" + idVal]= 1;
28 $("#addCnt" + + idVal).text("added " + global_added_obj["a" + idVal] + " time");
30 var nameVal = document.getElementById("a" + idVal).value;
31 var valueBoxVal = document.getElementById("valbox" + idVal).value;
32 //$("#btn" + idVal).val('Added');
33 //$("#btn" + idVal).attr('disabled','disabled');
34 //console.dir(nameVal);
35 //console.dir(valueBoxVal);
38 var paramElement = "<parameter name='" + nameVal + "' value='" + valueBoxVal + "'/>\n";
39 global_editor.setText(global_editor.getText() + paramElement);
42 var g_currValuesObj={};
44 function filterValues(filterVal){
47 var valuesObj = g_currValuesObj;
50 if(filterVal != null && filterVal != undefined){
51 filterVal=filterVal.trim();
53 searchValues = filterVal.split(/ /);
54 //console.log("filterVal:" + filterVal);
55 if(searchValues != null && searchValues != undefined){
56 for (var key in valuesObj) {
57 if (valuesObj.hasOwnProperty(key)) {
59 if(Array.isArray(valuesObj[key])){
60 var arrObj=valuesObj[key];
62 for(var i=0;i<arrObj.length;i++){
64 for(var k=0;k<searchValues.length;k++){
65 if(arrObj[i].indexOf(searchValues[k]) != -1){
69 if(foundCount == searchValues.length){
71 newArrObj.push(arrObj[i]);
74 newValuesObj[key] = newArrObj;
78 $("#matchedCntId").html(matchedCnt);
80 newValuesObj = valuesObj;
82 var valuesHtml=buildValuesHtml(newValuesObj);
84 $("#sli-values-div").html(valuesHtml);
87 function buildValuesHtml(valuesObj){
91 for (var key in valuesObj) {
92 if (valuesObj.hasOwnProperty(key)) {
93 var v = "<div style='font-weight:bold;font-size:1.0em;'><label>" + key + "<b/label>";
94 if(Array.isArray(valuesObj[key])){
95 var arrObj=valuesObj[key];
97 for(var i=0;i<arrObj.length;i++){
98 var idVal = idCounter++;
99 var addBtn = "<input id='btn" + idVal + "' type='button' style='background-color:#D6EBFF;' value='Add as Parameter'" + "onclick='addParam(\"" + idVal + "\")'><div style='float:right' id='addCnt" + idVal + "'></div>";
100 var variableBox = "";
101 var valBox = "<input id='valbox" + idVal + "' type='text' style='width:500px;height:30px;' value=''>";
102 if(arrObj[i] != undefined && arrObj[i].length <150){
103 //v += "<div style='width:1150px;background:aliceblue;border-color:aliceblue' class='valueBoxDiv' id='valueBoxDiv" + idVal + "'>" + "<input style='width:1125px;background:rgb(223, 191, 191);color:rgb(32, 45, 87);' type='text' readonly='1' id='a" + idVal + "' onclick='selectText(\"" + idVal+"\",\"" + key + "\")' value='" +arrObj[i] + "' title='" + arrObj[i] + "' >" ;
104 v += "<div style='width:1150px;background:aliceblue;border-color:aliceblue' class='valueBoxDiv' id='valueBoxDiv" + idVal + "'>" + "<input style='width:1125px;background:aliceblue;color:rgb(32, 45, 87);' type='text' readonly='1' id='a" + idVal + "' onclick='selectText(\"" + idVal+"\",\"" + key + "\")' value='" +arrObj[i] + "' title='" + arrObj[i] + "' >" ;
105 variableBox = "<input style='width:1125px' id='variableBox" + idVal + "' type='text' value='`$" + arrObj[i] + "`'>";
107 v+= "<div style='width:1150px;background:aliceblue;border-color:aliceblue' class='valueBoxDiv' id='valueBoxDiv" + idVal + "'>" + "<textarea style='width:1125px;background:aliceblue;color:rgb(32, 45, 87);' readonly='1' id='a" + idVal + "' onclick='selectText(\"" + idVal+"\",\"" + key + "\")' title='" + arrObj[i] + "' >" + arrObj[i] + "</textarea>";
108 variableBox = "<textarea style='width:1125px' id='variableBox" + idVal + "' >`$" + arrObj[i] + "`'</textarea>";
110 v += "<div id='valAddDiv" + idVal + "' style='display:none;'>" + valBox + " " + addBtn + "</div>" +
111 "<div id='variableBoxDiv" + idVal + "' style='display:none;color:rgb(32, 45, 87);'>Display as a variable<br>" + variableBox + "</div>" + "</div>";
114 htmlVal+= v + "</div>";
122 function getModuleName(){
123 var activeWorkspace=RED.view.getWorkspace();
125 RED.nodes.eachNode(function(n) {
126 if (n.z == activeWorkspace) {
127 if(n.type == 'service-logic'){
128 //console.log("getModuleName():<" + n.module + ">");
135 var global_added_obj={};
136 var displayingRpcs = false;
137 function showRpcsValuesBox(editor,valuesObj){
138 displayingRpcs = true;
139 showValuesBox(editor,valuesObj);
142 function showValuesBox(editor,valuesObj){
143 var moduleName = getModuleName();
144 var obj = valuesObj[moduleName];
145 //console.dir(valuesObj);
148 if(obj == undefined){
149 moduleObj[moduleName] = ["No SLI values setup for this module " + moduleName + ".Upload the yang file for this module or if already uploaded ,load it from the Available Modules from the Menu."];
151 moduleObj[moduleName] = obj;
153 showValuesBoxForModule(editor,moduleObj,moduleName);
156 function showValuesBoxForModule(editor,valuesObj,moduleName){
157 global_editor=editor;
158 g_currValuesObj = valuesObj;
159 //console.log(editor.getText());
160 //populate the valid SLI values
161 var valuesHtml="<style>.color-dialog {background:aliceblue;border-color:lightgrey;border-width:3px;border-style:solid; }</style><div style='float:left;width:1200px;background:aliceblue'><input style='width:1125px' id='filter-id' type='text' value='' placeholder='To filter the values type words seperated by space in this box' onkeyup='filterValues(this.value)'></div><div style='float:left;color:green;font-size:0.8em' id='matchedCntId'></div><div style='clear:both'></div><div id='sli-values-div' style='width:1200px;'>" ;
162 valuesHtml+=buildValuesHtml(valuesObj);
163 valuesHtml+="</div>";
167 var title = "SLI Values for Module " + moduleName;
169 title = "RPCs for Module " + moduleName;
171 $('#sli-values-dialog').dialog({
176 dialogClass: 'color-dialog',
178 $("#sli-values-dialog").dialog("widget").find(".ui-dialog-buttonpane").css({'background': 'aliceblue'});
179 $(this).html(valuesHtml);
183 displayingRpcs = false;
184 //$(this).dialog("close");
185 $(this).dialog("destroy");
188 close: function(ev,ui){
189 displayingRpcs = false;
190 $(this).dialog("destroy");
192 }); // end dialog div
195 function showCommentsBox(){
196 var comments = $("#node-input-comments").val();
197 var commentsBoxHtml="<div><textarea style='font-size:18px;height:150px;width:390px;' id='taCommentId'>" + comments + "</textarea></div>" ;
199 var nodeName=$("#node-input-name").val();
200 $('#comments-dialog').dialog({
202 title: "Add comments for Node " + nodeName,
207 $(this).html(commentsBoxHtml);
211 "Save Comments": function () {
212 var v=$("#taCommentId").val();
216 $("#node-input-btnComments").html("<span style='color:blue;'><b>View Comments</b></span>");
218 $("#node-input-btnComments").html("<b>Add Comments</b>");
221 //console.log("value from text area" + v);
222 $("#node-input-comments").val(v);
223 $(this).dialog("close");
224 //$(this).dialog("destroy");
226 Cancel: function () {
227 var v=$("#taCommentId").val();
231 $("#node-input-btnComments").html("<span style='color:blue;'><b>View Comments</b></span>");
233 $("#node-input-btnComments").html("<b>Add Comments</b>");
236 $(this).dialog("close");
237 //$(this).dialog("destroy");
240 close: function(ev,ui){
241 //console.log("closing..");
242 $(this).dialog("destroy");
244 }).html(commentsBoxHtml);
246 //console.log("done");
248 function functionDialogResize(ev,ui) {
249 console.log("ui.size.height:" + ui.size.height);
250 $(this).css("height",(ui.size.height-275)+"px");
253 $( this ).on("dialogresize", functionDialogResize);
256 $( this ).one("dialogopen", function(ev) {
257 var size = $( "#sliValDiv" ).dialog('option','sizeCache-function');
259 functionDialogResize(null,{size:size});
266 function selectText(objId,groupVal){
267 //console.log(objId + groupVal);
268 //console.log(objId + groupVal);
269 $(document).ready(function(){
270 //console.log("doc ready");
271 //console.dir($('#valAddDiv' + objId));
272 if ($('#valAddDiv' + objId).is(":visible")) {
273 $("#variableBoxDiv" + objId ).hide("slow");
274 //$("#a" + objId ).css({"background": "rgb(223, 191, 191)",
275 // "color": "rgb(32, 45, 87)"});
276 $("#a" + objId ).css({"background": "aliceblue",
277 "color": "rgb(32, 45, 87)"});
278 /*"color": "rgb(32, 45, 87)"});*/
279 $("#valAddDiv" + objId ).hide("slow");
280 $("#valueBoxDiv" +objId).css({"border-color": "aliceblue",
281 "border-width":"1px",
282 "background-color":"aliceblue",
283 "border-style":"solid"});
284 //$("#valAddDiv" + objId ).fadeOut("slow");
286 $("#variableBoxDiv" + objId ).show("slow");
287 $("#valAddDiv" + objId).show("slow");
288 /*$("#valueBoxDiv" +objId).css({"border-color": "rgb(75, 111, 147)",
289 "border-width":"5px",
290 "background-color": "rgb(223, 191, 191)",
291 "border-style":"solid",
292 "border-bottom": "5px solid rgb(75, 111, 147)"});
294 $("#valueBoxDiv" +objId).css({"border-color": "rgb(75, 111, 147)",
295 "border-width":"3px",
296 "background-color": "aliceblue",
297 "border-style":"solid",
298 "border-bottom": "3px solid rgb(75, 111, 147)"});
299 /*$("#a" + objId ).css({"background": "rgb(223, 191, 191)",
300 "color": "rgb(75, 111, 147)"});
302 $("#a" + objId ).css({"background": "aliceblue",
303 "color": "rgb(75, 111, 147)"});
305 $("#a" + objId).select();
307 //console.log("group-heading" + objId);
308 // var obj= document.getElementById("group-heading" + objId);
309 // obj.innerText = groupVal;
310 // obj.style.color = "blue";
314 function hidePrevGroup(objId){
315 // console.log("mouseout" );
316 // var obj= document.getElementById("group-heading" + objId);
317 // obj.innerText = "";
321 var $cache = $('#getFixed');
322 if ($(window).scrollTop() > 100)
329 'position': 'relative',
334 $(window).scroll(fixDiv);
336 function isScrolledIntoView(elem)
339 var $window = $(window);
341 var docViewTop = $window.scrollTop();
342 var docViewBottom = docViewTop + $window.height();
344 var elemTop = $elem.offset().top;
345 var elemBottom = elemTop + $elem.height();
347 return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop));
351 function getCommits(filePath){
352 var urlPath="/getCommitsInfo";
353 $.get(urlPath,{"filePath" : filePath })
354 .done(function( data ) {
355 if(data != undefined && data != null){
356 //console.log(data.stdout);
357 var jsonObj = JSON.parse(data.stdout);
358 var codeCloudFilesHtmlStr = $( "#codecloud-browser-dialog" ).html();
359 var htmlStr = getCCFileHtmlStr(filePath,jsonObj,codeCloudFilesHtmlStr);
360 $( "#codecloud-browser-dialog" ).html(htmlStr);
362 for(var i=0;i<jsonObj.length;i++){
363 console.log("commit:" + jsonObj[i].commit);
364 console.log("date:" + jsonObj[i].date);
365 console.log("author:" + jsonObj[i].author);
366 console.log("comment:" + jsonObj[i].comment);
371 .fail(function(err) {
378 function getCCFileHtmlStr(filePath,rows,codeCloudFilesHtmlStr){
379 var styleStr = "<style> " +
380 "table#cct01 { width:100%; } \n" +
381 "table#cct01 th,table#cct01 td { border: 1px solid black; border-collapse: collapse; } \n" +
382 "table#cct01 th,table#cct01 td { padding: 5px; text-align: left; } \n" +
383 "table#cct01 tr:nth-child(even) { background-color: #eee; }\n" +
384 "table#cct01 tr:nth-child(odd) { background-color:#fff; }\n" +
385 "table#cct01 th { background-color: #65a9d7; color: white; }\n" +
386 "table#cct01 a { color: #337ab7; }\n" +
387 "table#cct01 a:link { color: #65a9d7; }\n" +
388 "table#cct01 a:visited { color: #636; }\n" +
389 "table#cct01 a:hover { color: #3366CC; cursor: pointer }\n" +
390 "table#cct01 a:active { color: #65a9d7 }\n" +
391 "table#cct01 caption { display: table-caption; text-align: center; background: #eee; font-weight: bold; font-size: 1.1em; border: 1px solid black; }\n" +
395 if(rows != null && rows.length >0){
396 var alertDialog = '<div id="ccAlertdialog"></div>';
397 htmlStr= alertDialog + "<div style='width:1050;height:650'>" + styleStr;
398 htmlStr += "<table id='cct01' >";
399 htmlStr += "<caption id='ccCaptionId'>" + filePath + "</caption>";
401 htmlStr += "<th>Commit ID</th>" ;
402 htmlStr += "<th>Date</th>" ;
403 htmlStr += "<th>Author</th>" ;
404 htmlStr += "<th>Comment</th>" ;
406 if(rows != null && rows.length == 0){
408 htmlStr += "<td><b>No rows found</b></td>";
409 htmlStr += "</tr></table></div>";
412 for(var i=0;i<rows.length;i++){
414 var _commitId = row.commit;
416 var author = row.author;
417 var comment = row.comment;
419 htmlStr += "<td><a onclick=\"javascript:importCCFlow('" + _commitId + "','" + filePath + "')\">" + _commitId + "</a></td>";
420 htmlStr += "<td>" + dt + "</td>";
421 htmlStr += "<td>" + author + "</td>";
422 htmlStr += "<td>" + comment + "</td>";
425 htmlStr += "</table>";
428 //console.log(htmlStr);
433 var gitLocalFlowFiles=[];
434 function filterGitLocalFlows(filterVal){
437 var valuesObj = gitLocalFlowFiles;
438 //console.dir(codeCloudFlowFiles);
439 var updatedValuesObj =[];
440 var searchValues =[];
441 if(filterVal != null && filterVal != undefined){
442 filterVal=filterVal.trim();
444 searchValues = filterVal.split(/ /);
445 //console.log("filterVal:" + filterVal);
446 //console.dir(searchValues);
447 if(searchValues != null && searchValues != undefined){
449 for(var k=0;k<searchValues.length;k++){
451 valuesObj=updatedValuesObj;
454 for(var i=0;i<valuesObj.length;i++){
455 var patt = new RegExp(searchValues[k],"gi");
456 if(patt.test(valuesObj[i])){
458 updatedValuesObj.push(valuesObj[i]);
463 updatedValuesObj = valuesObj;
465 //console.dir(updatedValuesObj);
467 if(updatedValuesObj != null){
468 var files=updatedValuesObj;
469 //console.dir(files);
470 files.sort(function (a,b){
479 for(var i=0;files != null && i<files.length;i++){
480 html+="<li><a href=\"#\" onclick=\"importGitLocalFlow('" + files[i] + "')\">" + files[i] + "</a></li>";
485 $( "#gitlocal-data-container" ).html(html);
488 var codeCloudFlowFiles=[];
489 function filterFlows(filterVal){
492 var valuesObj = codeCloudFlowFiles;
493 //console.dir(codeCloudFlowFiles);
494 var updatedValuesObj =[];
495 var searchValues =[];
496 if(filterVal != null && filterVal != undefined){
497 filterVal=filterVal.trim();
499 searchValues = filterVal.split(/ /);
500 //console.log("filterVal:" + filterVal);
501 //console.dir(searchValues);
502 if(searchValues != null && searchValues != undefined){
504 for(var k=0;k<searchValues.length;k++){
505 for(var i=0;i<valuesObj.length;i++){
506 var patt = new RegExp(searchValues[k],"gi");
507 if(patt.test(valuesObj[i])){
509 updatedValuesObj.push(valuesObj[i]);
514 updatedValuesObj = valuesObj;
516 //console.dir(updatedValuesObj);
518 if(updatedValuesObj != null){
519 var files=updatedValuesObj;
520 //console.dir(files);
521 files.sort(function (a,b){
530 for(var i=0;files != null && i<files.length;i++){
531 html+="<li><a href=\"#\" onclick=\"getCommits('" + files[i] + "')\">" + files[i] + "</a></li>";
536 $( "#codecloud-data-container" ).html(html);
539 var yangFilesList=[];
541 function filterYangFiles(filterVal){
544 var valuesObj = yangFilesList;
545 var updatedValuesObj =[];
546 var searchValues =[];
547 if(filterVal != null && filterVal != undefined){
548 filterVal=filterVal.trim();
550 searchValues = filterVal.split(/ /);
551 if(searchValues != null && searchValues != undefined){
553 for(var k=0;k<searchValues.length;k++){
554 for(var i=0;i<valuesObj.length;i++){
555 var patt = new RegExp(searchValues[k],"gi");
556 if(patt.test(valuesObj[i])){
558 updatedValuesObj.push(valuesObj[i]);
563 updatedValuesObj = valuesObj;
565 //console.dir(updatedValuesObj);
567 if(updatedValuesObj != null){
568 var files=updatedValuesObj;
569 //console.dir(files);
570 files.sort(function (a,b){
579 for(var i=0;files != null && i<files.length;i++){
580 html+="<li><a href=\"#\" onclick=\"getYangFile('" + files[i] + "')\">" + files[i] + "</a></li>";
585 $( "#list-yang-data-container" ).html(html);
589 function filterYangFiles(filterVal){
591 var valuesObj = yangFilesList;
592 var updatedValuesObj =[];
593 var searchValues =[];
594 if(filterVal != null && filterVal != undefined){
595 filterVal=filterVal.trim();
597 searchValues = filterVal.split(/ /);
598 if(searchValues != null && searchValues != undefined){
600 for(var k=0;k<searchValues.length;k++){
601 for(var i=0;i<valuesObj.length;i++){
602 var patt = new RegExp(searchValues[k],"gi");
603 if(patt.test(valuesObj[i])){
605 updatedValuesObj.push(valuesObj[i]);
610 updatedValuesObj = valuesObj;
612 //console.dir(updatedValuesObj);
613 var html="<table id='yang-file-list-table' border=1>";
615 html+="<th>File</th>";
616 html+="<th>Delete</th>";
619 if(updatedValuesObj != null){
620 var files=updatedValuesObj;
621 //console.dir(files);
622 files.sort(function (a,b){
631 for(var i=0;files != null && i<files.length;i++){
632 html+="<tr><td><a href=\"#\" onclick=\"getYangFile('" + files[i] + "')\">" + files[i] + "</a></td><td>" + "<input type='button' onclick='deleteYangFile(\"" + files[i] + "\")' value='Delete'></td></td></td></tr>";
638 $( "#yang-files-data-container" ).html(html);
641 function getYangFile(fileName){
642 $("#dwnldYangFormId").remove();
643 //using form to submit
644 var form = $('<form id="dwnldYangFormId" method="POST" action="/downloadYang"></form>');
645 form.append('<input type="hidden" name="fileName" value="' + fileName + '"/>');
646 form.appendTo('body');
647 $("#dwnldYangFormId").submit();
650 function deleteYangFile(fileName){
651 var reqData= {"fileName":fileName};
652 $.post( "/deleteYangFile",reqData )
653 .done(function( data ) {
655 .fail(function(err) {
656 console.log( "error" + err );
659 $("#list-yang-browser-dialog").dialog("close");
660 $("#btn-list-yang-files").trigger("click");
664 function importCCFlow(commitId,filePath){
665 var urlPath="/importCodeCloudFlow";
666 $.get(urlPath,{"commitId" : commitId,"filePath" : filePath })
667 .done(function( data ) {
668 var nodeSet = getCurrentFlowNodeSet();
669 //console.dir(nodeSet);
670 if(nodeSet != null && nodeSet.length == 0){
671 RED.view.setIsImportAction(true);
673 if(data != undefined && data != null){
674 //console.log(data.stdout);
675 var jsonObj = JSON.parse(data.stdout);
676 $( "#codecloud-browser-dialog" ).dialog("close");
677 RED.view.importNodes(JSON.stringify(jsonObj));
680 .fail(function(err) {
681 RED.notify("Could not import flow from code cloud.");
682 $( "#codecloud-browser-dialog").dialog("close");
683 console.log( "error occured importing flow.");
689 function importGitLocalFlow(filePath){
690 var urlPath="/importGitLocalFlow";
691 $.get(urlPath,{"filePath" : filePath})
692 .done(function( data ) {
693 var nodeSet = getCurrentFlowNodeSet();
694 //console.dir(nodeSet);
695 if(nodeSet != null && nodeSet.length == 0){
696 RED.view.setIsImportAction(true);
698 if(data != undefined && data != null){
699 //console.log(data.stdout);
702 jsonObj = JSON.parse(data.stdout);
703 $( "#gitlocal-browser-dialog" ).dialog("close");
704 RED.view.importNodes(JSON.stringify(jsonObj));
706 RED.notify("Could not import flow from Local Git Repository.");
707 $( "#gitlocal-browser-dialog").dialog("close");
708 console.log( "error occured importing flow." + err);
711 RED.notify("Could not import flow from Local Git Repository.");
712 $( "#gitlocal-browser-dialog").dialog("close");
713 console.log( "error occured importing flow." + err);
716 .fail(function(err) {
717 RED.notify("Could not import flow from Local Git Repository.");
718 $( "#gitlocal-browser-dialog").dialog("close");
719 console.log( "error occured importing flow.");
725 var availableYangModules=[];
726 function filterYangModules(filterVal){
729 var valuesObj = availableYangModules ;
730 //console.dir(codeCloudFlowFiles);
731 var updatedValuesObj =[];
732 var searchValues =[];
733 if(filterVal != null && filterVal != undefined){
734 filterVal=filterVal.trim();
736 searchValues = filterVal.split(/ /);
737 //console.log("filterVal:" + filterVal);
738 //console.dir(searchValues);
739 if(searchValues != null && searchValues != undefined){
741 for(var k=0;k<searchValues.length;k++){
743 valuesObj=updatedValuesObj;
746 for(var i=0;i<valuesObj.length;i++){
747 var patt = new RegExp(searchValues[k],"gi");
748 if(patt.test(valuesObj[i])){
750 updatedValuesObj.push(valuesObj[i]);
755 updatedValuesObj = valuesObj;
757 //console.dir(updatedValuesObj);
759 html+="<table border=1>";
762 html+="<th>Load</th>";
763 html+="<th>Module</th>";
766 if(updatedValuesObj != null){
767 var files=updatedValuesObj;
768 //console.dir(files);
769 files.sort(function (a,b){
779 for(var i=0;files != null && i<files.length;i++){
780 var val = files[i].replace(/:.*/,"");
781 if(files[i].indexOf(":checked") != -1){
782 html+="<tr><td>" + count + "</td><td><input type='checkbox' checked value='" + val + "'></td><td>" + val + "</td></tr>";
784 html+="<tr><td>" + count + "</td><td><input type='checkbox' value='" + val + "'></td><td>" + val + "</td></tr>";
791 $( "#yang-modules-data-container" ).html(html);
793 function filterCtxVariables(filterVal){
795 var valuesObj = dgParsedParameters;
796 var newValuesObj ={};
797 var searchValues =[];
798 if(filterVal != null && filterVal != undefined){
799 filterVal=filterVal.trim();
801 searchValues = filterVal.split(/ /);
802 //console.log("filterVal:" + filterVal);
803 //console.log("searchValues:" + searchValues);
804 if(searchValues != undefined && searchValues != null && searchValues != ""){
805 for (var key in valuesObj) {
806 if (valuesObj.hasOwnProperty(key)) {
807 key = key.replace(/\$/g,"");
809 for(var k=0;k<searchValues.length;k++){
810 if(key.indexOf(searchValues[k]) != -1){
811 //console.log("key:" +key + " searchValues:" + searchValues[k]);
815 if(foundCount == searchValues.length){
817 newValuesObj[key] = "";
821 $("#ctxCountId").html(matchedCnt);
823 newValuesObj = dgParsedParameters;
824 $("#ctxCountId").html(Object.keys(newValuesObj).length);
826 //console.log("Object key length:" + Object.keys(g_currCtxVariables).length);
827 var valuesHtml=buildCtxValuesHtml(newValuesObj);
828 valuesHtml+="</div>";
829 $("#ctx-values-div").html(valuesHtml);
832 function selectCtxText(objId,groupVal){
833 $(document).ready(function(){
834 if ($('#ctxValAddDiv' + objId).is(":visible")) {
835 $("#aCtx" + objId ).css({"background": "aliceblue",
836 "color": "rgb(32, 45, 87)"});
837 /*"color": "rgb(32, 45, 87)"});*/
838 $("#ctxValAddDiv" + objId ).hide("slow");
839 $("#ctxValueBoxDiv" +objId).css({"border-color": "aliceblue",
840 "border-width":"1px",
841 "background-color":"aliceblue",
842 "border-style":"solid"});
843 //$("#valAddDiv" + objId ).fadeOut("slow");
845 $("#ctxValAddDiv" + objId).show("slow");
846 $("#ctxValueBoxDiv" +objId).css({"border-color": "rgb(75, 111, 147)",
847 "border-width":"3px",
848 "background-color": "aliceblue",
849 "border-style":"solid",
850 "border-bottom": "3px solid rgb(75, 111, 147)"});
851 $("#aCtx" + objId ).css({"background": "aliceblue",
852 "color": "rgb(75, 111, 147)"});
854 $("#aCtx" + objId).select();
856 //console.log("group-heading" + objId);
857 // var obj= document.getElementById("group-heading" + objId);
858 // obj.innerText = groupVal;
859 // obj.style.color = "blue";
862 function buildCtxValuesHtml(valuesObj){
869 var newParameterRow = "New Parameter Name:<input style='width:500px' id='aCtx-new' type='text' value='' placeholder='Enter new parameter name'>Value:<input style='width:100px' id='avalbox-new' type='text' value=''> <input name='typeBtns-new' type='radio' value='string' checked> string" +
870 " <input name='typeBtns-new' type='radio' value='int'> int" +
871 " <input name='typeBtns-new' type='radio' value='boolean'> boolean " + "<input id='abtn-new' type='button' style='background-color:#D6EBFF;' value='Add'" + "onclick='addNewParameter(\"" + "-new" + "\")'>";
872 htmlVal = "<div style='font-weight:bold;font-size:1.0em;'>" + newParameterRow + "</div>";
873 for (var key in valuesObj) {
874 if (valuesObj.hasOwnProperty(key)) {
875 key = key.replace(/\$/g,"");
876 var inputStr = $("#test-dg-request").val();
877 var inputObj = JSON.parse(inputStr);
878 var paramsArrObj = inputObj["input"]["sli-parameter"];
879 var alreadyAdded = false;
880 var intChecked = false;
881 var booleanChecked = false;
883 for(var i=0;paramsArrObj != null && i<paramsArrObj.length ;i++){
884 if(paramsArrObj[i]["parameter-name"] == key){
885 if (paramsArrObj[i].hasOwnProperty("string-value")) {
886 prevValue=paramsArrObj[i]["string-value"];
887 }else if(paramsArrObj[i].hasOwnProperty("int-value")) {
889 prevValue=paramsArrObj[i]["int-value"];
890 }else if(paramsArrObj[i].hasOwnProperty("boolean-value")) {
891 booleanChecked = true;
892 prevValue=paramsArrObj[i]["boolean-value"];
899 var idVal = idCounter++;
900 v="<div style='font-weight:bold;font-size:1.0em;'>";
903 addBtn = "<input id='ubtn" + idVal + "' type='button' style='background-color:#D6EBFF;' value='Update'" + "onclick='updateParamVal(\"" + idVal + "\")'> <input id='abtn" + idVal + "' type='button' style='background-color:#D6EBFF;' value='Delete'" + "onclick='updateParam(\"" + idVal + "\")'>";
905 addBtn = "<input id='abtn" + idVal + "' type='button' style='background-color:#D6EBFF;' value='Add'" + "onclick='updateParam(\"" + idVal + "\")'>";
908 var typeBtns = "<input name='typeBtns" + idVal + "' type='radio' value='string' checked> string" +
909 " <input name='typeBtns" + idVal + "' type='radio' value='int'> int" +
910 " <input name='typeBtns" + idVal + "' type='radio' value='boolean'> boolean";
912 typeBtns = "<input name='typeBtns" + idVal + "' type='radio' value='string'> string" +
913 " <input name='typeBtns" + idVal + "' type='radio' value='int' checked> int" +
914 " <input name='typeBtns" + idVal + "' type='radio' value='boolean'> boolean";
915 }else if(booleanChecked){
916 typeBtns = "<input name='typeBtns" + idVal + "' type='radio' value='string'> string" +
917 " <input name='typeBtns" + idVal + "' type='radio' value='int'> int" +
918 " <input name='typeBtns" + idVal + "' type='radio' value='boolean' checked> boolean";
920 var valBox =typeBtns + "<br><br>" + "<input id='avalbox" + idVal + "' type='text' style='width:500px;height:30px;' value='" + prevValue + "'>";
923 v += "<div style='width:1150px;background:aliceblue;border-color:aliceblue' class='ctxValueBoxDiv' id='ctxValueBoxDiv" + idVal + "'>" + "<input style='width:1125px;background:aliceblue;color:rgb(32, 45, 87);' type='text' readonly='1' id='aCtx" + idVal + "' onclick='selectCtxText(\"" + idVal+"\",\"" + key + "\")' value='" + key + "' title='" + key + "' >" ;
925 v+= "<div style='width:1150px;background:aliceblue;border-color:aliceblue' class='ctxValueBoxDiv' id='ctxValueBoxDiv" + idVal + "'>" + "<textarea style='width:1125px;background:aliceblue;color:rgb(32, 45, 87);' readonly='1' id='actx" + idVal + "' onclick='selectCtxText(\"" + idVal+"\",\"" + key + "\")' title='" + key + "' >" + key + "</textarea></div>";
927 v += "<div id='ctxValAddDiv" + idVal + "' style='display:none;'>" + valBox + " <div id='btnsDivId" + idVal + "' style='display:inline'> " + addBtn + "</div></div></div>";
929 htmlVal+= v + "</div>";
934 function updateParam(idVal){
935 var action = $("#abtn" + idVal).val();
936 if(action == "Delete"){
937 var nameVal = document.getElementById("aCtx" + idVal).value;
938 var valueBoxVal = document.getElementById("avalbox" + idVal).value;
939 //$("#addCnt" + idVal).text("added");
940 var addBtn = "<input id='abtn" + idVal + "' type='button' style='background-color:#D6EBFF;' value='Add'" + "onclick='updateParam(\"" + idVal + "\")'>";
941 $("#btnsDivId" + idVal).html(addBtn);
942 var inputStr = $("#test-dg-request").val();
943 var inputObj = JSON.parse(inputStr);
944 var paramsArrObj = inputObj["input"]["sli-parameter"];
946 for(var i=0;paramsArrObj != null && i<paramsArrObj.length ;i++){
947 if(paramsArrObj[i]["parameter-name"] == nameVal){
954 inputObj["input"]["sli-parameter"].splice(index,1);
956 var newInputStr = JSON.stringify(inputObj,null,4);
957 $("#test-dg-request").val(newInputStr);
959 var nameVal = document.getElementById("aCtx" + idVal).value;
960 var valueBoxVal = document.getElementById("avalbox" + idVal).value;
961 //$("#addCnt" + idVal).text("added");
962 var addBtn = "<input id='ubtn" + idVal + "' type='button' style='background-color:#D6EBFF;' value='Update'" + "onclick='updateParamVal(\"" + idVal + "\")'> <input id='abtn" + idVal + "' type='button' style='background-color:#D6EBFF;' value='Delete'" + "onclick='updateParam(\"" + idVal + "\")'>";
963 $("#btnsDivId" + idVal).html(addBtn);
964 var inputStr = $("#test-dg-request").val();
967 inputObj = JSON.parse(inputStr);
969 $("#test-dg-response").val("Json parsing error" + e);
972 var typeVal = "input[name=typeBtns" + idVal + "]:checked";
973 var valType =$(typeVal).val();
974 //console.log(valType);
975 var parameterObj ={};
976 if(valType == "string"){
977 parameterObj = { "parameter-name" : nameVal, "string-value": valueBoxVal};
978 }else if(valType == "int"){
981 intValue = parseInt(valueBoxVal);
984 parameterObj = { "parameter-name" : nameVal, "int-value": intValue};
985 }else if(valType == "boolean"){
986 var booleanValue = false;
988 booleanValue = JSON.parse(valueBoxVal);
991 parameterObj = { "parameter-name" : nameVal, "boolean-value": booleanValue};
993 inputObj["input"]["sli-parameter"].push(parameterObj);
996 newInputStr = JSON.stringify(inputObj,null,4);
999 $("#test-dg-request").val(newInputStr);
1000 //console.log("newInputStr:" + newInputStr);
1004 function addNewParameter(idVal){
1005 var nameVal = document.getElementById("aCtx" + idVal).value;
1006 var valueBoxVal = document.getElementById("avalbox" + idVal).value;
1007 var inputStr = $("#test-dg-request").val();
1010 inputObj = JSON.parse(inputStr);
1012 $("#test-dg-response").val("Json parsing error" + e);
1015 var typeVal = "input[name=typeBtns" + idVal + "]:checked";
1016 var valType =$(typeVal).val();
1017 //console.log(valType);
1018 var parameterObj ={};
1019 if(valType == "string"){
1020 parameterObj = { "parameter-name" : nameVal, "string-value": valueBoxVal};
1021 }else if(valType == "int"){
1024 intValue = parseInt(valueBoxVal);
1027 parameterObj = { "parameter-name" : nameVal, "int-value": intValue};
1028 }else if(valType == "boolean"){
1029 var booleanValue = false;
1031 booleanValue = JSON.parse(valueBoxVal);
1034 parameterObj = { "parameter-name" : nameVal, "boolean-value": booleanValue};
1036 inputObj["input"]["sli-parameter"].push(parameterObj);
1037 var newInputStr ="";
1039 newInputStr = JSON.stringify(inputObj,null,4);
1042 $("#test-dg-request").val(newInputStr);
1043 $( "#ctx-values-dialog" ).dialog("close");
1044 $('.ui-button:contains("$Variables")').click();
1045 //console.log("newInputStr:" + newInputStr);
1048 function updateParamVal(idVal){
1049 var nameVal = document.getElementById("aCtx" + idVal).value;
1050 //var valueBoxVal = document.getElementById("avalbox" + idVal).value;
1051 var valueBoxVal = $("#avalbox" + idVal).val();
1052 var inputStr = $("#test-dg-request").val();
1055 inputObj = JSON.parse(inputStr);
1057 $("#test-dg-response").val("Json parsing error" + e);
1060 var paramsArrObj = inputObj["input"]["sli-parameter"];
1062 for(var i=0;paramsArrObj != null && i<paramsArrObj.length ;i++){
1063 if(paramsArrObj[i]["parameter-name"] == nameVal){
1064 var typeVal = "input[name=typeBtns" + idVal + "]:checked";
1065 var valType =$(typeVal).val();
1066 var parameterObj ={};
1067 if(valType == "string"){
1069 delete paramsArrObj[i]["int-value"];
1070 delete paramsArrObj[i]["boolean-value"];
1073 paramsArrObj[i]["string-value"] = valueBoxVal;
1074 }else if(valType == "int"){
1077 intValue = parseInt(valueBoxVal);
1081 delete paramsArrObj[i]["string-value"];
1082 delete paramsArrObj[i]["boolean-value"];
1085 paramsArrObj[i]["int-value"] = intValue;
1086 }else if(valType == "boolean"){
1087 var booleanValue = false;
1089 booleanValue = JSON.parse(valueBoxVal);
1093 delete paramsArrObj[i]["int-value"];
1094 delete paramsArrObj[i]["string-value"];
1097 paramsArrObj[i]["boolean-value"] = booleanValue;
1102 var newInputStr ="";
1104 newInputStr = JSON.stringify(inputObj,null,4);
1107 $("#test-dg-request").val(newInputStr);
1110 function showCtxVariables(moduleName,rpcName){
1111 var valuesHtml="<style>.color-dialog {background:aliceblue;border-color:lightgrey;border-width:3px;border-style:solid; }</style><div style='float:left;width:1200px;background:aliceblue'><input style='width:1125px' id='ctx-filter-id' type='text' value='' placeholder='To filter the values type words seperated by space in this box' onkeyup='filterCtxVariables(this.value)'></div><div style='float:left;color:green;font-size:0.8em' id='ctxCountId'></div><div style='clear:both'></div><div id='ctx-values-div' style='width:1200px;'>" ;
1113 var currInput = $("#test-dg-request").val();
1114 var currInputObj =null;
1116 currInputObj = JSON.parse(currInput);
1118 $("#test-dg-response").val("Json parsing error" + e);
1122 if(currInputObj != null){
1124 cParams = currInputObj["input"]["sli-parameter"];
1129 for(var i=0;cParams != null && i<cParams.length;i++){
1130 var pName = cParams[i]["parameter-name"];
1131 if(pName != undefined && pName != null && !dgParsedParameters.hasOwnProperty("$" + pName)){
1132 dgParsedParameters[pName] = "";
1135 valuesHtml+=buildCtxValuesHtml(dgParsedParameters);
1136 valuesHtml+="</div>";
1139 var title = "Context Variables used in this DG for Module: " + moduleName + " RPC: " + rpcName;
1140 $('#ctx-values-dialog').dialog({
1145 dialogClass: 'color-dialog',
1147 $("#ctx-values-dialog").dialog("widget").find(".ui-dialog-buttonpane").css({'background': 'aliceblue'});
1148 $(this).html(valuesHtml);
1151 Close: function () {
1152 $(this).dialog("destroy");
1155 close: function(ev,ui){
1156 $(this).dialog("destroy");
1158 }); // end dialog div
1160 function loadInputFile(fileName){
1161 var reqData = {'fileName' :fileName};
1162 $.post("/loadInputFile",reqData)
1163 .done(function( data ) {
1164 if(data != undefined && data != null){
1165 //console.log("data" );
1166 //console.dir(data);
1167 $("#test-dg-request").val(data.input);
1170 .fail(function(err) {
1171 $("#test-dg-response").val("could not load input file" + fileName);
1172 console.log( "failed to load input. " + err );
1174 .always(function() {
1175 $( "#list-input-browser-dialog" ).dialog("close");
1179 function deleteInputFile(fileName){
1180 var reqData = {'fileName' :fileName};
1181 $.post("/deleteInputFile",reqData)
1182 .done(function( data ) {
1184 .fail(function(err) {
1186 .always(function() {
1187 $( "#list-input-browser-dialog" ).dialog("close");
1188 $('.ui-button:contains("Load")').click();