diff options
author | John Christopher Anderson <jchris@apache.org> | 2009-02-22 07:31:26 +0000 |
---|---|---|
committer | John Christopher Anderson <jchris@apache.org> | 2009-02-22 07:31:26 +0000 |
commit | 1ebc2117452516f6ac6f4f458d7372bc710b79d2 (patch) | |
tree | e6dc0c62e64e29247e5c2cf18343690d01e1bc0c /share/www/script | |
parent | 4838c35db5f4d49181b22d72f4cb5697b89c8870 (diff) |
Link to design docs that have ddoc.couchapp.index or index.html, from Futon database index.
git-svn-id: https://svn.apache.org/repos/asf/couchdb/trunk@746644 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'share/www/script')
-rw-r--r-- | share/www/script/couch.js | 13 | ||||
-rw-r--r-- | share/www/script/futon.browse.js | 11 | ||||
-rw-r--r-- | share/www/script/jquery.couch.js | 32 |
3 files changed, 54 insertions, 2 deletions
diff --git a/share/www/script/couch.js b/share/www/script/couch.js index 21382dd0..3f4db334 100644 --- a/share/www/script/couch.js +++ b/share/www/script/couch.js @@ -177,6 +177,10 @@ function CouchDB(name, httpHeaders) { CouchDB.maybeThrowError(this.last_req); return JSON.parse(this.last_req.responseText); } + + this.designDocs = function() { + return this.allDocs({startkey:"_design", endkey:"_design0"}); + }; this.allDocsBySeq = function(options,keys) { var req = null; @@ -263,6 +267,15 @@ CouchDB.allDbs = function() { return JSON.parse(CouchDB.last_req.responseText); } +CouchDB.allDesignDocs = function() { + var ddocs = {}, dbs = CouchDB.allDbs(); + for (var i=0; i < dbs.length; i++) { + var db = new CouchDB(dbs[i]); + ddocs[dbs[i]] = db.designDocs(); + }; + return ddocs; +}; + CouchDB.getVersion = function() { CouchDB.last_req = CouchDB.request("GET", "/"); CouchDB.maybeThrowError(CouchDB.last_req); diff --git a/share/www/script/futon.browse.js b/share/www/script/futon.browse.js index 30cff66e..6a282da6 100644 --- a/share/www/script/futon.browse.js +++ b/share/www/script/futon.browse.js @@ -52,9 +52,16 @@ $("#databases tbody.content").append("<tr>" + "<th><a href='database.html?" + encodeURIComponent(dbName) + "'>" + dbName + "</a></th>" + - "<td class='size'></td><td class='count'></td>" + + "<td class='size'></td><td class='apps'></td><td class='count'></td>" + "<td class='seq'></td></tr>"); - $.couch.db(dbName).info({ + var db = $.couch.db(dbName); + db.allApps({ + eachApp : function(name, path) { + $("#databases tbody.content tr:eq(" + idx + ")") + .find("td.apps").append('<a href="'+path+'">'+name+'</a> '); + } + }); + db.info({ success: function(info) { $("#databases tbody.content tr:eq(" + idx + ")") .find("td.size").text($.futon.formatSize(info.disk_size)).end() diff --git a/share/www/script/jquery.couch.js b/share/www/script/jquery.couch.js index b4566e3a..c912a4bd 100644 --- a/share/www/script/jquery.couch.js +++ b/share/www/script/jquery.couch.js @@ -173,6 +173,38 @@ } }); }, + allDesignDocs: function(options) { + options = options || {}; + this.allDocs($.extend({startkey:"_design", endkey:"_design0"}, options)); + }, + allApps: function(options) { + options = options || {}; + var self = this; + if (options.eachApp) { + this.allDesignDocs({ + success: function(resp) { + $.each(resp.rows, function() { + self.openDoc(this.id, { + success: function(ddoc) { + var index, appPath, appName = ddoc._id.split('/'); + appName.shift(); + appName = appName.join('/'); + index = ddoc.couchapp && ddoc.couchapp.index; + if (index) { + appPath = ['', name, index[0], appName, index[1]].join('/'); + } else if (ddoc._attachments["index.html"]) { + appPath = ['', name, '_design', appName, "index.html"].join('/'); + } + if (appPath) options.eachApp(appName, appPath, ddoc); + } + }); + }); + } + }); + } else { + alert("please provide an eachApp function for allApps()"); + } + }, openDoc: function(docId, options) { options = options || {}; $.ajax({ |