Skip to content

Commit

Permalink
Make the database list in the sidebar in Futon a list of the 10 most …
Browse files Browse the repository at this point in the history
…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
  • Loading branch information
cmlenz committed Oct 1, 2008
1 parent a502eb9 commit 57f2e6a
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 23 deletions.
7 changes: 7 additions & 0 deletions share/www/browse/database.html
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,13 @@
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() {
Expand Down
24 changes: 11 additions & 13 deletions share/www/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -28,19 +28,17 @@
</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) {
Expand Down Expand Up @@ -76,7 +74,7 @@
$("#version").text(info.version);
}
});
updateDatabaseList();
updateRecentDatabasesList();
});
</script>
</head>
Expand All @@ -91,7 +89,7 @@
<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>
Expand Down
1 change: 0 additions & 1 deletion share/www/script/browse.js
Original file line number Diff line number Diff line change
Expand Up @@ -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();
}
Expand Down
19 changes: 11 additions & 8 deletions share/www/script/jquery.cookies.js
Original file line number Diff line number Diff line change
Expand Up @@ -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++) {
Expand All @@ -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);
}

});
Expand Down
2 changes: 1 addition & 1 deletion share/www/style/layout.css
Original file line number Diff line number Diff line change
Expand Up @@ -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; }
Expand Down

0 comments on commit 57f2e6a

Please sign in to comment.