cockpit/js/instance.js in cpee-1.4.25 vs cockpit/js/instance.js in cpee-1.4.26
- old
+ new
@@ -61,12 +61,12 @@
'events' + '=' + 'error,change' + '&' +
'topic' + '=' + 'handlers' + '&' +
'events' + '=' + 'change';// }}}
function cockpit() { //{{{
- $("button[name=base]").click(function(){ create_instance(null,false); });
- $("button[name=instance]").click(function(){ ui_activate_tab("#tabinstance"); monitor_instance(false,false); });
+ $("button[name=base]").click(function(){ create_instance($("input[name=base-url]").val(),null,false,false); });
+ $("button[name=instance]").click(function(){ ui_activate_tab("#tabinstance"); monitor_instance($("input[name=instance-url]").val(),$("input[name=repo-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(); });
@@ -87,47 +87,45 @@
if (q.min || q.min == "") {
ui_toggle_vis_tab($('#instance'));
ui_toggle_vis_tab($('#parameters'));
}
if (q.monitor && q.load) {
- $("input[name=instance-url]").val(q.monitor);
if (q.load.match(/https?:\/\//)) {
$("#predefinedtestsets").attr('data-other',q.load);
} else {
$("#predefinedtestsets div.menuitem").each(function(k,v){
if ($(v).text() == q.load) { $(v).attr('data-selected','selected'); }
});
}
ui_activate_tab("#tabexecution");
- monitor_instance(true,false);
+ monitor_instance(q.monitor,$("body").attr('current-repo'),true,false);
} else if (q.load) {
if (q.load.match(/https?:\/\//)) {
$("#predefinedtestsets").attr('data-other',q.load);
} else {
$("#predefinedtestsets div.menuitem").each(function(k,v){
if ($(v).text() == q.load) { $(v).attr('data-selected','selected'); }
});
}
ui_activate_tab("#tabexecution");
- create_instance(q.load,false);
- } else if (q.new || q.new == "" || q.load == "") {
+ create_instance($("body").attr('current-base'),q.load,true,false);
+ } else if (q.new || q.new == "") {
ui_activate_tab("#tabinstance");
- create_instance("Plain Instance",false);
+ create_instance($("body").attr('current-base'),"Plain Instance",false,false);
} else if (q.monitor) {
- $("input[name=instance-url]").val(q.monitor);
ui_activate_tab("#tabexecution");
- monitor_instance(false,false);
+ monitor_instance(q.monitor,$("body").attr('current-repo'),false,false);
} else if (q.exec) {
if (q.exec.match(/https?:\/\//)) {
$("#predefinedtestsets").attr('data-other',q.load);
} else {
$("#predefinedtestsets div.menuitem").each(function(k,v){
if ($(v).text() == q.exec) { $(v).attr('data-selected','selected'); }
});
}
ui_activate_tab("#tabexecution");
- create_instance(q.exec,true);
+ create_instance($("body").attr('current-base'),q.exec,true,true);
}
}
});
$.ajax({
url: $('body').attr('current-testsets') + "transformations.xml",
@@ -139,17 +137,16 @@
});
}
});
} //}}}
-function sanitize_url(it) { //{{{
- var url = it.val();
+function sanitize_url(url) { //{{{
var lastChar = url.substr(url.length - 1)
if (lastChar != '/') {
- it.val(url + '/');
+ url = (url + '/');
}
- return it.val();
+ return url;
}
//}}}
function check_subscription() { // {{{
var url = $('body').attr('current-instance');
var num = 0;
@@ -179,23 +176,27 @@
subscription_state = 'less';
format_visual_vote_clear();
}
}// }}}
-function create_instance(ask,exec) {// {{{
- var info = ask ? ask: prompt("Instance info?", "Enter info here");
+function create_instance(base,name,load,exec) {// {{{
+ var info = name ? name : prompt("Instance info?", "Enter info here");
if (info != null) {
if (info.match(/\S/)) {
- var base = $("input[name=base-url]").val();
$.ajax({
type: "POST",
url: base,
dataType: "text",
data: "info=" + info,
success: function(res){
- $("input[name=instance-url]").val((base + "//" + res + "/").replace(/\/+/g,"/").replace(/:\//,"://"));
- if (ask) monitor_instance(true,exec);
+ var iu = (base + "//" + res + "/").replace(/\/+/g,"/").replace(/:\//,"://");
+ if (name) {
+ monitor_instance(iu,$("body").attr('current-repo'),load,exec);
+ } else {
+ $("body").attr('current-instance', sanitize_url(iu));
+ $("input[name=instance-url]").val(iu);
+ }
},
error: function(a,b,c) {
alert("No CPEE running.");
}
});
@@ -227,13 +228,11 @@
monitor_instance_values("endpoints");
break;
case 'attributes':
monitor_instance_values("attributes");
monitor_instance_transformation();
- if (suspended_monitoring) {
- suspended_monitoring = false;
- } else {
+ if (!suspended_monitoring) { // or else it would load twice, because dsl changes also
monitor_graph_change(true);
}
break;
case 'state':
monitor_instance_state_change(JSON.parse($('event > notification',data).text()).state);
@@ -266,30 +265,30 @@
monitor_instance_transformation();
monitor_instance_dsl();
monitor_instance_state();
} //}}}
-function monitor_instance(load,exec) {// {{{
- var url = sanitize_url($("input[name=instance-url]"));
- sanitize_url($("input[name=base-url]"));
- var rep = sanitize_url($("input[name=repo-url]"));
+function monitor_instance(cin,rep,load,exec) {// {{{
+ $("body").attr('current-instance',sanitize_url(cin));
+ $("body").attr('current-repo', sanitize_url(rep));
+ $("input[name=instance-url]").val($("body").attr('current-instance'));
+ $("input[name=repo-url]").val($("body").attr('current-repo'));
$('.tabbehind button').hide();
$('#dat_details').empty();
+ url = $("body").attr('current-instance');
+
$.ajax({
type: "GET",
url: url + "/properties/schema/",
success: function(res){
$("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");
- $("body").attr('current-instance',url);
- $("body").attr('current-repo',rep);
-
// Change url to return to current instance when reloading
$("#current-instance").text(url);
$("#current-instance").attr('href',url);
$("#current-instance-properties").attr('href',url + 'properties/');
$("#current-instance-properties").text('P');
@@ -330,10 +329,12 @@
}// }}}
function monitor_instance_values(val) {// {{{
var url = $('body').attr('current-instance');
var rep = $('body').attr('current-repo');
+ var bas = $('body').attr('current-base');
+
$.ajax({
type: "GET",
url: url + "/properties/values/" + val + "/",
success: function(res){
save[val].content(res);
@@ -515,10 +516,14 @@
} // }}}
function monitor_instance_state_change(notification) { //{{{
if (notification == "ready" || notification == "stopped" || notification == "running") {
$("#state button").removeAttr('disabled');
}
+ // sometimes, out of sheer network routingness, stopping comes after stopped, which fucks the UI hard
+ // thus, we are having none of it
+ if (notification == 'stopping' && save['state'] == 'stopped')
+ return;
if (notification != save['state']) {
save['state'] = notification;
var ctv = $("#state");
ctv.empty();
@@ -724,54 +729,60 @@
error: report_failure
});
}
});
}// }}}
-function set_testset(testset,exec) {// {{{
+async function set_testset(testset,exec) {// {{{
var url = $('body').attr('current-instance');
suspended_monitoring = true;
- $.ajax({
- type: "GET",
- url: url + "/notifications/subscriptions/",
- success: function(res){
+ var promises = [];
+
+ promises.push(
+ $.ajax({
+ type: "GET",
+ url: url + "/notifications/subscriptions/",
+ error: report_failure
+ }).then(async function(res) {
var rcount = 0;
var values = $("subscriptions > subscription[url]",res);
var vals = [];
values.each(function(){
vals.push($(this).attr('url'));
});
- load_testset_handlers(url,testset,vals);
- },
- error: report_failure
- });
+ await load_testset_handlers(url,testset,vals);
+ })
+ )
+ promises.push(load_testset_dataelements(url,testset));
+ promises.push(load_testset_attributes(url,testset));
+ promises.push(load_testset_endpoints(url,testset));
+ promises.push(load_testset_pos(url,testset));
- load_testset_dataelements(url,testset);
- load_testset_attributes(url,testset);
- load_testset_endpoints(url,testset);
- load_testset_pos(url,testset);
-
if ($("testset > transformation",testset).length > 0) {
var ser = '';
$("testset > transformation > *",testset).each(function(){
ser += $(this).serializeXML() + "\n";
});
var val = "<content>" + ser + "</content>";
- $.ajax({
- type: "PUT",
- url: url + "/properties/values/transformation",
- data: ({content: val}),
- success: function() {
- load_testset_des(url,testset);
- },
- error: report_failure
- });
+ promises.push(
+ $.ajax({
+ type: "PUT",
+ url: url + "/properties/values/transformation",
+ data: ({content: val}),
+ error: report_failure
+ }).then(async function(){
+ await load_testset_des(url,testset);
+ })
+ );
} else {
- load_testset_des(url,testset);
+ promises.push(load_testset_des(url,testset));
}
- load_testset_hw(url,testset);
+ promises.push(load_testset_hw(url,testset));
+ await Promise.all(promises);
+ suspended_monitoring = false;
+
$.ajax({
type: "GET",
url: url + "/properties/values/state/",
dataType: "text",
success: function(res){
@@ -779,12 +790,11 @@
type: "PUT",
url: url + "/properties/values/state",
data: ({value: res}),
error: report_failure,
success: function(res){
- // use promises you filthy animal
- if (exec) setTimeout(start_instance,2000);
+ if (exec) start_instance();
}
});
}
});
}// }}}
@@ -890,55 +900,60 @@
loading = false;
}
});
}// }}}
-function load_des(url,model) { //{{{
+async function load_des(url,model) { //{{{
model = model.replace(/<\?[^\?]+\?>/,'');
var val = "<content>" + model + "</content>";
- $.ajax({
+ return $.ajax({
type: "PUT",
url: url + "/properties/values/description",
data: ({content: val}),
error: report_failure
});
-} //}}}
+} //}}}
-function load_testset_des(url,testset) {// {{{
+async function load_testset_des(url,testset) {// {{{
if ($("testset > description",testset).length == 0) { return; }
var ser = '';
$("testset > description > *",testset).each(function(){
ser += $(this).serializeXML() + "\n";
});
- load_des(url,ser);
+ return load_des(url,ser);
} // }}}
-function load_testset_hw(url,testset) {// {{{
+async function load_testset_hw(url,testset) {// {{{
+ var promises = [];
$("testset > handlerwrapper",testset).each(function(){
var val = $(this).text();
- $.ajax({
- type: "PUT",
- url: url + "/properties/values/handlerwrapper",
- data: ({value: val}),
- error: report_failure
- });
+ promises.push(
+ $.ajax({
+ type: "PUT",
+ url: url + "/properties/values/handlerwrapper",
+ data: ({value: val}),
+ error: report_failure
+ })
+ );
});
+ return Promise.all(promises);
} // }}}
-function load_testset_dataelements(url,testset) {// {{{
+async function load_testset_dataelements(url,testset) {// {{{
if ($("testset > dataelements",testset).length == 0) { return; }
var ser = '';
$("testset > dataelements > *",testset).each(function(){
ser += $(this).serializeXML() + "\n";
});
var val = "<content>" + ser + "</content>";
- $.ajax({
+ return $.ajax({
type: "PUT",
url: url + "/properties/values/dataelements",
data: ({content: val}),
error: report_failure
});
}// }}}
-function load_testset_attributes(url,testset) {// {{{
+async function load_testset_attributes(url,testset) {// {{{
+ var promises = [];
if ($("testset > attributes",testset).length == 0) { return; }
var ser = '';
$.ajax({
type: "GET",
url: url + "/properties/values/attributes/uuid",
@@ -948,65 +963,72 @@
$("testset > attributes",testset).prepend(uuid);
$("testset > attributes > *",testset).each(function(){
ser += $(this).serializeXML() + "\n";
});
var val = "<content>" + ser + "</content>";
- $.ajax({
- type: "PUT",
- url: url + "/properties/values/attributes",
- data: ({content: val}),
- error: report_failure
- });
+ promises.push(
+ $.ajax({
+ type: "PUT",
+ url: url + "/properties/values/attributes",
+ data: ({content: val}),
+ error: report_failure
+ })
+ );
}
});
+ return Promise.all(promises);
}// }}}
-function load_testset_endpoints(url,testset) {// {{{
+async function load_testset_endpoints(url,testset) {// {{{
if ($("testset > endpoints",testset).length == 0) { return; }
var ser = '';
$("testset > endpoints > *",testset).each(function(){
ser += $(this).serializeXML() + "\n";
});
var val = "<content>" + ser + "</content>";
- $.ajax({
+ return $.ajax({
type: "PUT",
url: url + "/properties/values/endpoints/",
data: ({content: val}),
error: report_failure
});
}// }}}
-function load_testset_pos(url,testset) {// {{{
+async function load_testset_pos(url,testset) {// {{{
if ($("testset > positions",testset).length == 0) { return; }
var ser = '';
$("testset > positions > *",testset).each(function(){
ser += $(this).serializeXML() + "\n";
});
var val = "<content>" + ser + "</content>";
- $.ajax({
+ return $.ajax({
type: "PUT",
url: url + "/properties/values/positions/",
data: ({content: val}),
success: monitor_instance_pos,
error: report_failure
});
}// }}}
-function load_testset_handlers(url,testset,vals) {// {{{
- $("testset > handlers > *",testset).each(function(){
+async function load_testset_handlers(url,testset,vals) {// {{{
+ var promises = [];
+ $("testset > handlers > *",testset).each(async function(){
var han = this;
var suburl = $(han).attr('url');
if ($.inArray(suburl,vals) == -1) {
var inp = "url="+encodeURIComponent(suburl);
$("*",han).each(function(){
inp += "&topic=" + $(this).attr('topic');
inp += "&" + this.nodeName + "=" + $(this).text();
});
- $.ajax({
- type: "POST",
- url: url + "/notifications/subscriptions/",
- data: inp
- });
+ promises.push(
+ $.ajax({
+ type: "POST",
+ url: url + "/notifications/subscriptions/",
+ data: inp
+ })
+ )
}
});
+ return Promise.all(promises);
}// }}}
function format_visual_add(what,cls) {//{{{
if (node_state[what] == undefined)
node_state[what] = {};
@@ -1023,10 +1045,10 @@
node_state[what][cls] -= 1;
format_visual_set(what);
}//}}}
function scroll_into_view(what) { //{{{
- var tcontainer = $('#graphcolumn')[0];
+ var tcontainer = $('#graphcanvas').parent()[0];
if ($('g[element-id="' + what + '"]').length > 0) {
var telement = $('g[element-id="' + what + '"]')[0].getBBox().y;
if (tcontainer.scrollTop > telement) {
tcontainer.scroll( { top: telement - 5, behavior: 'smooth' } );
}