MIDAS
Loading...
Searching...
No Matches
obsolete.js
Go to the documentation of this file.
1/********************************************************************\
2
3 Name: obsolete.js
4 Created by: Stefan Ritt
5
6 Contents: Obsolete functions from the JavaScript midas library used by mhttpd
7
8\********************************************************************/
9
10function XMLHttpRequestGeneric()
11{
12 var request;
13 try {
14 request = new XMLHttpRequest(); // Firefox, Opera 8.0+, Safari
15 }
16 catch (e) {
17 try {
18 request = new ActiveXObject('Msxml2.XMLHTTP'); // Internet Explorer
19 }
20 catch (e) {
21 try {
22 request = new ActiveXObject('Microsoft.XMLHTTP');
23 }
24 catch (e) {
25 alert('Your browser does not support AJAX!');
26 return undefined;
27 }
28 }
29 }
30
31 return request;
32}
33
34var ODBUrlBase = "";
35
36function ODBSetURL(url)
37{
38 ODBUrlBase = url;
39}
40
41function ODBSet(path, value, pwdname)
42{
43 var value, request, url;
44
45 if (pwdname != undefined)
46 pwd = prompt('Please enter password', '');
47 else
48 pwd = '';
49
50 var request = XMLHttpRequestGeneric();
51
52 url = ODBUrlBase + '?cmd=jset&odb=' + path + '&value=' + encodeURIComponent(value);
53
54 if (pwdname != undefined)
55 url += '&pnam=' + pwdname;
56
57 request.open('GET', url, false);
58
59 if (pwdname != undefined)
60 request.setRequestHeader('Cookie', 'cpwd='+pwd);
61
62 request.send(null);
63
64 if (request.status != 200 || request.responseText != 'OK')
65 alert('ODBSet error:\nPath: '+path+'\nHTTP Status: '+request.status+'\nMessage: '+request.responseText+'\n'+document.location) ;
66}
67
68function ODBGet(path, format, defval, len, type)
69{
70 var request = XMLHttpRequestGeneric();
71
72 var url = ODBUrlBase + '?cmd=jget&odb=' + path;
73 if (format != undefined && format != '')
74 url += '&format=' + format;
75 request.open('GET', url, false);
76 request.send(null);
77
78 if (path.match(/[*]/)) {
79 if (request.responseText == null)
80 return null;
81 if (request.responseText == '<DB_NO_KEY>') {
82 url = '?cmd=jset&odb=' + path + '&value=' + defval + '&len=' + len + '&type=' + type;
83
84 request.open('GET', url, false);
85 request.send(null);
86 return defval;
87 } else {
88 var array = request.responseText.split('\n');
89 return array;
90 }
91 } else {
92 if ((request.responseText == '<DB_NO_KEY>' ||
93 request.responseText == '<DB_OUT_OF_RANGE>') && defval != undefined) {
94 url = '?cmd=jset&odb=' + path + '&value=' + defval + '&len=' + len + '&type=' + type;
95
96 request.open('GET', url, false);
97 request.send(null);
98 return defval;
99 }
100 return request.responseText.split('\n')[0];
101 }
102}
103
104function ODBMGet(paths, callback, formats)
105{
106 var request = XMLHttpRequestGeneric();
107
108 var url = ODBUrlBase + '?cmd=jget';
109 for (var i=0 ; i<paths.length ; i++) {
110 url += '&odb'+i+'='+paths[i];
111 if (formats != undefined && formats != '')
112 url += '&format'+i+'=' + formats[i];
113 }
114
115 if (callback != undefined) {
116 request.onreadystatechange = function()
117 {
118 if (request.readyState == 4) {
119 if (request.status == 200) {
120 var array = request.responseText.split('$#----#$\n');
121 for (var i=0 ; i<array.length ; i++)
122 if (paths[i].match(/[*]/)) {
123 array[i] = array[i].split('\n');
124 array[i].length--;
125 } else
126 array[i] = array[i].split('\n')[0];
127 callback(array);
128 }
129 }
130 }
131 request.open('GET', url, true);
132 } else
133 request.open('GET', url, false);
134 request.send(null);
135
136 if (callback == undefined) {
137 var array = request.responseText.split('$#----#$\n');
138 for (var i=0 ; i<array.length ; i++) {
139 if (paths[i].match(/[*]/)) {
140 array[i] = array[i].split('\n');
141 array[i].length--;
142 } else
143 array[i] = array[i].split('\n')[0];
144 }
145 return array;
146 }
147}
148
149function ODBGetRecord(path)
150{
151 var request = XMLHttpRequestGeneric();
152
153 var url = ODBUrlBase + '?cmd=jget&odb=' + path + '&name=1';
154 request.open('GET', url, false);
155 request.send(null);
156 return request.responseText;
157}
158
159function ODBExtractRecord(record, key)
160{
161 var array = record.split('\n');
162 for (var i=0 ; i<array.length ; i++) {
163 var ind = array[i].indexOf(':');
164 if (ind > 0) {
165 var k = array[i].substr(0, ind);
166 if (k == key)
167 return array[i].substr(ind+1, array[i].length);
168 }
169 var ind = array[i].indexOf('[');
170 if (ind > 0) {
171 var k = array[i].substr(0, ind);
172 if (k == key) {
173 var a = new Array();
174 for (var j=0 ; ; j++,i++) {
175 if (array[i].substr(0, ind) != key)
176 break;
177 var k = array[i].indexOf(':');
178 a[j] = array[i].substr(k+1, array[i].length);
179 }
180 return a;
181 }
182 }
183 }
184 return null;
185}
186
187function ODBKey(path)
188{
189 var request = XMLHttpRequestGeneric();
190
191 var url = ODBUrlBase + '?cmd=jkey&odb=' + path;
192 request.open('GET', url, false);
193 request.send(null);
194 if (request.responseText == null)
195 return null;
196 var res = request.responseText.split('\n');
197 this.name = res[0];
198 this.type = res[1];
199 this.num_values = res[2];
200 this.item_size = res[3];
201 this.last_written = res[4];
202}
203
204function ODBCopy(path, format)
205{
206 var request = XMLHttpRequestGeneric();
207
208 var url = ODBUrlBase + '?cmd=jcopy&odb=' + path;
209 if (format != undefined && format != '')
210 url += '&format=' + format;
211 request.open('GET', url, false);
212 request.send(null);
213 return request.responseText;
214}
215
216function ODBCall(url, callback)
217{
218 var request = XMLHttpRequestGeneric();
219
220 if (callback != undefined) {
221 request.onreadystatechange = function()
222 {
223 if (request.readyState == 4) {
224 if (request.status == 200) {
225 callback(request.responseText);
226 }
227 }
228 }
229 request.open('GET', url, true);
230 request.send(null);
231 return;
232 }
233
234 request.open('GET', url, false);
235 request.send(null);
236 return request.responseText;
237}
238
239function ODBMCopy(paths, callback, encoding)
240{
241 var url = ODBUrlBase + '?cmd=jcopy';
242 for (var i=0 ; i<paths.length ; i++) {
243 url += '&odb'+i+'='+encodeURIComponent(paths[i]);
244 }
245
246 if (encoding != undefined && encoding != '')
247 url += '&encoding=' + encodeURIComponent(encoding);
248
249 return ODBCall(url, callback);
250}
251
252function ODBMLs(paths, callback)
253{
254 var url = ODBUrlBase + '?cmd=jcopy&encoding=json-norecurse';
255 for (var i=0 ; i<paths.length ; i++) {
256 url += '&odb'+i+'='+encodeURIComponent(paths[i]);
257 }
258
259 return ODBCall(url, callback);
260}
261
262function ODBMCreate(paths, types, arraylengths, stringlengths, callback)
263{
264 var url = ODBUrlBase + '?cmd=jcreate';
265 for (var i=0 ; i<paths.length ; i++) {
266 url += '&odb'+i+'='+encodeURIComponent(paths[i]);
267 url += '&type'+i+'='+encodeURIComponent(types[i]);
268 if (arraylengths != undefined) {
269 url += '&arraylen'+i+'='+encodeURIComponent(arraylengths[i]);
270 }
271 if (stringlengths != undefined) {
272 url += '&strlen'+i+'='+encodeURIComponent(stringlengths[i]);
273 }
274 }
275 return ODBCall(url, callback);
276}
277
278function ODBMResize(paths, arraylengths, stringlengths, callback)
279{
280 var url = ODBUrlBase + '?cmd=jresize';
281 for (var i=0 ; i<paths.length ; i++) {
282 url += '&odb'+i+'='+encodeURIComponent(paths[i]);
283 url += '&arraylen'+i+'='+encodeURIComponent(arraylengths[i]);
284 url += '&strlen'+i+'='+encodeURIComponent(stringlengths[i]);
285 }
286 return ODBCall(url, callback);
287}
288
289function ODBMRename(paths, names, callback)
290{
291 var url = ODBUrlBase + '?cmd=jrename';
292 for (var i=0 ; i<paths.length ; i++) {
293 url += '&odb'+i+'='+encodeURIComponent(paths[i]);
294 url += '&name'+i+'='+encodeURIComponent(names[i]);
295 }
296 return ODBCall(url, callback);
297}
298
299function ODBMLink(paths, links, callback)
300{
301 var url = ODBUrlBase + '?cmd=jlink';
302 for (var i=0 ; i<paths.length ; i++) {
303 url += '&dest'+i+'='+encodeURIComponent(paths[i]);
304 url += '&odb'+i+'='+encodeURIComponent(links[i]);
305 }
306 return ODBCall(url, callback);
307}
308
309function ODBMReorder(paths, indices, callback)
310{
311 var url = ODBUrlBase + '?cmd=jreorder';
312 for (var i=0 ; i<paths.length ; i++) {
313 url += '&odb'+i+'='+encodeURIComponent(paths[i]);
314 url += '&index'+i+'='+encodeURIComponent(indices[i]);
315 }
316 return ODBCall(url, callback);
317}
318
319function ODBMKey(paths, callback)
320{
321 var url = ODBUrlBase + '?cmd=jkey&encoding=json';
322 for (var i=0 ; i<paths.length ; i++) {
323 url += '&odb'+i+'='+encodeURIComponent(paths[i]);
324 }
325 return ODBCall(url, callback);
326}
327
328function ODBMDelete(paths, callback)
329{
330 var url = ODBUrlBase + '?cmd=jdelete';
331 for (var i=0 ; i<paths.length ; i++) {
332 url += '&odb'+i+'='+encodeURIComponent(paths[i]);
333 }
334 return ODBCall(url, callback);
335}
336
337function ODBRpc_rev0(name, rpc, args)
338{
339 var request = XMLHttpRequestGeneric();
340
341 var url = ODBUrlBase + '?cmd=jrpc_rev0&name=' + name + '&rpc=' + rpc;
342 for (var i = 2; i < arguments.length; i++) {
343 url += '&arg'+(i-2)+'='+arguments[i];
344 };
345 request.open('GET', url, false);
346 request.send(null);
347 if (request.responseText == null)
348 return null;
349 this.reply = request.responseText.split('\n');
350}
351
352function ODBRpc_rev1(name, rpc, max_reply_length, args)
353{
354 var request = XMLHttpRequestGeneric();
355
356 var url = ODBUrlBase + '?cmd=jrpc_rev1&name=' + name + '&rpc=' + rpc + '&max_reply_length=' + max_reply_length;
357 for (var i = 3; i < arguments.length; i++) {
358 url += '&arg'+(i-3)+'='+arguments[i];
359 };
360 request.open('GET', url, false);
361 request.send(null);
362 if (request.responseText == null)
363 return null;
364 return request.responseText;
365}
366
367function ODBRpc(program_name, command_name, arguments_string, callback, max_reply_length)
368{
369 var url = ODBUrlBase + '?cmd=jrpc';
370 url += '&name=' + encodeURIComponent(program_name);
371 url += '&rcmd=' + encodeURIComponent(command_name);
372 url += '&rarg=' + encodeURIComponent(arguments_string);
373 if (max_reply_length) {
374 url += '&max_reply_length=' + encodeURIComponent(max_reply_length);
375 }
376 return ODBCall(url, callback);
377}
378
379function ODBGetMsg(facility, start, n)
380{
381 var request = XMLHttpRequestGeneric();
382
383 var url = ODBUrlBase + '?cmd=jmsg&f='+facility+'&t=' + start+'&n=' + n;
384 request.open('GET', url, false);
385 request.send(null);
386
387 if (n > 1 || n == 0) {
388 var array = request.responseText.split('\n');
389 while (array.length > 1 && array[array.length-1] == "")
390 array = array.slice(0, array.length-1);
391 return array;
392 } else
393 return request.responseText;
394}
395
396function ODBGenerateMsg(type,facility,user,msg)
397{
398 var request = XMLHttpRequestGeneric();
399
400 var url = ODBUrlBase + '?cmd=jgenmsg';
401 url += '&type='+type;
402 url += '&facility='+facility;
403 url += '&user='+user;
404 url += '&msg=' + encodeURIComponent(msg);
405 request.open('GET', url, false);
406 request.send(null);
407 return request.responseText;
408}
409
410function ODBGetAlarms()
411{
412 var request = XMLHttpRequestGeneric();
413 request.open('GET', ODBUrlBase + '?cmd=jalm', false);
414 request.send(null);
415 var a = request.responseText.split('\n');
416 a.length = a.length-1;
417 return a;
418}
419
420function ODBEdit(path)
421{
422 var value = ODBGet(encodeURIComponent(path));
423 var new_value = prompt('Please enter new value', value);
424 if (new_value != undefined) {
425 ODBSet(encodeURIComponent(path), new_value);
426 window.location.reload();
427 }
428}
429
430function getMouseXY(e)
431{
432 // to activate getMouseXY(), do this:
433 // document.onmousemove = getMouseXY;
434
435 try {
436 var x = e.pageX;
437 var y = e.pageY;
438 var p = 'abs: ' + x + '/' + y;
439 i = document.getElementById('refimg');
440 if (i == null)
441 return false;
442 document.body.style.cursor = 'crosshair';
443 x -= i.offsetLeft;
444 y -= i.offsetTop;
445 while (i = i.offsetParent) {
446 x -= i.offsetLeft;
447 y -= i.offsetTop;
448 }
449 p += ' rel: ' + x + '/' + y;
450 window.status = p;
451 return true;
452 }
453 catch (e) {
454 return false;
455 }
456}
457
458/* emacs
459 * Local Variables:
460 * tab-width: 8
461 * c-basic-offset: 3
462 * js-indent-level: 3
463 * indent-tabs-mode: nil
464 * End:
465 */