]> ruin.nu Git - ndwebbie.git/blobdiff - raid.js
cache graphs, and return not modified
[ndwebbie.git] / raid.js
diff --git a/raid.js b/raid.js
index 5a4eb14d97929b9c0c29ec13e51323e5e2bcc510..ecebcbdb085813f7af37bc0eef802ae5410c2d96 100644 (file)
--- a/raid.js
+++ b/raid.js
@@ -25,12 +25,12 @@ function getHTTPObject() {
   return xmlhttp;
 }
 
-var HTTP = getHTTPObject();
 var modified = '_';
 
 function claim(dataSource, target, wave,cmd){
+       var HTTP = getHTTPObject();
        if(HTTP) {
-               var url = dataSource + '&cmd='+cmd+'&target=' + target + '&wave=' + wave;
+               var url = dataSource + '&cmd='+cmd+'&target=' + target + '&wave=' + wave + '&rand='+ Math.random();
                //obj.innerHTML = "test";
                HTTP.open("GET", url,true);
                HTTP.onreadystatechange = function(){
@@ -39,9 +39,10 @@ function claim(dataSource, target, wave,cmd){
                                updateClaims(dataSource,HTTP.responseXML,false);
                                var obj = document.getElementById("targets");
                                if (obj){
-                                       var re = new RegExp("targetlist>(.*)</targetlist", "m");
-                                       re.test(HTTP.responseText);
-                                       obj.innerHTML = RegExp.$1;
+                                       clearObject(obj);
+                                       var re = new RegExp("targetlist>((.|\\n)*)</targetlist");
+                                       if(re.test(HTTP.responseText))
+                                               obj.innerHTML = RegExp.$1;
                                }
                        }
                }
@@ -49,23 +50,34 @@ function claim(dataSource, target, wave,cmd){
        }
 }
 
+function clearObject(obj){
+       while (obj.hasChildNodes()){
+               obj.removeChild(obj.firstChild);
+       }
+}
+
 function listTargets(dataSource){
        var http = getHTTPObject();
-       http.open("GET",dataSource+'&cmd=gettargets',true);
+       http.open("GET",dataSource+'&cmd=gettargets' + '&rand='+ Math.random(),true);
        http.onreadystatechange = function(){
                if (http.readyState == 4 &&
                                http.status == 200) {
                        var obj = document.getElementById("targets");
-                       if (obj)
-                               obj.innerHTML = http.responseText;
+                       if (obj){
+                               clearObject(obj);
+                               var re = new RegExp("targetlist>((.|\\n)*)</targetlist");
+                               if(re.test(http.responseText))
+                                       obj.innerHTML = RegExp.$1;
+                       }
                }
        }
        http.send(null);
 }
 
 function update(dataSource){
+       var HTTP = getHTTPObject();
        if(HTTP) {
-               HTTP.open("GET",dataSource+"&cmd=update&from="+modified,true);
+               HTTP.open("GET",dataSource+"&cmd=update&from="+modified + '&rand='+ Math.random(),true);
                HTTP.onreadystatechange = function(){
                        if (HTTP.readyState == 4 &&
                                        HTTP.status == 200) {
@@ -76,19 +88,20 @@ function update(dataSource){
        }
 }
 
-function updateClaims(dataSource,xmldoc,timestamp){
-       targets = xmldoc.getElementsByTagName("target");
+function updateClaims(dataSource,xmlthingy,timestamp){
+       var targets = xmlthingy.getElementsByTagName("target");
        for (var i = 0; i < targets.length; i++){
                var target = targets[i].attributes.getNamedItem("id").nodeValue;
                var obj = document.getElementById("claim"+target);
                if (!obj)
                        continue;
-               obj.innerHTML = '';
+               //obj.innerHTML = '';
+               clearObject(obj);
                var waves = targets[i].getElementsByTagName("wave");;
                for (var j = 0; j < waves.length; j++){
-                       var command = waves[j].firstChild.nextSibling;
-                       var claimers = command.nextSibling;
-                       var joinable = claimers.nextSibling;
+                       var command = waves[j].getElementsByTagName("command")[0];
+                       var claimers = waves[j].getElementsByTagName("claimers")[0];
+                       var joinable = waves[j].getElementsByTagName("joinable")[0];
                        var wave = waves[j].attributes.getNamedItem("id").nodeValue;
                        command = command.firstChild.nodeValue;
                        if(claimers.firstChild){
@@ -106,13 +119,13 @@ function updateClaims(dataSource,xmldoc,timestamp){
                                b.type = 'button';
                                b.setAttribute("class", command);
                                b.value = command +' wave '+wave+' '+claimers;
-                               b.setAttribute("onClick", "claim('"+dataSource+"',"+target+","+wave+",'"+command+"')");
+                               b.setAttribute("onclick", "claim('"+dataSource+"',"+target+","+wave+",'"+command+"');");
                                /*b.onclick = function(){
                                        claim(dataSource,t,wave,command);
                                }*/
                                obj.appendChild(b);
                        }
-                       if (command == 'unclaim'){
+                       if (command == 'Unclaim'){
                                var b = document.createElement("input");
                                b.type = 'button';
                                b.value = 'J';
@@ -121,9 +134,10 @@ function updateClaims(dataSource,xmldoc,timestamp){
                                        b.value = 'N';
                                        command = 'set&joinable=FALSE';
                                }
-                               b.setAttribute("onClick", "claim('"+dataSource+"',"+target+","+wave+",'"+command+"')");
+                               b.setAttribute("onclick", "claim('"+dataSource+"',"+target+","+wave+",'"+command+"');");
                                obj.appendChild(b);
                        }
+                       obj.innerHTML = obj.innerHTML; // IE doesn't understand unless you tell it twice
                }
                obj = document.getElementById("coords"+target);
                var coords = targets[i].getElementsByTagName("coords");;
@@ -131,7 +145,7 @@ function updateClaims(dataSource,xmldoc,timestamp){
                        obj.innerHTML = coords[0].firstChild.nodeValue;
        }
        if (timestamp){
-               timestamp = xmldoc.getElementsByTagName("timestamp");
+               timestamp = xmlthingy.getElementsByTagName("timestamp");
                if (timestamp)
                        modified = timestamp[0].firstChild.nodeValue;
        }