First semi-working html+javascript code

For now, local user-name and folder name is hardcoded, but the code
already sends interest, parses result, and creates a list of files.

Change-Id: Icb2f559f08fac29efa9d87eb55b42248a28d2f28
diff --git a/gui/html/chronoshare.js b/gui/html/chronoshare.js
index 3ceb828..c8b8ae0 100644
--- a/gui/html/chronoshare.js
+++ b/gui/html/chronoshare.js
@@ -1,65 +1,161 @@
 
-  hostip = "127.0.0.1";
-        
-  var AsyncGetClosure = function AsyncGetClosure() {
-                      Closure.call(this);
-              };
+$.Class ("FilesClosure", {}, {
+    upcall: function(kind, upcallInfo) {
+        $("#loader").fadeOut (500); // ("hidden");
+        if (kind == Closure.UPCALL_CONTENT) {
+            convertedData = DataUtils.toString (upcallInfo.contentObject.content);
+            $("#json").text (convertedData);
+            $("#json").removeClass ("hidden");
+            data = JSON.parse (convertedData);
 
-              AsyncGetClosure.prototype.upcall = function(kind, upcallInfo, tmp) {
-                      if (kind == Closure.UPCALL_FINAL) {
-                              // Do nothing.
-                      } else if (kind == Closure.UPCALL_CONTENT) {
-                              var content = upcallInfo.contentObject;
-      var nameStr = content.name.getName().split("/").slice(5,6);
-      
-      if (nameStr == "prefix") {
-        document.getElementById('prefixcontent').innerHTML = DataUtils.toString(content.content);
-        prefix();
-      } else if (nameStr == "link") {
-        document.getElementById('linkcontent').innerHTML = DataUtils.toString(content.content);
-        link();
-      } else {
-        var data = DataUtils.toString(content.content);
-        var obj = jQuery.parseJSON(data);
-        document.getElementById("lastupdated").innerHTML = obj.lastupdated;
-        document.getElementById("lastlog").innerHTML = obj.lastlog;
-        document.getElementById("lasttimestamp").innerHTML = obj.lasttimestamp;
-      }
-                      } else if (kind == Closure.UPCALL_INTEREST_TIMED_OUT) {
-                              console.log("Closure.upcall called with interest time out.");
-                      }
-                      return Closure.RESULT_OK;
-              };
+            // error handling?
+            // if (data.files instanceof Array) {
+            //     alert (data.files);
+            // }
 
-              function getStatus(name) {
-    // Template interest to get the latest content.
-    var interest = new Interest("/tmp/");
-                      interest.childSelector = 1;
-                      interest.interestLifetime = 4000;
-
-                      ndn.expressInterest(new Name("/ndn/memphis.edu/netlab/status/" + name), new AsyncGetClosure(), interest);
-  }
-
-  // Calls to get the content data.
-  function begin() {
-    getStatus("metadata");
-    getStatus("prefix");
-    getStatus("link");
-  }
-
-  var ndn;
-  $(document).ready(function() {
-    $("#all").fadeIn(500);
-    var res = detect();
-
-    if (!res) {
-      $("#base").fadeOut(50);
-      $("#nosupport").fadeIn(500);
+            var html = $("tbody#files");
+            for (var i = 0; i < data.files.length; i++) {
+                file = data.files[i];
+                html = html.append ([
+                    "<tr"+(i%2?" class=\"odd\"":"")+">",
+                    "<td class=\"border-left\">" + file.filename + "</td>",
+                    "<td>" + file.version + "</td>",
+                    "<td>" + file.timestamp + "</td>",
+                    "<td class=\"border-right\">" + "</td>",
+                    "</tr>"
+                ].join());
+            }
+        }
+        else if (kind == Closure.UPCALL_INTEREST_TIMED_OUT) {
+            $("#error").html ("Interest timed out");
+            $("#error").removeClass ("hidden");
+        }
+        else {
+            $("#error").html ("Unknown error happened");
+            $("#error").removeClass ("hidden");
+            // some kind of error
+        }
     }
-    else {
-      openHandle = function() { console.log("NDN established"); };
-      ndn = new NDN({host:hostip, onopen:openHandle});
-      ndn.transport.connectWebSocket(ndn);
-    }
-  });
+});
 
+
+$.Class ("ChronoShare", { },
+ {
+     init: function (username, foldername) {
+         this.username = new Name (username);
+         this.files = new Name ("/localhost").add (this.username).add ("chronoshare").add (foldername).add ("info").add ("files").add ("folder");
+
+         this.actions = new Name ("/localhost").add (this.username).add ("chronoshare").add (foldername).add ("info").add ("actions").add ("folder");
+
+         this.restore = new Name ("/localhost").add (this.username).add ("chronoshare").add (foldername).add ("cmd").add ("restore").add ("file");
+
+         this.ndn = new NDN ({host:"127.0.0.1", getHostAndPort: function() { return {host: "127.0.0.1", port: 9696}}});
+         // this.ndn.transport.connect (this.ndn);
+     },
+
+     run: function () {
+         request = new Name ().add (this.files)./*add (folder_in_question).*/add ("nonce").addSegment (0);
+         console.log (request.to_uri ());
+         $("#files").empty ();
+         // $("#loader").removeClass ("hidden");
+         $("#loader").fadeIn (500);
+         this.ndn.expressInterest (request, new FilesClosure ());
+     }
+// ,
+
+     // sendRequest: function () {
+     //     alert ('bla');
+     // }
+ });
+
+
+// $.Class ("onFiles",
+//  {
+//  },
+
+//  {
+//      upcall: function(kind, upcallInfo, tmp) {
+//          if (kind
+//      }
+//  });
+
+// var AsyncGetClosure = function AsyncGetClosure() {
+//     Closure.call(this);
+// };
+
+// AsyncGetClosure.prototype.upcall = function(kind, upcallInfo, tmp) {
+//     if (kind == Closure.UPCALL_FINAL) {
+//         // Do nothing.
+//     } else if (kind == Closure.UPCALL_CONTENT) {
+//         var content = upcallInfo.contentObject;
+// 	var nameStr = content.name.getName().split("/").slice(5,6);
+
+// 	if (nameStr == "prefix") {
+// 	    document.getElementById('prefixcontent').innerHTML = DataUtils.toString(content.content);
+// 	    prefix();
+// 	} else if (nameStr == "link") {
+// 	    document.getElementById('linkcontent').innerHTML = DataUtils.toString(content.content);
+// 	    link();
+// 	} else {
+// 	    var data = DataUtils.toString(content.content);
+// 	    var obj = jQuery.parseJSON(data);
+// 	    document.getElementById("lastupdated").innerHTML = obj.lastupdated;
+// 	    document.getElementById("lastlog").innerHTML = obj.lastlog;
+// 	    document.getElementById("lasttimestamp").innerHTML = obj.lasttimestamp;
+// 	}
+//     } else if (kind == Closure.UPCALL_INTEREST_TIMED_OUT) {
+//         console.log("Closure.upcall called with interest time out.");
+//     }
+//     return Closure.RESULT_OK;
+// };
+
+// function getStatus(name) {
+//     // Template interest to get the latest content.
+//     var interest = new Interest("/tmp/");
+//     interest.childSelector = 1;
+//     interest.interestLifetime = 4000;
+
+//     ndn.expressInterest(new Name("/ndn/memphis.edu/netlab/status/" + name), new AsyncGetClosure(), interest);
+// }
+
+// // Calls to get the content data.
+// function begin() {
+//     getStatus("metadata");
+//     getStatus("prefix");
+//     getStatus("link");
+// }
+
+// var ndn;
+// $(document).ready(function() {
+//     $("#all").fadeIn(500);
+//     var res = detect();
+
+//     if (!res) {
+// 	$("#base").fadeOut(50);
+// 	$("#nosupport").fadeIn(500);
+//     } else {
+//         //$("#all").fadeIn(500);
+
+//         $.get("test.php", function() {
+// 	    openHandle = function() { begin() };
+//             ndn = new NDN({host:hostip, onopen:openHandle});
+//             ndn.transport.connectWebSocket(ndn);
+// 	    $("#base").fadeOut(500, function () {
+//                 $("#status").fadeIn(1000);
+//             });
+//         });
+//     }
+// });
+
+// $("#continue").click(function() {
+//     $("#nosupport").fadeOut(50);
+//     $("#base").fadeIn(500);
+//     $.get("test.php", function() {
+//         openHandle = function() { begin() };
+//         ndn = new NDN({host:hostip, onopen:openHandle});
+//         ndn.transport.connectWebSocket(ndn);
+//         $("#base").fadeOut(500, function () {
+//             $("#status").fadeIn(1000);
+//         });
+//     });
+// });