root/galaxy-central/eggs/WebError-0.8a-py2.6.egg/weberror/evalexception/media/debug.js @ 3

リビジョン 3, 10.3 KB (コミッタ: kohda, 14 年 前)

Install Unix tools  http://hannonlab.cshl.edu/galaxy_unix_tools/galaxy.html

行番号 
1function showFrame(anchor) {
2    var tbid = anchor.getAttribute('tbid');
3    var expanded = anchor.expanded;
4    if (expanded) {
5        hideElement(anchor.expandedElement);
6        anchor.expanded = false;
7        _swapImage(anchor);
8        return false;
9    }
10    anchor.expanded = true;
11    if (anchor.expandedElement) {
12        showElement(anchor.expandedElement);
13        _swapImage(anchor);
14        $('#debug_input_'+tbid).get(0).focus();
15        return false;
16    }
17    var url = debug_base
18        + '/show_frame?tbid=' + tbid
19        + '&debugcount=' + debug_count;
20    callbackXHR(url, null, function (data) {
21                    var el = createElement('div');
22                    anchor.parentNode.insertBefore(el, anchor.nextSibling);
23                    el.innerHTML = data.responseText;
24                    anchor.expandedElement = el;
25                    _swapImage(anchor);
26                    $('#debug_input_'+tbid).get(0).focus();
27                });
28    return false;
29}
30
31function _swapImage(anchor) {
32    var el = anchor.getElementsByTagName('IMG')[0];
33    if (anchor.expanded) {
34        var img = 'minus.jpg';
35    } else {
36        var img = 'plus.jpg';
37    }
38    el.src = debug_base + '/media/' + img;
39}
40
41function showSource(anchor) {
42    var location = anchor.getAttribute('location');
43    showSourceCode(location);
44    return false;
45}
46
47function showSourceCode(location) {
48    var url = debug_base + '/source_code?location=' + escape(location);
49    var source = document.getElementById('source_data');
50    source.innerHTML = 'Loading...';
51    switch_display('source_data');
52    callbackXHR(url, null, function (req) {
53                    source.innerHTML = req.responseText;
54                    if (location.indexOf(':') > 0) {
55                        var lineno = location.substring(location.indexOf(':')+1);
56                        lineno = parseInt(lineno) - 10;
57                        if (lineno > 1) {
58                            document.location.hash = '#'+(lineno-10);
59                        }
60                    }
61                });
62}
63
64function submitInput(button, tbid) {
65    var input = $('#' + button.getAttribute('input-from')).get(0);
66    var output = $('#' + button.getAttribute('output-to')).get(0);
67    var url = debug_base
68        + '/exec_input';
69    var history = input.form.history;
70    input.historyPosition = 0;
71    if (! history) {
72        history = input.form.history = [];
73    }
74    history.push(input.value);
75    var vars = {
76        tbid: tbid,
77        debugcount: debug_count,
78        input: input.value
79    };
80    showElement(output);
81    callbackXHR(url, vars, function (data) {
82        var result = data.responseText;
83        output.innerHTML += result;
84        input.value = '';
85        input.focus();
86    });
87    return false;
88}
89
90function showError(msg) {
91    var el = $('#error-container').get(0);
92    if (el.innerHTML) {
93        el.innerHTML += '<hr noshade>\n' + msg;
94    } else {
95        el.innerHTML = msg;
96    }
97    showElement($('#error-area').get(0));
98}
99
100function clearError() {
101    var el = $('#error-container').get(0);
102    el.innerHTML = '';
103    $('#error-area').hide();
104}
105
106function expandInput(button) {
107    var input = button.form.elements.input;
108    stdops = {
109        name: 'input',
110        style: 'width: 100%',
111        autocomplete: 'off'
112    };
113    if (input.tagName == 'INPUT') {
114        var newEl = createElement('textarea', stdops);
115        var text = 'Contract';
116    } else {
117        stdops['type'] = 'text';
118        stdops['onkeypress'] = 'upArrow(this)';
119        var newEl = createElement('input', stdops);
120        var text = 'Expand';
121    }
122    newEl.value = input.value;
123    newEl.id = input.id;
124    swapDOM(input, newEl);
125    newEl.focus();
126    button.value = text;
127    return false;
128}
129
130function upArrow(input, event) {
131    if (window.event) {
132        event = window.event;
133    }
134    if (event.keyCode != 38 && event.keyCode != 40) {
135        // not an up- or down-arrow
136        return true;
137    }
138    var dir = event.keyCode == 38 ? 1 : -1;
139    var history = input.form.history;
140    if (! history) {
141        history = input.form.history = [];
142    }
143    var pos = input.historyPosition || 0;
144    if (! pos && dir == -1) {
145        return true;
146    }
147    if (! pos && input.value) {
148        history.push(input.value);
149        pos = 1;
150    }
151    pos += dir;
152    if (history.length-pos < 0) {
153        pos = 1;
154    }
155    if (history.length-pos > history.length-1) {
156        input.value = '';
157        return true;
158    }
159    input.historyPosition = pos;
160    var line = history[history.length-pos];
161    input.value = line;
162}
163
164function expandLong(anchor) {
165    var span = anchor;
166    while (span) {
167        if (span.style && span.style.display == 'none') {
168            break;
169        }
170        span = span.nextSibling;
171    }
172    if (! span) {
173        return false;
174    }
175    showElement(span);
176    hideElement(anchor);
177    return false;
178}
179
180function showElement(el) {
181    el.style.display = '';
182}
183
184function hideElement(el) {
185    el.style.display = 'none';
186}
187
188function createElement(tag, attrs /*, sub-elements...*/) {
189    var el = document.createElement(tag);
190    if (attrs) {
191        for (var i in attrs) {
192            el.setAttribute(i, attrs[i]);
193        }
194    }
195    for (var i=2; i<arguments.length; i++) {
196        var item = arguments[i];
197        if (typeof item == 'string') {
198            item = document.createTextNode(item);
199        }
200        el.appendChild(item);
201    }
202    return el;
203}
204
205function swapDOM(dest, src) {
206    var parent = dest.parentNode;
207    parent.replaceChild(src, dest);
208    return src;
209}
210
211
212function getXMLHttpRequest() {
213    /* Taken from MochiKit */
214    var tryThese = [
215        function () { return new XMLHttpRequest(); },
216        function () { return new ActiveXObject('Msxml2.XMLHTTP'); },
217        function () { return new ActiveXObject('Microsoft.XMLHTTP'); },
218        function () { return new ActiveXObject('Msxml2.XMLHTTP.4.0'); }
219        ];
220    for (var i = 0; i < tryThese.length; i++) {
221        var func = tryThese[i];
222        try {
223            return func();
224        } catch (e) {
225            // pass
226        }
227    }
228}
229
230function callbackXHR(url, data, callback) {
231    var xhr = getXMLHttpRequest();
232    xhr.onreadystatechange = function () {
233        if (xhr.readyState == 4) {
234            if (xhr.status == 200) {
235                callback(xhr);
236            } else {
237                showError(xhr.responseText);
238            }
239        }
240    };
241    var method = data ? "POST" : "GET";
242    xhr.open(method, url);
243    if (data) {
244        if (! (typeof data == 'string')) {
245            var newData = '';
246            for (var i in data) {
247                if (newData) {
248                    newData += '&';
249                }
250                newData += i + '=' + escape(data[i]);
251            }
252            data = newData;
253        }
254        xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded');
255        xhr.send(data);
256    } else {
257        xhr.send(null);
258    }
259}
260
261function switch_display(id) {
262    ids = ['extra_data', 'template_data', 'traceback_data', 'source_data'];
263    for (i in ids){
264        part = ids[i];
265        var el = document.getElementById(part);
266        el.className = "hidden-data";
267        var el = document.getElementById(part+'_tab');
268        el.className = "not-active";
269        var el = document.getElementById(part+'_link');
270        el.className = "not-active";
271    }
272    var el = document.getElementById(id);
273    el.className = "active";
274    var el = document.getElementById(id+'_link');
275    el.className = "active";
276    var el = document.getElementById(id+'_tab');
277    el.className = "active";
278}
279
280function hide_display(id) {
281    var el = document.getElementById(id);
282    if (el.className == "hidden-data") {
283        el.className = "";
284        return true;
285    } else {
286        el.className = "hidden-data";
287        return false;
288    }
289}
290
291function show_button(toggle_id, name) {
292    document.write('<a href="#' + toggle_id
293        + '" onclick="javascript:hide_display(\'' + toggle_id
294        + '\')" class="button">' + name + '</a><br>');
295}
296
297function switch_source(el, hide_type) {
298    while (el) {
299        if (el.getAttribute &&
300            el.getAttribute('source-type') == hide_type) {
301            break;
302        }
303        el = el.parentNode;
304    }
305    if (! el) {
306        return false;
307    }
308    el.style.display = 'none';
309    if (hide_type == 'long') {
310        while (el) {
311            if (el.getAttribute &&
312                el.getAttribute('source-type') == 'short') {
313                break;
314            }
315            el = el.nextSibling;
316        }
317    } else {
318        while (el) {
319            if (el.getAttribute &&
320                el.getAttribute('source-type') == 'long') {
321                break;
322            }
323            el = el.previousSibling;
324        }
325    }
326    if (el) {
327        el.style.display = '';
328    }
329    return false;
330}
331
332$(document).ready(function() {
333    var hide_all = function() {
334        $('#short_text_version, #long_text_version, #short_traceback, #full_traceback, #short_xml_version, #long_xml_version, div.feature-highlight').hide();
335        $('#view_long_text, #view_short_text, #view_long_html, #view_short_html, #view_short_xml, #view_long_xml').removeClass('active');
336    };
337   
338    if ($('#long_text_version').length == 0) {
339        $('#view_long_text').hide();
340    }
341    if ($('#full_traceback').length == 0) {
342        $('#view_long_html').hide();
343    }
344   
345   
346    $('#view_short_text').click(function() {
347        hide_all();
348        $('#short_text_version').show();
349        $(this).addClass('active');
350        return false;
351    });
352    $('#view_long_text').click(function() {
353        hide_all();
354        $('#long_text_version').show();
355        $(this).addClass('active');
356        return false;
357    });
358    $('#view_short_html').click(function() {
359        hide_all();
360        $('#short_traceback, div.feature-highlight').show();
361        $(this).addClass('active');
362        return false;
363    });
364    $('#view_long_html').click(function () {
365        hide_all();
366        $('#full_traceback, div.feature-highlight').show();
367        $(this).addClass('active');
368        return false;
369    });
370    $('#view_short_xml').click(function () {
371        hide_all();
372        $('#short_xml_version').show();
373        $(this).addClass('active');
374        return false;
375    });
376    $('#view_long_xml').click(function () {
377        hide_all();
378        $('#long_xml_version').show();
379        $(this).addClass('active');
380        return false;
381    });
382});
Note: リポジトリブラウザについてのヘルプは TracBrowser を参照してください。