forked from Wavyzz/dolibarr
Move Prototype Window Class to its own library
This commit is contained in:
113
htdocs/includes/pwc/extended_debug.js
Normal file
113
htdocs/includes/pwc/extended_debug.js
Normal file
@@ -0,0 +1,113 @@
|
||||
var commandHistory;
|
||||
var historyIndex;
|
||||
|
||||
function showExtendedDebug() {
|
||||
if (debugWindow != null) {
|
||||
hideDebug();
|
||||
}
|
||||
|
||||
if (debugWindow == null) {
|
||||
commandHistory = new Array();
|
||||
historyIndex = 0;
|
||||
|
||||
debugWindow = new Window('debug_window', {className: 'dialog',width:250, height:100, right:4, minWidth:250, bottom:42, zIndex:1000, opacity:1, showEffect: Element.show, resizable: true, title: "Debug"})
|
||||
debugWindow.getContent().innerHTML = "<style>#debug_window .dialog_content {background:#000;}</style> <div font='monaco' id='debug' style='padding:3px;color:#0F0;font-family:monaco'></div>";
|
||||
|
||||
//create hourglass icon and attach events to it.
|
||||
var cont = "<div id=\"debug_window_inspect\" style=\"width: 15px; height: 15px; background: transparent url(themes/default/inspect.gif) no-repeat 0 0; position:absolute; top:5px; left:70px; cursor:pointer; z-index:3000;\"></div>";
|
||||
|
||||
new Insertion.After('debug_window_maximize', cont);
|
||||
Event.observe('debug_window_inspect', 'click', enterInspectionMode, false);
|
||||
|
||||
//create command text box
|
||||
cont = "Eval:<input id=\"debug_window_command\" type=\"textbox\" style=\"width:150px; height: 12px; color: black;\">"
|
||||
debugWindow.setStatusBar(cont);
|
||||
|
||||
Event.observe('debug_window_command', 'mousedown', donothing);
|
||||
Event.observe('debug_window_command', 'keypress', evalJS, false);
|
||||
}
|
||||
debugWindow.show();
|
||||
}
|
||||
|
||||
function donothing(evt){
|
||||
Field.activate('debug_window_command');
|
||||
return false;
|
||||
}
|
||||
|
||||
function evalJS(evt){
|
||||
if(evt.keyCode == Event.KEY_RETURN){
|
||||
var js = $F('debug_window_command');
|
||||
try{
|
||||
var ret = eval(js);
|
||||
if(ret != null)
|
||||
debug(ret);
|
||||
}catch(e){
|
||||
debug(e);
|
||||
}
|
||||
$('debug_window_command').value = '';
|
||||
|
||||
Field.activate('debug_window_command');
|
||||
commandHistory.push(js);
|
||||
historyIndex = 0;
|
||||
}
|
||||
|
||||
if(evt.keyCode == Event.KEY_UP){
|
||||
if(commandHistory.length > historyIndex){
|
||||
historyIndex++;
|
||||
var js = commandHistory[commandHistory.length-historyIndex];
|
||||
$('debug_window_command').value = js;
|
||||
Event.stop(evt);
|
||||
Field.activate('debug_window_command');
|
||||
}
|
||||
}
|
||||
|
||||
if(evt.keyCode == Event.KEY_DOWN){
|
||||
if(commandHistory.length >= historyIndex && historyIndex > 1){
|
||||
historyIndex--;
|
||||
var js = commandHistory[commandHistory.length-historyIndex];
|
||||
$('debug_window_command').value = js;
|
||||
Event.stop(evt);
|
||||
Field.activate('debug_window_command');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function enterInspectionMode(evt){
|
||||
//stop observing magnifying glass
|
||||
Event.stopObserving('debug_window_inspect', 'click', enterInspectionMode, false);
|
||||
//change pointer
|
||||
document.body.style.cursor='help';
|
||||
//start observing mouse clicks
|
||||
Event.observe(window, 'click', inspectItem, false);
|
||||
}
|
||||
|
||||
function inspectItem(evt){
|
||||
// the element that triggered the event
|
||||
var element = Event.element(evt);
|
||||
if(element.id!="debug_window_inspect"){
|
||||
clearDebug()
|
||||
//change pointer
|
||||
document.body.style.cursor='default';
|
||||
debug(element.id);
|
||||
inspect(element);
|
||||
//stop observing mouse clicks
|
||||
Event.stopObserving(window, 'click', inspectItem, false);
|
||||
//alert('doing something');
|
||||
//start observing mag
|
||||
Event.observe('debug_window_inspect', 'click', enterInspectionMode, false);
|
||||
}
|
||||
}
|
||||
|
||||
function clearDebug() {
|
||||
var win = $('debug');
|
||||
if (win == null)
|
||||
return;
|
||||
|
||||
win.innerHTML=" ";
|
||||
//clear inspections too
|
||||
var divs = document.getElementsByClassName('inspector');
|
||||
divs.each(function(div){
|
||||
Element.remove(div);
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user