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);
+// });
+// });
+// });