~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to ivle/webapp/console/media/console.js

  • Committer: Matt Giuca
  • Date: 2010-07-27 06:53:03 UTC
  • Revision ID: matt.giuca@gmail.com-20100727065303-gs7fn3gc3ccaqfux
Changed database schema 'semester' table. 'year' and 'semester' fields now allow any length, not just 4 or 1 respectively. (LP: #610330).

Show diffs side-by-side

added added

removed removed

Lines of Context:
85
85
    var callback1 = function(xhr)
86
86
        {
87
87
            var json_text = xhr.responseText;
88
 
            server_key = JSON.parse(json_text).key;
89
 
            server_started = true;
90
 
            if (callback != null)
91
 
                callback();
 
88
            try
 
89
            {
 
90
                server_key = JSON.parse(json_text).key;
 
91
                server_started = true;
 
92
                var args = {
 
93
                    "ivle.op": "chat", "kind": "splash", "key": server_key
 
94
                };
 
95
                var callback2 = function(xhr)
 
96
                {
 
97
                    console_response(null, null, xhr.responseText);
 
98
                    if (callback != null)
 
99
                        callback();
 
100
                };
 
101
                ajax_call(callback2, "console", "service", args, "POST");
 
102
            }
 
103
            catch (e)
 
104
            {
 
105
                alert("An error occured when starting the IVLE console. " +
 
106
                    "Please refresh the page and try again.\n" +
 
107
                    "Details have been logged for further examination.")
 
108
            }
92
109
        }
93
110
 
 
111
    $("#console_output").append(
 
112
        '<span class="console_message">IVLE console starting up...</span>\n');
 
113
    console_maximize(true);
94
114
    ajax_call(
95
115
        callback1, "console", "service",
96
116
        {"ivle.op": "start", "cwd": get_console_start_directory()}, 
97
117
        "POST");
98
118
}
99
119
 
 
120
/** Start up the console backend before the user has entered text.
 
121
 * This will disable the text input, start a backend, and enable the input
 
122
 * again.
 
123
 */
 
124
function start_server_early()
 
125
{
 
126
    var inputbox = document.getElementById("console_inputText");
 
127
    inputbox.setAttribute("disabled", "disabled");
 
128
    var callback = function(xhr)
 
129
    {
 
130
        inputbox.removeAttribute("disabled")
 
131
    }
 
132
    start_server(callback);
 
133
}
 
134
 
100
135
/** Initialises the console. All apps which import console are required to
101
136
 * call this function.
102
137
 * Optional "windowpane" (bool), if true, will cause the console to go into
124
159
function console_minimize()
125
160
{
126
161
    if (!windowpane_mode) return;
127
 
    console_body.setAttribute("class", "windowpane minimal");
 
162
    console_body.setAttribute("class", "console_body windowpane minimal");
128
163
    console_filler.setAttribute("class", "windowpane minimal");
129
164
}
130
165
 
131
166
/** Show the main console panel, so it enlarges out to its full size.
132
167
 */
133
 
function console_maximize()
 
168
function console_maximize(do_not_start)
134
169
{
135
170
    if (!windowpane_mode) return;
136
 
    console_body.setAttribute("class", "windowpane maximal");
 
171
    if (!do_not_start && !server_started) start_server_early();
 
172
    console_body.setAttribute("class", "console_body windowpane maximal");
137
173
    console_filler.setAttribute("class", "windowpane maximal");
138
174
}
139
175
 
259
295
{
260
296
    interrupted = false;
261
297
 
 
298
    // Open up the console so we can see the output
 
299
    console_maximize();
 
300
 
262
301
    if (typeof(inputbox) == "string")
263
302
    {
264
303
        var inputline = inputbox + "\n";
285
324
        span.setAttribute("class", "inputMsg");
286
325
        span.appendChild(document.createTextNode(inputline));
287
326
        output.appendChild(span);
 
327
        divScroll.activeScroll();
288
328
    }
289
329
    var args = {
290
330
        "ivle.op": "chat", "kind": which, "key": server_key,
316
356
        {
317
357
            output.appendChild(document.createTextNode(res.okay + "\n"));
318
358
            output.appendChild(span);
 
359
            divScroll.activeScroll();
319
360
        }
320
361
        // set the prompt to >>>
321
362
        set_prompt(">>>");
338
379
 
339
380
        // Print a reason to explain why we'd do such a horrible thing
340
381
        // (console timeout, server error etc.)
341
 
        print_error("Console Restart: " + res.restart);
 
382
        print_error(
 
383
            "IVLE console restarted: " + res.restart, "console_message");
342
384
        
343
385
        // set the prompt to >>>
344
386
        set_prompt(">>>");
353
395
        if (res.output.length > 0)
354
396
        {
355
397
            output.appendChild(document.createTextNode(res.output));
 
398
            divScroll.activeScroll();
356
399
        }
357
400
        var callback = function(xhr)
358
401
            {
373
416
        ajax_call(callback, "console", "service", args, "POST");
374
417
 
375
418
        // Open up the console so we can see the output
376
 
        // FIXME: do we need to maximize here?
377
419
        console_maximize();
378
420
 
379
 
        /* Auto-scrolling */
380
 
        divScroll.activeScroll();
381
 
 
382
421
        // Return early, so we don't re-enable the input box.
383
422
        return;
384
423
    }
 
424
    else if (res.hasOwnProperty('input'))
 
425
    {
 
426
        set_prompt("+++");
 
427
    }
385
428
    else
386
429
    {
387
 
        // assert res.hasOwnProperty('input')
388
 
        set_prompt("...");
 
430
        alert("An internal error occurred in the python console.");
 
431
        return;
389
432
    }
390
433
 
391
434
    if (inputbox != null)
395
438
        interrupted = false;
396
439
    }
397
440
 
398
 
    /* Open up the console so we can see the output */
399
 
    console_maximize();
400
441
    /* Auto-scrolling */
401
442
    divScroll.activeScroll();
402
443
 
492
533
}
493
534
 
494
535
/** Prints an error line in the console **/
495
 
function print_error(error)
496
 
 
536
function print_error(error, cls)
 
537
{
 
538
    if (!cls)
 
539
        cls = "errorMsg";
 
540
 
497
541
    var output = document.getElementById("console_output");
498
542
  
499
543
    // Create text block
500
544
    var span = document.createElement("span");
501
 
    span.setAttribute("class", "errorMsg");
 
545
    span.setAttribute("class", cls);
502
546
    span.appendChild(document.createTextNode(error + "\n"));
503
547
    output.appendChild(span);
504
548