2012-02-26 13:36:53 +00:00
|
|
|
var consConn;
|
|
|
|
|
2015-10-26 18:49:54 +00:00
|
|
|
var consFilter, oldFilter;
|
|
|
|
var consLastIndex = 0;
|
2015-12-21 10:33:45 +00:00
|
|
|
var withLog = 0;
|
2016-04-07 18:58:11 +00:00
|
|
|
var mustScroll = 1;
|
|
|
|
|
2014-08-10 13:52:25 +00:00
|
|
|
log("Console is opening");
|
|
|
|
|
2012-02-26 13:36:53 +00:00
|
|
|
function
|
2017-01-04 21:31:55 +00:00
|
|
|
consUpdate(evt)
|
2012-02-26 13:36:53 +00:00
|
|
|
{
|
2017-01-04 21:31:55 +00:00
|
|
|
var errstr = "Connection lost, trying a reconnect every 5 seconds.";
|
|
|
|
var new_content = "";
|
2014-02-12 09:10:01 +00:00
|
|
|
|
2017-01-04 21:31:55 +00:00
|
|
|
if(evt.target instanceof WebSocket) {
|
|
|
|
if(evt.type == 'close') {
|
|
|
|
FW_errmsg(errstr, 4900);
|
|
|
|
consConn.close();
|
|
|
|
consConn = undefined;
|
|
|
|
setTimeout(consFill, 5000);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
new_content = evt.data;
|
|
|
|
consLastIndex = 0;
|
|
|
|
|
|
|
|
} else {
|
|
|
|
if(consConn.readyState == 4) {
|
|
|
|
FW_errmsg(errstr, 4900);
|
|
|
|
setTimeout(consFill, 5000);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
if(consConn.readyState != 3)
|
|
|
|
return;
|
|
|
|
|
|
|
|
var len = consConn.responseText.length;
|
|
|
|
if (consLastIndex == len) // No new data
|
|
|
|
return;
|
|
|
|
|
|
|
|
new_content = consConn.responseText.substring(consLastIndex, len);
|
|
|
|
consLastIndex = len;
|
|
|
|
}
|
2015-10-26 18:49:54 +00:00
|
|
|
log("Console Rcvd: "+new_content);
|
2015-12-21 10:33:45 +00:00
|
|
|
if(new_content.indexOf('<') != 0)
|
|
|
|
new_content = new_content.replace(/ /g, " ");
|
2016-04-07 18:58:11 +00:00
|
|
|
|
|
|
|
$("#console").append(new_content);
|
|
|
|
|
|
|
|
if(mustScroll)
|
|
|
|
$("#console").scrollTop($("#console")[0].scrollHeight);
|
2012-02-26 13:36:53 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function
|
|
|
|
consFill()
|
|
|
|
{
|
2014-02-12 09:10:01 +00:00
|
|
|
FW_errmsg("");
|
2014-09-24 07:48:32 +00:00
|
|
|
|
2017-01-04 21:31:55 +00:00
|
|
|
if(FW_pollConn) {
|
|
|
|
if($("body").attr("longpoll") == "websocket") {
|
|
|
|
FW_pollConn.close();
|
|
|
|
} else {
|
|
|
|
FW_pollConn.abort();
|
|
|
|
}
|
|
|
|
FW_pollConn = undefined;
|
2015-03-26 16:20:57 +00:00
|
|
|
}
|
2017-01-04 21:31:55 +00:00
|
|
|
|
|
|
|
var query = "?XHR=1"+
|
2015-12-21 10:33:45 +00:00
|
|
|
"&inform=type=raw;withLog="+withLog+";filter="+consFilter+
|
2014-01-05 22:19:11 +00:00
|
|
|
"×tamp="+new Date().getTime();
|
2014-08-10 13:52:25 +00:00
|
|
|
query = addcsrf(query);
|
2017-01-04 21:31:55 +00:00
|
|
|
|
|
|
|
if($("body").attr("longpoll") == "websocket") {
|
|
|
|
if(consConn) {
|
|
|
|
consConn.close();
|
|
|
|
}
|
|
|
|
consConn = new WebSocket((location+query).replace(/^http/i, "ws"));
|
|
|
|
consConn.onclose =
|
|
|
|
consConn.onerror =
|
|
|
|
consConn.onmessage = consUpdate;
|
|
|
|
|
|
|
|
} else {
|
|
|
|
if(consConn) {
|
|
|
|
consConn.onreadystatechange = undefined;
|
|
|
|
consConn.abort();
|
|
|
|
}
|
|
|
|
consConn = new XMLHttpRequest();
|
|
|
|
consConn.open("GET", location.pathname+query, true);
|
|
|
|
consConn.onreadystatechange = consUpdate;
|
|
|
|
consConn.send(null);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2015-10-26 18:49:54 +00:00
|
|
|
consLastIndex = 0;
|
|
|
|
if(oldFilter != consFilter) // only clear, when filter changes
|
|
|
|
$("#console").html("");
|
|
|
|
|
|
|
|
oldFilter = consFilter;
|
2012-02-26 13:36:53 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function
|
|
|
|
consStart()
|
|
|
|
{
|
2014-09-24 07:48:32 +00:00
|
|
|
var el = document.getElementById("console");
|
|
|
|
|
2015-03-29 14:43:22 +00:00
|
|
|
consFilter = $("a#eventFilter").html();
|
2014-09-24 07:48:32 +00:00
|
|
|
if(consFilter == undefined)
|
|
|
|
consFilter = ".*";
|
2015-10-26 18:49:54 +00:00
|
|
|
oldFilter = consFilter;
|
2016-01-17 11:03:44 +00:00
|
|
|
withLog = ($("#eventWithLog").is(':checked') ? 1 : 0);
|
2015-12-21 10:33:45 +00:00
|
|
|
setTimeout(consFill, 1000);
|
2015-03-26 13:53:13 +00:00
|
|
|
|
2015-12-21 10:33:45 +00:00
|
|
|
$("#eventReset").click(function(evt){ // Event Monitor Reset
|
2015-10-26 18:49:54 +00:00
|
|
|
log("Console resetted by user");
|
|
|
|
$("#console").html("");
|
|
|
|
});
|
|
|
|
|
2015-12-21 10:33:45 +00:00
|
|
|
$("#eventFilter").click(function(evt){ // Event-Filter Dialog
|
2015-03-26 13:53:13 +00:00
|
|
|
$('body').append(
|
|
|
|
'<div id="evtfilterdlg">'+
|
|
|
|
'<div>Filter:</div><br>'+
|
|
|
|
'<div><input id="filtertext" value="'+consFilter+'"></div>'+
|
|
|
|
'</div>');
|
|
|
|
|
|
|
|
$('#evtfilterdlg').dialog({ modal:true,
|
2015-06-27 05:42:11 +00:00
|
|
|
position:{ my: "left top", at: "right bottom",
|
|
|
|
of: this, collision: "flipfit" },
|
2015-03-26 13:53:13 +00:00
|
|
|
close:function(){$('#evtfilterdlg').remove();},
|
|
|
|
buttons:[
|
|
|
|
{ text:"Cancel", click:function(){ $(this).dialog('close'); }},
|
|
|
|
{ text:"OK", click:function(){
|
|
|
|
var val = $("#filtertext").val().trim();
|
2015-10-28 07:22:39 +00:00
|
|
|
try {
|
|
|
|
new RegExp(val ? val : ".*");
|
|
|
|
} catch(e) {
|
|
|
|
return FW_okDialog(e);
|
|
|
|
}
|
2015-03-26 13:53:13 +00:00
|
|
|
consFilter = val ? val : ".*";
|
|
|
|
$(this).dialog('close');
|
|
|
|
$("a#eventFilter").html(consFilter);
|
|
|
|
consFill();
|
|
|
|
}}]
|
|
|
|
});
|
|
|
|
});
|
2015-12-21 10:33:45 +00:00
|
|
|
|
|
|
|
$("#eventWithLog").change(function(evt){ // Event-Filter Dialog
|
|
|
|
withLog = ($("#eventWithLog").is(':checked') ? 1 : 0);
|
|
|
|
consFill();
|
|
|
|
});
|
2016-04-07 18:58:11 +00:00
|
|
|
|
|
|
|
|
|
|
|
$("#console").scroll(function() { // autoscroll check
|
2016-07-20 07:47:33 +00:00
|
|
|
|
|
|
|
if($("#console")[0].scrollHeight - $("#console").scrollTop() <=
|
|
|
|
$("#console").outerHeight() + 2) {
|
2016-04-07 18:58:11 +00:00
|
|
|
if(!mustScroll) {
|
|
|
|
mustScroll = 1;
|
|
|
|
log("Console autoscroll restarted");
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
if(mustScroll) {
|
|
|
|
mustScroll = 0;
|
|
|
|
log("Console autoscroll stopped");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
2012-02-26 13:36:53 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
window.onload = consStart;
|