cockpit/js/instance.js in cpee-1.5.19 vs cockpit/js/instance.js in cpee-1.5.20

- old
+ new

@@ -3,10 +3,11 @@ var myid = ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c => (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)); var paths = '#dat_details input, #dat_details textarea, #dat_details select, #dat_details button, #dat_details [contenteditable], #dat_dataelements input, #dat_dataelements textarea, #dat_dataelements select, #dat_dataelements button, #dat_dataelements [contenteditable], #dat_endpoints input, #dat_endpoints textarea, #dat_endpoints select, #dat_endpoints button, #dat_endpoints [contenteditable], #dat_attributes input, #dat_attributes textarea, #dat_attributes select, #dat_attributes button, #dat_attributes [contenteditable]'; var loading = false; var subscription; var subscription_state = 'less'; +var graph_changed = new Event("graph:changed", {"bubbles":true, "cancelable":false}); var save = {}; save['state']= undefined; save['dsl'] = undefined; save['graph'] = undefined; save['graph_theme'] = undefined; @@ -72,12 +73,12 @@ $("button[name=instance]").click(function(){ ui_activate_tab("#tabinstance"); monitor_instance($("input[name=instance-url]").val(),$("input[name=res-url]").val(),false,false); }); $("button[name=loadtestset]").click(function(e){new CustomMenu(e).menu($('#predefinedtestsets'),function(){ load_testset(false) } ); }); $("button[name=loadtestsetfile]").click(load_testsetfile); $("button[name=loadmodelfile]").click(load_modelfile); $("button[name=loadmodeltype]").click(function(e){new CustomMenu(e).menu($('#modeltypes'),load_modeltype, $("button[name=loadmodeltype]")); }); - $("button[name=savetestset]").click(function(){ save_testset(); }); - $("button[name=savesvg]").click(function(){ save_svg(); }); + $("button[name=savetestsetfile]").click(function(){ save_testsetfile(); }); + $("button[name=savesvgfile]").click(function(){ save_svgfile(); }); $("button[name=state_start]").click(function(){ $(this).attr("disabled","disabled");start_instance(); }); $("button[name=state_stop]").click(function(){ $(this).attr("disabled","disabled");stop_instance(); }); $("button[name=state_replay]").click(function(){ $(this).attr("disabled","disabled");replay_instance(); }); $("button[name=state_abandon]").click(function(){ aba_instance(); }); $("input[name=votecontinue]").click(check_subscription); @@ -115,10 +116,17 @@ if ($(v).text() == q.load) { $(v).attr('data-selected','selected'); } }); } ui_activate_tab("#tabexecution"); create_instance($("body").attr('current-base'),q.load,true,false); + } else if (q.instantiate) { + if (q.instantiate.match(/https?:\/\//)) { + ui_activate_tab("#tabexecution"); + create_instance_from($("body").attr('current-base'),q.instantiate,false); + } else { + alert('Nope. Url!'); + } } else if (q.new || q.new == "") { ui_activate_tab("#tabinstance"); create_instance($("body").attr('current-base'),"Plain Instance",false,false); } else if (q.monitor) { ui_activate_tab("#tabexecution"); @@ -185,10 +193,33 @@ subscription_state = 'less'; format_visual_vote_clear(); } }// }}} +function create_instance_from(base,url,exec) {// {{{ + $.get({ + url: url, + dataType: "text", + success: function(res) { + $.ajax({ + type: "POST", + url: base, + contentType: 'application/xml', + dataType: "text", + headers: { 'CONTENT-ID': 'xml' }, + data: res, + success: function(res){ + var iu = (base + "//" + res + "/").replace(/\/+/g,"/").replace(/:\//,"://"); + monitor_instance(iu,$("body").attr('current-resources'),false,exec); + }, + error: function(a,b,c) { + alert("No CPEE running."); + } + }); + } + }); +}// }}} function create_instance(base,name,load,exec) {// {{{ var info = name ? name : prompt("Instance info?", "Enter info here"); if (info != null) { if (info.match(/\S/)) { $.ajax({ @@ -329,12 +360,13 @@ subscription = b[1]; } }); append_to_log("monitoring", "id", subscription); websocket(); - if (load || exec) + if (load || exec) { load_testset(exec); + } } }); }, error: function(a,b,c) { alert("This ain't no CPEE instance"); @@ -478,18 +510,22 @@ graphrealization.set_description($(dslx), true); graphrealization.notify = function(svgid) { var g = graphrealization.get_description(); save['graph'] = $X(g); save['graph'].find('[xmlns]').removeAttr('xmlns'); + document.dispatchEvent(graph_changed); $.ajax({ type: "PUT", url: url + "/properties/values/description/", data: ({'content': '<content>' + g + '</content>'}) }); adaptor_update(); manifestation.events.click(svgid); format_instance_pos(); + if (manifestation.selected() == "unknown") { // nothing selected + $('#dat_details').empty(); + } }; adaptor_update(); monitor_instance_pos(); $('#dat_details').empty(); }); @@ -726,11 +762,22 @@ data: ({value: "stopping"}), error: report_failure }); }// }}} -function save_testset() {// {{{ +function save_testsetfile() {// {{{ + var def = new $.Deferred(); + def.done(function(name,testset) { + var ct = new Date(); + $('#savetestsetfile').attr('download',name + '_' + ct.strftime("%Y-%m-%dT%H%M%S%z") + '.xml'); + $('#savetestsetfile').attr('href','data:application/xml;charset=utf-8;base64,' + $B64(testset.serializePrettyXML())); + document.getElementById('savetestsetfile').click(); + }); + get_testset(def); +}// }}} + +function get_testset(deferred) {// {{{ var url = $('body').attr('current-instance'); var testset = $X('<testset/>'); $.ajax({ type: "GET", @@ -768,31 +815,28 @@ var name = $("value > info",res).text(); var pars = $X('<attributes/>'); pars.append($(res.documentElement).children()); pars.find('uuid').remove(); testset.append(pars); - var ct = new Date(); - $('#savetestset').attr('download',name + '_' + ct.strftime("%Y-%m-%dT%H%M%S%z") + '.xml'); - $('#savetestset').attr('href','data:application/xml;charset=utf-8;base64,' + $B64(testset.serializePrettyXML())); - document.getElementById('savetestset').click(); + deferred.resolve(name,testset); }, - error: report_failure + error: function() { deferred.reject(); report_failure(); } }); }, - error: report_failure + error: function() { deferred.reject(); report_failure(); } }); }, - error: report_failure + error: function() { deferred.reject(); report_failure(); } }); }, - error: report_failure + error: function() { deferred.reject(); report_failure(); } }); }, - error: report_failure + error: function() { deferred.reject(); report_failure(); } }); }// }}} -function save_svg() {// {{{ +function save_svgfile() {// {{{ var url = $('body').attr('current-instance'); var gc = $('#graphcanvas').clone(); $.ajax({ type: "GET", @@ -828,12 +872,12 @@ type: "GET", url: url + "/properties/values/attributes/info/", success: function(res){ var name = $(res.documentElement).text(); - $('#savesvg').attr('download',name + '.svg'); - $('#savesvg').attr('href','data:application/xml;charset=utf-8;base64,' + $B64(gc.serializeXML())); - document.getElementById('savesvg').click(); + $('#savesvgfile').attr('download',name + '.svg'); + $('#savesvgfile').attr('href','data:application/xml;charset=utf-8;base64,' + $B64(gc.serializeXML())); + document.getElementById('savesvgfile').click(); }, error: report_failure }); } });