diff options
Diffstat (limited to 'trunk/etherpad/src/static/js/statpage.js')
-rw-r--r-- | trunk/etherpad/src/static/js/statpage.js | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/trunk/etherpad/src/static/js/statpage.js b/trunk/etherpad/src/static/js/statpage.js new file mode 100644 index 0000000..be2948c --- /dev/null +++ b/trunk/etherpad/src/static/js/statpage.js @@ -0,0 +1,143 @@ +/** + * Copyright 2009 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS-IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +$(function() { + $('.title').click(function() { + var id = $(this).parent().attr("id") + toggleId(id); + // $(this).parent().children('.statbody').toggle(); + }); + $('.statbody').each(function() { + if (isVisible($(this).parent().attr("id"))) { + $(this).show(); + } + }); + var cat = window.location.hash.slice(1); + if (! cat) { + cat = "health"; + } + $('.navlink').click(function() { + var cat = $(this).attr("id").slice(4); + showCategory(cat); + }); + showCategory(cat); +}); + +function showCategory(cat) { + $('#fragment').val(cat); + $('.categorywrapper').each(function() { + var localCat = $(this).attr("id").slice(3); + if (localCat == cat) { + $('#link'+localCat).parent().addClass("selected"); + $(this).show(); + } else { + $('#link'+localCat).parent().removeClass("selected"); + $(this).hide(); + } + }) +} + +function formChanged() { + document.forms[0].submit(); +} + +if (! String.prototype.startsWith) { + String.prototype.startsWith = function(s) { + if (this.length < s.length) { return false; } + return this.substr(0, s.length) == s; + } +} + +if (! String.prototype.trim) { + String.prototype.trim = function() { + var firstNonSpace; + for (var i = 0; i < this.length; ++i) { + if (this[i] != ' ') { + firstNonSpace = i; + break; + } + } + var s = this; + if (firstNonSpace) { + s = this.substr(firstNonSpace); + } + var lastNonSpace; + for (var i = this.length-1; i >= 0; --i) { + if (this[i] != ' ') { + lastNonSpace = i; + break; + } + } + if (lastNonSpace !== undefined) { + s = s.substr(0, lastNonSpace+1); + } + return s; + } +} + +if (! Array.prototype.contains) { + Array.prototype.contains = function(obj) { + for (var i = 0; i < this.length; ++i) { + if (this[i] == obj) return true; + } + return false; + } +} + +if (! Array.prototype.first) { + Array.prototype.first = function(f) { + for (var i = 0; i < this.length; ++i) { + if (f(this[i])) { + return this[i]; + } + } + } +} + +var cookieprefix = "visiblestats=" + +function statsCookieValue() { + return (document.cookie.split(";").map(function(s) { return s.trim() }).first(function(str) { + return str.startsWith(cookieprefix); + }) || cookieprefix).split("=")[1]; +} + +function isVisible(id) { + var cookieValue = statsCookieValue(); + return ! (cookieValue.split("-").contains(id)); +} + +function rememberHidden(id) { + if (! isVisible(id)) { return; } + document.cookie = cookieprefix+ + statsCookieValue().split("-").concat([id]).join("-"); +} + +function rememberVisible(id) { + if (isVisible(id)) { return; } + document.cookie = cookieprefix+ + statsCookieValue().split("-").filter(function(obj) { return obj != id }).join("-"); +} + +function toggleId(id) { + var body = $('#'+id).children('.statbody'); + body.toggle(); + if (body.is(":visible")) { + rememberVisible(id); + } else { + rememberHidden(id); + } +}
\ No newline at end of file |