From 1ebc2117452516f6ac6f4f458d7372bc710b79d2 Mon Sep 17 00:00:00 2001 From: John Christopher Anderson Date: Sun, 22 Feb 2009 07:31:26 +0000 Subject: 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 --- share/www/script/couch.js | 13 +++++++++++++ share/www/script/futon.browse.js | 11 +++++++++-- share/www/script/jquery.couch.js | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+), 2 deletions(-) (limited to 'share/www/script') 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("" + "" + dbName + "" + - "" + + "" + ""); - $.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(''+name+' '); + } + }); + 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({ -- cgit v1.2.3