| function lwsgt_get_appropriate_ws_url() |
| { |
| var pcol; |
| var u = document.URL; |
| |
| if (u.substring(0, 5) === "https") { |
| pcol = "wss://"; |
| u = u.substr(8); |
| } else { |
| pcol = "ws://"; |
| if (u.substring(0, 4) === "http") |
| u = u.substr(7); |
| } |
| |
| return pcol + u; |
| } |
| |
| function lwsgt_app_hdr(j, bc, ws) |
| { |
| var s = "", n, m = 0; |
| |
| ws.bcq = 0; |
| |
| for (n = 0; n < j.cols.length; n++) |
| if (!j.cols[n].hide) |
| m++; |
| |
| s = "<tr><td colspan=\"" + m + "\" class=\"lwsgt_title\">" + |
| ws.lwsgt_title + "</td></tr>"; |
| |
| if (!!bc) { |
| s += "<tr><td colspan=\"" + m + "\" class=\"lwsgt_breadcrumbs\">"; |
| for (n = 0; n < bc.length; n++) { |
| s += " / "; |
| if (!bc[n].url && bc[n].url !== "") |
| s += " " + lws_san(bc[n].name) + " "; |
| else { |
| s += "<a href=# id=\"bc_"+ ws.divname + ws.bcq + "\" h=\"" + |
| ws.lwsgt_cb + "\" p=\""+ws.lwsgt_parent+"\" aa=\"="+ |
| lws_san(encodeURI(bc[n].url))+"\" m=\"-1\" n=\"-1\">" + |
| lws_san(bc[n].name) + "</a> "; |
| ws.bcq++; |
| } |
| } |
| s += "</td></tr>"; |
| } |
| s += "<tr>"; |
| for (n = 0; n < j.cols.length; n++) |
| if (!j.cols[n].hide) |
| s = s + "<td class=\"lwsgt_hdr\">" + lws_san(j.cols[n].name) + |
| "</td>"; |
| |
| s += "</tr>"; |
| |
| return s; |
| } |
| |
| function lwsgt_click_callthru() |
| { |
| window[this.getAttribute("h")](this.getAttribute("p"), this.getAttribute("aa"), this.getAttribute("m"), this.getAttribute("n")); |
| event.preventDefault(); |
| } |
| |
| function lwsgt_initial(title, pcol, divname, cb, gname) |
| { |
| this.divname = divname; |
| |
| lws_gray_out(true,{"zindex":"499"}); |
| |
| if (typeof MozWebSocket != "undefined") |
| this.lwsgt_ws = new MozWebSocket(lwsgt_get_appropriate_ws_url(), pcol); |
| else |
| this.lwsgt_ws = new WebSocket(lwsgt_get_appropriate_ws_url(), pcol); |
| this.lwsgt_ws.divname = divname; |
| this.lwsgt_ws.lwsgt_cb = cb; |
| this.lwsgt_ws.lwsgt_parent = gname; |
| this.lwsgt_ws.lwsgt_title = title; |
| try { |
| this.lwsgt_ws.onopen = function() { |
| lws_gray_out(false); |
| // document.getElementById("debug").textContent = |
| // "ws opened " + lwsgt_get_appropriate_ws_url(); |
| }; |
| this.lwsgt_ws.onmessage = function got_packet(msg) { |
| var s, m, n, j = JSON.parse(msg.data); |
| document.getElementById("debug").textContent = msg.data; |
| if (j.cols) { |
| this.hdr = j; |
| } |
| if (j.breadcrumbs) |
| this.breadcrumbs = j.breadcrumbs; |
| |
| if (j.data) { |
| var q = 0; |
| s = "<table class=\"lwsgt_table\">" + |
| lwsgt_app_hdr(this.hdr, this.breadcrumbs, this); |
| for (m = 0; m < j.data.length; m++) { |
| s = s + "<tr class=\"lwsgt_tr\">"; |
| for (n = 0; n < this.hdr.cols.length; n++) { |
| if (!this.hdr.cols[n].hide) { |
| if (!this.hdr.cols[n].align) |
| s = s + "<td class=\"lwsgt_td\">"; |
| else |
| s = s + "<td class=\"lwsgt_td\" style=\"text-align: right\">"; |
| |
| if (this.hdr.cols[n].href && |
| !!j.data[m][this.hdr.cols[n].href]) { |
| s = s + "<a href=# id=\""+ this.divname + q + "\" h=\"" + this.lwsgt_cb + "\" p=\""+this.lwsgt_parent+"\" aa=\""+ |
| lws_san(encodeURI(j.data[m][this.hdr.cols[n].href]))+"\" m=\""+m+"\" n=\""+n+"\">" + |
| lws_san(j.data[m][this.hdr.cols[n].name]) + |
| "</a>"; |
| q++; |
| } |
| else |
| s = s + lws_san(j.data[m][this.hdr.cols[n].name]); |
| |
| s = s + "</td>"; |
| } |
| } |
| |
| s = s + "</tr>"; |
| } |
| s = s + "</table>"; |
| document.getElementById(this.divname).innerHTML = s; |
| for (n = 0; n < q; n++) |
| document.getElementById(this.divname + n).onclick = |
| lwsgt_click_callthru; |
| |
| for (n = 0; n < this.bcq; n++) |
| document.getElementById("bc_" + this.divname + n).onclick = |
| lwsgt_click_callthru; |
| |
| } |
| }; |
| this.lwsgt_ws.onclose = function(){ |
| lws_gray_out(true,{"zindex":"499"}); |
| }; |
| } catch(exception) { |
| alert("<p>Error" + exception); |
| } |
| } |
| |