diff options
Diffstat (limited to 'timings/changelog.html')
-rw-r--r-- | timings/changelog.html | 204 |
1 files changed, 204 insertions, 0 deletions
diff --git a/timings/changelog.html b/timings/changelog.html new file mode 100644 index 0000000..586ebad --- /dev/null +++ b/timings/changelog.html @@ -0,0 +1,204 @@ +<html> +<head> +<script src="js/common.js"></script> +<style type="text/css"> +table { + border-collapse: collapse; +} +thead { + border-top: solid 1px gray; + border-left: solid 1px gray; +} +tbody { + border-top: solid 1px gray; + border-bottom: solid 1px gray; + border-left: solid 1px gray; +} +th { + text-align: center; + border-right: solid 1px gray; +} +td { + padding-left: 0.5em; + padding-top: 0.3em; + padding-bottom: 0.3em; + padding-right: 1.4em; + border-top: solid 1px gray; + vertical-align: top; + font-family: monospace; +} +form { + background-color: lightblue; + border: 1px solid gray; + padding: 2px; +} +iframe#content { + border: none; + width: 0px; + height: 0px; +} +/* +form { + position: fixed; + left: 0px; + top: 0px; + width: 100%; +} +*/ +</style> +</head> +<body> +<form name="ui"> + SVN path: <input id="url" type="text" name="url" value=""> + SVN revision range: <input id="range" type="text" name="range" value=""> + <input id="mode_text" type="radio" name="mode" value="text">text + <input id="mode_html" type="radio" name="mode" value="html">html + <input type="submit" value="Show Changelog"> +</form> + +<script> +params = ParseParams(); + +function fix_text(str, n) { + if (str.length > n) + return str.substring(0, n); + + for (var i = str.length; i < n; ++i) + str = str + ' '; + return str; +} + +function get_entries() { + return content.contentDocument.getElementsByTagName("logentry"); +} + +function get_info(entry) { + var r = new Object; + r.rev = entry.getAttribute("revision"); + r.author = entry.getElementsByTagName("author")[0].textContent; + r.msg = entry.getElementsByTagName("msg")[0].textContent; + r.paths = []; + var paths = entry.getElementsByTagName("path") + for (var i = 0; i < paths.length; ++i) { + r.paths.push({"action" : paths[i].getAttribute("action"), + "value" : paths[i].textContent}); + } + return r; +} + +function render_log_callback() { + if ("mode" in params && params.mode == "text") { + var out = document.createElement("PRE"); + document.body.appendChild(out); + + var entries = get_entries(); + for (var i = 0; i < entries.length; ++i) { + var info = get_info(entries[i]); + + var msg = info.msg; + msg = msg.replace(/\n/g, ' ' ); + msg = msg.replace(/\t/g, ' ' ); + while (msg.charAt(0) == ' ') + msg = msg.substring(1); + + var msg_clipped = msg.substring(0, 66); + if (msg_clipped.length < msg.length) + msg_clipped = msg_clipped + "..."; + + out.appendChild(document.createTextNode( + fix_text(info.rev, 6) + " " + + fix_text(info.author, 8) + " " + + msg_clipped + "\n")); + } + } else { + var table = document.createElement("TABLE"); + table.setAttribute("class", "log"); + document.body.appendChild(table); + + var entries = get_entries(); + for (var i = 0; i < entries.length; ++i) { + var info = get_info(entries[i]); + + var tr = document.createElement("TR"); + table.appendChild(tr); + + var td, a; + + // revision: + td = document.createElement("TD"); + tr.appendChild(td); + + a = document.createElement("A"); + a.setAttribute("href", "http://scons.tigris.org/source/browse/scons?view=rev&revision=" + info.rev); + a.appendChild(document.createTextNode(info.rev)); + + td.appendChild(a); + + // author: + td = document.createElement("TD"); + tr.appendChild(td); + + a = document.createElement("A"); + a.setAttribute("href", "mailto:" + info.author); + a.appendChild(document.createTextNode(info.author)); + + td.appendChild(a); + + // details: + td = document.createElement("TD"); + tr.appendChild(td); + + var p = document.createElement("PRE"); + td.appendChild(p); + + var s = info.msg; + p.appendChild(document.createTextNode(s)); + + for (var j = 0; j < info.paths.length; ++j) { + td.appendChild(document.createTextNode(info.paths[j]["action"] + " - ")) + var a = document.createElement("A"); + a.setAttribute("href", "http://scons.tigris.org/source/browse/scons" + info.paths[j]["value"] + "?r1=" + info.rev + "&r2=" + (info.rev - 1) + "&pathrev=" + info.rev); + a.appendChild(document.createTextNode(info.paths[j]["value"])); + td.appendChild(a); + td.appendChild(document.createElement("BR")); + } + } + } +} + +function render_log() { + var svn_url = params["url"]; + var svn_range = params["range"]; + if (svn_url == undefined || svn_range == undefined) + return; + + var url = "http://" + location.host + "/cgi-bin/svn-log?url=http://codf21.jail/svn/" + + unescape(svn_url) + "&range=" + unescape(svn_range); + + // global 'content' variable: a hidden iframe used to fetch svn data. + content = document.createElement("IFRAME"); + content.setAttribute("id", "content"); + content.setAttribute("onload", "render_log_callback()"); + content.setAttribute("src", url); + document.body.appendChild(content); + + var el; + if ("mode" in params && params["mode"] == "text") { + el = document.getElementById("mode_text"); + } else { + el = document.getElementById("mode_html"); + } + el.setAttribute("checked", "1"); + + el = document.getElementById("url"); + el.setAttribute("value", unescape(svn_url)); + + el = document.getElementById("range"); + el.setAttribute("value", unescape(svn_range)); +} + +render_log() +</script> +</body> +</html> + |