diff options
Diffstat (limited to 'paste/evalexception/media/debug.js')
-rw-r--r-- | paste/evalexception/media/debug.js | 68 |
1 files changed, 62 insertions, 6 deletions
diff --git a/paste/evalexception/media/debug.js b/paste/evalexception/media/debug.js index 5dc209b..bc09488 100644 --- a/paste/evalexception/media/debug.js +++ b/paste/evalexception/media/debug.js @@ -1,14 +1,17 @@ -function show_frame(anchor) { +function showFrame(anchor) { var framecount = anchor.getAttribute('framecount'); var expanded = anchor.expanded; if (expanded) { MochiKit.DOM.hideElement(anchor.expandedElement); anchor.expanded = false; + _swapImage(anchor); return false; } anchor.expanded = true; if (anchor.expandedElement) { MochiKit.DOM.showElement(anchor.expandedElement); + _swapImage(anchor); + $('debug_input_'+framecount).focus(); return false; } var url = debug_base @@ -16,17 +19,29 @@ function show_frame(anchor) { + '&debugcount=' + debug_count; var d = MochiKit.Async.doSimpleXMLHttpRequest(url); d.addCallbacks(function (data) { - var el = MochiKit.DOM.DIV(); + var el = MochiKit.DOM.DIV({}); anchor.parentNode.insertBefore(el, anchor.nextSibling); el.innerHTML = data.responseText; anchor.expandedElement = el; + _swapImage(anchor); + $('debug_input_'+framecount).focus(); }, function (error) { - alert('An error occurred: "' + error + '" for URL: ' + url); + showError(error.req.responseText); }); return false; } -function submit_input(button, framecount) { +function _swapImage(anchor) { + var el = anchor.getElementsByTagName('IMG')[0]; + if (anchor.expanded) { + var img = 'minus.jpg'; + } else { + var img = 'plus.jpg'; + } + el.src = debug_base + '/_debug/media/' + img; +} + +function submitInput(button, framecount) { var input = $(button.getAttribute('input-from')); var output = $(button.getAttribute('output-to')); var url = debug_base @@ -36,13 +51,54 @@ function submit_input(button, framecount) { debugcount: debug_count, input: input.value }; + MochiKit.DOM.showElement(output); var d = MochiKit.Async.doSimpleXMLHttpRequest(url, vars); d.addCallbacks(function (data) { var result = data.responseText; - output.value += result; + output.innerHTML += result; input.value = ''; + input.focus(); }, function (error) { - alert('An error occurred: "' + error + '" for URL: ' + url); + showError(error.req.responseText); }); return false; } + +function showError(msg) { + var el = $('error-container'); + if (el.innerHTML) { + el.innerHTML += '<hr noshade>\n' + msg; + } else { + el.innerHTML = msg; + } + MochiKit.DOM.showElement('error-area'); +} + +function clearError() { + var el = $('error-container'); + el.innerHTML = ''; + MochiKit.DOM.hideElement('error-area'); +} + +function expandInput(button) { + var input = button.form.elements.input; + stdops = { + name: 'input', + style: 'width: 100%', + autocomplete: 'off' + }; + if (input.tagName == 'INPUT') { + var newEl = MochiKit.DOM.TEXTAREA(stdops); + var text = 'Contract'; + } else { + stdops['type'] = 'text'; + var newEl = MochiKit.DOM.INPUT(stdops); + var text = 'Expand'; + } + newEl.value = input.value; + newEl.id = input.id; + MochiKit.DOM.swapDOM(input, newEl); + newEl.focus(); + button.value = text; + return false; +} |