summaryrefslogtreecommitdiffstats
path: root/web/client.js
diff options
context:
space:
mode:
Diffstat (limited to 'web/client.js')
-rw-r--r--web/client.js71
1 files changed, 71 insertions, 0 deletions
diff --git a/web/client.js b/web/client.js
new file mode 100644
index 0000000..f8b6f0f
--- /dev/null
+++ b/web/client.js
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2012-2013 Kaarle Ritvanen
+ * See LICENSE file for license details
+ */
+
+$(function() {
+ $.ajax("/login", {
+ type: "POST",
+ data: JSON.stringify({username: "admin", password: "admin"})
+ }).done(function(data, status, xhr) {
+
+ var token = xhr.getResponseHeader("X-ACF-Auth-Token");
+
+ $(window).bind("hashchange", function() {
+ var path = $.param.fragment();
+
+ $.ajax("/config" + path, {headers: {"X-ACF-Auth-Token": token}})
+ .done(function(data) {
+ var content = $("#content");
+ content.html($("<h1>").text(path));
+
+ if (["collection", "model", "set"]
+ .indexOf(data.meta.type) == -1) {
+ content.append(JSON.stringify(data));
+ return;
+ }
+
+ var table = $("<table>");
+
+ function render(name, value, meta) {
+ var row = $("<tr>");
+ if (name != null) row.append($("<td>").text(name));
+
+ var td = $("<td>");
+ if (["collection", "model", "reference", "set"]
+ .indexOf(meta.type) > -1) {
+
+ var link = $("<a>")
+ .attr({href: "javascript:void(0);"})
+ .click(_.bind(function() {
+ $.bbq.pushState("#" + value);
+ }, value));
+ link.text(value);
+ td.html(link);
+ }
+ else td.text(value);
+ row.append(td);
+
+ row.append($("<td>").text(JSON.stringify(meta)));
+
+ table.append(row);
+ }
+
+ if (data.meta.type == "model")
+ _.each(data.meta.fields, function(field) {
+ render(
+ field["ui-name"], data.data[field.name], field
+ );
+ });
+
+ else _.each(data.data, function(value) {
+ render(null, value, data.meta.members);
+ });
+
+ content.append(table);
+ });
+ });
+
+ $.bbq.pushState("#/");
+ })
+})