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

« back to all changes in this revision

Viewing changes to console/console.js

  • Committer: William Grant
  • Date: 2010-02-23 06:11:58 UTC
  • Revision ID: grantw@unimelb.edu.au-20100223061158-05cqg88387ymjtlj
Redo console CSS, and replace the examples on the help page with something more like the modern console that also doesn't break the real console with ID conflicts.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
var magic = 'xyzzy';
2
 
 
3
 
function historyUp()
4
 
{
5
 
    if (this.cursor >= 0)
6
 
    {
7
 
        this.cursor--;
8
 
    }
9
 
}
10
 
 
11
 
function historyDown()
12
 
{
13
 
    if (this.cursor < this.items.length)
14
 
    {
15
 
        this.cursor++;
16
 
    }
17
 
}
18
 
 
19
 
function historyCurr()
20
 
{
21
 
    if (this.cursor < 0 || this.cursor >= this.items.length)
22
 
    {
23
 
        return "";
24
 
    }
25
 
    return this.items[this.cursor];
26
 
}
27
 
 
28
 
function historyAdd(text)
29
 
{
30
 
    this.items[this.items.length] = text;
31
 
    this.cursor = this.items.length
32
 
}
33
 
 
34
 
function historyShow()
35
 
{
36
 
    var res = "";
37
 
    if (this.cursor == -1)
38
 
    {
39
 
        res += "[]";
40
 
    }
41
 
    for (var i = 0; i < this.items.length; i++)
42
 
    {
43
 
        if (i == this.cursor)
44
 
        {
45
 
            res += "["
46
 
        }
47
 
        res += this.items[i].toString();
48
 
        if (i == this.cursor)
49
 
        {
50
 
            res += "]"
51
 
        }
52
 
        res += " "
53
 
    }
54
 
    if (this.cursor == this.items.length)
55
 
    {
56
 
        res += "[]";
57
 
    }
58
 
    return res;
59
 
}
60
 
 
61
 
function History()
62
 
{
63
 
    this.items = new Array();
64
 
    this.cursor = -1;
65
 
    this.up = historyUp;
66
 
    this.down = historyDown;
67
 
    this.curr = historyCurr;
68
 
    this.add = historyAdd;
69
 
    this.show = historyShow;
70
 
}
71
 
 
72
 
var hist = new History();
73
 
 
74
 
function make_query_string(pagename, args)
75
 
{
76
 
    var first = true;
77
 
    var qs = pagename;
78
 
    for (key in args)
79
 
    {
80
 
        vals = args[key];
81
 
        // vals can be an array, to make multiple args with the same name
82
 
        // To handle this, make non-array objects into an array, then loop
83
 
        if (!(vals instanceof Array))
84
 
            vals = [vals];
85
 
        for each (val in vals)
86
 
        {
87
 
            if (first)
88
 
            {
89
 
                qs += "?";
90
 
                first = false;
91
 
            }
92
 
            else
93
 
            {
94
 
                qs += "&";
95
 
            }
96
 
            qs += encodeURI(key) + "=" + encodeURI(val);
97
 
        }
98
 
    }
99
 
    return qs;
100
 
}
101
 
 
102
 
function make_post_body(args)
103
 
{
104
 
    var first = true;
105
 
    var qs = '';
106
 
    for (key in args)
107
 
    {
108
 
        vals = args[key];
109
 
        // vals can be an array, to make multiple args with the same name
110
 
        // To handle this, make non-array objects into an array, then loop
111
 
        if (!(vals instanceof Array))
112
 
            vals = [vals];
113
 
        for each (val in vals)
114
 
        {
115
 
            if (first)
116
 
            {
117
 
                first = false;
118
 
            }
119
 
            else
120
 
            {
121
 
                qs += "&";
122
 
            }
123
 
            qs += encodeURI(key) + "=" + encodeURI(val);
124
 
        }
125
 
    }
126
 
    return qs;
127
 
}
128
 
 
129
 
function enter_line()
130
 
{
131
 
    var inp = document.getElementById('inputText');
132
 
    var digest = hex_md5(inp.value + magic);
133
 
    var xmlhttp = new XMLHttpRequest();
134
 
    alert(inp.value);
135
 
    xmlhttp.open("POST", "chat", false);
136
 
    xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
137
 
    xmlhttp.send(make_post_body({"digest":digest, "text":inp.value}))
138
 
    var res = JSON.parse(xmlhttp.responseText);
139
 
    var output = document.getElementById("output")
140
 
    {
141
 
        var pre = document.createElement("pre");
142
 
        pre.setAttribute("class", "inputMsg");
143
 
        pre.appendChild(document.createTextNode(inp.value + "\n"));
144
 
        output.appendChild(pre);
145
 
    }
146
 
    if (res && res[0])
147
 
    {
148
 
        // Success!
149
 
        // print out the output (res[0])
150
 
        var pre = document.createElement("pre");
151
 
        pre.setAttribute("class", "outputMsg");
152
 
        pre.appendChild(document.createTextNode(res[0]));
153
 
        output.appendChild(pre);
154
 
        // print out the return value (res[1])
155
 
        if (res[1])
156
 
        {
157
 
            var pre = document.createElement("pre");
158
 
            pre.setAttribute("class", "outputMsg");
159
 
            pre.appendChild(document.createTextNode(res[1] + "\n"));
160
 
            output.appendChild(pre);
161
 
        }
162
 
        // set the prompt to >>>
163
 
        var prompt = document.getElementById("prompt");
164
 
        prompt.replaceChild(document.createTextNode(">>> "), prompt.firstChild);
165
 
    }
166
 
    else if (res)
167
 
    {
168
 
        // Failure!
169
 
        // print out the error message (res[2])
170
 
        var pre = document.createElement("pre");
171
 
        pre.setAttribute("class", "errorMsg");
172
 
        pre.appendChild(document.createTextNode(res[2]));
173
 
        output.appendChild(pre);
174
 
    }
175
 
    else
176
 
    {
177
 
        // Need more input, so set the prompt to ...
178
 
        var prompt = document.getElementById("prompt");
179
 
        prompt.replaceChild(document.createTextNode("... "), prompt.firstChild);
180
 
    }
181
 
}
182
 
 
183
 
function catch_input(key)
184
 
{
185
 
    var inp = document.getElementById('inputText');
186
 
    if (key == 13)
187
 
    {
188
 
        enter_line();
189
 
        hist.add(inp.value);
190
 
        inp.value = hist.curr();
191
 
    }
192
 
    if (key == 38)
193
 
    {
194
 
        hist.up();
195
 
        inp.value = hist.curr();
196
 
    }
197
 
    if (key == 40)
198
 
    {
199
 
        hist.down();
200
 
        inp.value = hist.curr();
201
 
    }
202
 
}