summaryrefslogtreecommitdiffstats
path: root/web/client.js
blob: f8b6f0f9a11650a1498549e7dbdc4ffcf0f96e22 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
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("#/");
    })
})