cockpit/js/instance.js in cpee-2.0.9 vs cockpit/js/instance.js in cpee-2.0.11

- old
+ new

@@ -249,60 +249,64 @@ } }// }}} function sse() { //{{{ var url = $('body').attr('current-instance'); - es = new EventSource(url + "/notifications/subscriptions/" + subscription + "/sse/"); - es.onopen = function() { - append_to_log("monitoring", "opened", ""); - }; - es.onmessage = function(e) { - data = JSON.parse(e.data); - if (data['type'] == 'event') { - switch(data['topic']) { - case 'dataelements': - monitor_instance_values("dataelements"); - break; - case 'description': - monitor_instance_dsl(); - break; - case 'endpoints': - monitor_instance_values("endpoints"); - break; - case 'attributes': - monitor_instance_values("attributes"); - monitor_instance_transformation(); - if (!suspended_monitoring) { // or else it would load twice, because dsl changes also trigger - monitor_graph_change(true); - } - break; - case 'task': - if ($('#trackcolumn').length > 0) { - $('#trackcolumn').append($('<iframe src="track.html?monitor=' + data.content.received['CPEE-INSTANCE-URL'].replace(/\/*$/,'/') + '"></iframe>')); - } - break; - case 'state': - monitor_instance_state_change(data['content']['state']); - break; - case 'position': - monitor_instance_pos_change(data['content']); - break; - case 'activity': - monitor_instance_running(data['content'],data['name']); - break; + if (subscription) { + es = new EventSource(url + "/notifications/subscriptions/" + subscription + "/sse/"); + es.onopen = function() { + append_to_log("monitoring", "opened", "nice."); + }; + es.onmessage = function(e) { + data = JSON.parse(e.data); + if (data['type'] == 'event') { + switch(data['topic']) { + case 'dataelements': + monitor_instance_values("dataelements"); + break; + case 'description': + monitor_instance_dsl(); + break; + case 'endpoints': + monitor_instance_values("endpoints"); + break; + case 'attributes': + monitor_instance_values("attributes"); + monitor_instance_transformation(); + if (!suspended_monitoring) { // or else it would load twice, because dsl changes also trigger + if (save['graph_theme'] != data.content.values.theme) { + monitor_graph_change(true); + } + } + break; + case 'task': + if ($('#trackcolumn').length > 0) { + $('#trackcolumn').append($('<iframe src="track.html?monitor=' + data.content.received['CPEE-INSTANCE-URL'].replace(/\/*$/,'/') + '"></iframe>')); + $('#graphcolumn').addClass('resize'); + } + break; + case 'state': + monitor_instance_state_change(data['content']['state']); + break; + case 'position': + monitor_instance_pos_change(data['content']); + break; + case 'activity': + monitor_instance_running(data['content'],data['name']); + break; + } } - } - if (data['type'] == 'vote') { - monitor_instance_vote_add(data['content']); - } - append_to_log(data['type'], data['topic'] + '/' + data['name'], JSON.stringify(data['content'])); - }; - es.onerror = function() { - append_to_log("monitoring", "closed", "server down i assume."); - // setTimeout(sse,10000); - }; - + if (data['type'] == 'vote') { + monitor_instance_vote_add(data['content']); + } + append_to_log(data['type'], data['topic'] + '/' + data['name'], JSON.stringify(data['content'])); + }; + es.onerror = function() { + append_to_log("monitoring", "closed", "finished or abandoned or not existing or server down. one of these, i assume."); + // setTimeout(sse,10000); + }; + } monitor_instance_values("dataelements"); monitor_instance_values("endpoints"); monitor_instance_values("attributes"); monitor_instance_transformation(); monitor_instance_dsl(); @@ -332,18 +336,29 @@ $("ui-tabbed.hidden, ui-rest.hidden").removeClass("hidden"); $("ui-resizehandle.hidden").removeClass("hidden"); $("ui-tabbed ui-tab.hidden, ui-rest ui-tab.hidden").removeClass("hidden"); // Change url to return to current instance when reloading - $("#current-instance").text(url); + $("#current-instance").show(); + $("#current-instance").text(url.match(/(\d+)\/?$/)[1]); $("#current-instance").attr('href',url); + $("#current-instance-properties").show(); $("#current-instance-properties").attr('href',url + 'properties/'); - $("#current-instance-properties").text('P'); + $("#current-instance-subscriptions").show(); $("#current-instance-subscriptions").attr('href',url + 'notifications/subscriptions/'); - $("#current-instance-subscriptions").text('S'); + $("#current-instance-callbacks").show(); $("#current-instance-callbacks").attr('href',url + 'callbacks/'); - $("#current-instance-callbacks").text('C'); + $("#current-monitor").show(); + $("#current-monitor").attr('href','edit.html?monitor=' + url); + $("#current-graph").show(); + $("#current-graph").attr('href','graph.html?monitor=' + url); + $("#current-track").show(); + $("#current-track").attr('href','track.html?monitor=' + url); + if ($('body').attr('current-logs')) { + $("#current-log").show(); + $("#current-log").attr('href','edit.html?monitor=' + url); + } var q = $.parseQuerySimple(); history.replaceState({}, '', '?' + (q.min || q.min=="" ? "min&" : "") + 'monitor='+url); // Change url to return to current instance when reloading (because new subscription is made) $("input[name=votecontinue]").prop( "checked", false ); @@ -357,10 +372,15 @@ append_to_log("monitoring", "id", subscription); sse(); if (load || exec) { load_testset(exec); } + }, + error: function() { + subscription = undefined; + append_to_log("monitoring", "closed", "For Good."); + sse(); } }); }, error: function(a,b,c) { alert("This ain't no CPEE instance"); @@ -539,10 +559,11 @@ adaptor_update(); manifestation.events.click(svgid); format_instance_pos(); }); } + suspended_monitoring = false; } //}}} function monitor_graph_change(force) { //{{{ var url = $('body').attr('current-instance'); $.ajax({ @@ -642,11 +663,11 @@ format_visual_remove(content.activity,"active") } } // }}} function monitor_instance_state_change(notification) { //{{{ if ($('#trackcolumn').length > 0) { - if (notification == "finished") { + if (notification == "finished" || notification == "abandoned") { parent.closeIFrame(window.location.search); } } if (notification == "ready" || notification == "stopped" || notification == "running") { $("#state button").removeAttr('disabled'); @@ -913,10 +934,9 @@ error: report_failure }) ); await Promise.all(promises); - suspended_monitoring = false; $.ajax({ type: "GET", url: url + "/properties/state/", dataType: "text",