diff options
author | Christopher Lenz <cmlenz@apache.org> | 2008-10-01 13:52:59 +0000 |
---|---|---|
committer | Christopher Lenz <cmlenz@apache.org> | 2008-10-01 13:52:59 +0000 |
commit | 57f2e6a118dc57af6dbd6c377b60bae7fdcd3d22 (patch) | |
tree | 9ed078c70e49c2a3e62f91783b5f60b019599d01 /share/www | |
parent | a502eb9880d20dbd69ac206e5145c646fdb26232 (diff) |
Make the database list in the sidebar in Futon a list of the 10 most recently used databases, to avoid excessive script/render time with instances containing very many databases.
git-svn-id: https://svn.apache.org/repos/asf/incubator/couchdb/trunk@700767 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'share/www')
-rw-r--r-- | share/www/browse/database.html | 7 | ||||
-rw-r--r-- | share/www/index.html | 24 | ||||
-rw-r--r-- | share/www/script/browse.js | 1 | ||||
-rw-r--r-- | share/www/script/jquery.cookies.js | 19 | ||||
-rw-r--r-- | share/www/style/layout.css | 2 |
5 files changed, 30 insertions, 23 deletions
diff --git a/share/www/browse/database.html b/share/www/browse/database.html index 0dd086db..fe17a47b 100644 --- a/share/www/browse/database.html +++ b/share/www/browse/database.html @@ -32,6 +32,13 @@ specific language governing permissions and limitations under the License. if (window != parent) { parent.updateNavigation(location.pathname, encodeURIComponent(location.search.split("/", 2)[0])); + var recentDbs = $.cookies.get("recent", "").split(","); + if ($.inArray(page.db.name, recentDbs) == -1) { + recentDbs.unshift(page.db.name); + if (recentDbs.length > 10) recentDbs.length = 10; + $.cookies.set("recent", recentDbs.join(","), parent.location.pathname); + parent.updateRecentDatabasesList(); + } } $(document).ready(function() { diff --git a/share/www/index.html b/share/www/index.html index 54cc9e15..b6919b93 100644 --- a/share/www/index.html +++ b/share/www/index.html @@ -28,19 +28,17 @@ specific language governing permissions and limitations under the License. </style> <script src="script/json2.js"></script> <script src="script/jquery.js?1.2.6"></script> + <script src="script/jquery.cookies.js?0.8.0"></script> <script src="script/jquery.couch.js?0.8.0"></script> <script> - function updateDatabaseList() { - var list = $("#dbs").empty(); - var dbs = $.couch.allDbs({ - success: function(dbs, status) { - for (var i = 0; i < dbs.length; i++) { - var dbName = dbs[i]; - list.append("<li><a href='browse/database.html?" + - encodeURIComponent(dbName) + "' target='content'>" + dbName + - "</a></li>"); - } - } + function updateRecentDatabasesList() { + $("#dbs").empty(); + var recentDbs = $.cookies.get("recent", "").split(","); + recentDbs.sort(); + $.each(recentDbs, function(idx, name) { + $("#dbs").append("<li><a href='browse/database.html?" + + encodeURIComponent(name) + "' target='content'>" + name + + "</a></li>"); }); } function updateNavigation(path, queryString) { @@ -76,7 +74,7 @@ specific language governing permissions and limitations under the License. $("#version").text(info.version); } }); - updateDatabaseList(); + updateRecentDatabasesList(); }); </script> </head> @@ -91,7 +89,7 @@ specific language governing permissions and limitations under the License. <li><a href="config.html" target="content">Configuration</a></li> <li><a href="couch_tests.html" target="content">Test Suite</a></li> </ul></li> - <li><span>Databases</span> + <li><span>Recent Databases</span> <ul id="dbs"></ul> </li> </ul> diff --git a/share/www/script/browse.js b/share/www/script/browse.js index 82f9eeff..6abcb073 100644 --- a/share/www/script/browse.js +++ b/share/www/script/browse.js @@ -26,7 +26,6 @@ function CouchIndexPage() { $.couch.db(data.name).create({ error: function(status, id, reason) { callback({name: reason}) }, success: function(resp) { - if (window !== parent) parent.setTimeout("updateDatabaseList()", 500); location.href = "database.html?" + encodeURIComponent(data.name); callback(); } diff --git a/share/www/script/jquery.cookies.js b/share/www/script/jquery.cookies.js index a2817461..77c5e0a9 100644 --- a/share/www/script/jquery.cookies.js +++ b/share/www/script/jquery.cookies.js @@ -15,7 +15,7 @@ $.fn.extend($.cookies, { /* Return the value of a cookie. */ - get: function(name) { + get: function(name, defaultValue) { var nameEq = name + "="; var parts = document.cookie.split(';'); for (var i = 0; i < parts.length; i++) { @@ -24,23 +24,26 @@ return unescape(part.substring(nameEq.length, part.length)); } } - return null; + return defaultValue !== undefined ? defaultValue : null; }, /* Create or update a cookie. */ - set: function(name, value, days) { - var expires = ""; + set: function(name, value, path, days) { + var params = []; + if (path) { + params.push("; path=" + path); + } if (days) { var date = new Date(); date.setTime(date.getTime() + (days * 24*60*60*1000)); - expires = "; expires=" + date.toGMTString(); + params.push("; expires=" + date.toGMTString()); } - document.cookie = name + "=" + escape(value) + expires; + document.cookie = name + "=" + escape(value) + params.join(); }, /* Remove a cookie. */ - remove: function(name) { - $.cookies.set(name, "", -1); + remove: function(name, path) { + $.cookies.set(name, "", path, -1); } }); diff --git a/share/www/style/layout.css b/share/www/style/layout.css index 7b0aeb04..db86acc3 100644 --- a/share/www/style/layout.css +++ b/share/www/style/layout.css @@ -16,7 +16,7 @@ specific language governing permissions and limitations under the License. /* General styles */ html, body { background: transparent; color: #000; - font: normal 90% Arial,Helvetica,sans-serif; margin: 0; + font: normal 90% Arial,Helvetica,sans-serif; margin: 0; padding: 0; } :link, :visited { color: #ba1e16; text-decoration: none; } :link img, :visited img { border: none; } |