X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fjournal%2Fbrowse.html;h=3594f70c8728c3919fdda83d141783b728352ffb;hp=5a161a13fbaa8985afefcdbad45da394d4becae9;hb=8c4e25b73c680ce4072247592bd44e1c809e2dd2;hpb=6d5f2f58033493a71402755944f46f09d990bad4 diff --git a/src/journal/browse.html b/src/journal/browse.html index 5a161a13f..3594f70c8 100644 --- a/src/journal/browse.html +++ b/src/journal/browse.html @@ -6,7 +6,7 @@

@@ -104,24 +118,32 @@
+
+ +      + Only current boot +
+
-
- - - - +
+ + + +      - - - + + +
- →, j, SPACE: Next Page      - ←, k, BACKSPACE: Previous Page      g: First Page      + ←, k, BACKSPACE: Previous Page      + →, j, SPACE: Next Page      G: Last Page      +: More entries      -: Fewer entries @@ -131,33 +153,17 @@ var first_cursor = null; var last_cursor = null; - function setCookie(name, value, msec) { - var d = new Date(); - d.setMilliseconds(d.getMilliseconds() + msec); - var v = escape(value) + "; expires=" + d.toUTCString(); - document.cookie = name + "=" + value; - } - - function getCookie(name) { - var i, l; - l = document.cookie.split(";"); - for (i in l) { - var x, y, j; - j = l[i].indexOf("="); - x = l[i].substr(0, j); - y = l[i].substr(j+1); - if (x == name) - return unescape(y); - } - return null; - } - function getNEntries() { var n; - n = getCookie("n_entries"); + n = localStorage["n_entries"]; if (n == null) return 50; - return parseInt(n); + n = parseInt(n); + if (n < 10) + return 10; + if (n > 1000) + return 1000; + return n; } function showNEntries(n) { @@ -167,11 +173,10 @@ function setNEntries(n) { if (n < 10) - n = 10; - else if (n > 1000) - n = 1000; - - setCookie("n_entries", n.toString(), 30*24*60*60*1000); + return 10; + if (n > 1000) + return 1000; + localStorage["n_entries"] = n.toString(); showNEntries(n); } @@ -230,8 +235,26 @@ } function entriesLoad(range) { + + if (range == null) + range = localStorage["cursor"] + ":0"; + if (range == null) + range = ""; + + var url = "/entries"; + + if (localStorage["filter"] != "" && localStorage["filter"] != null) { + url += "?_SYSTEMD_UNIT=" + escape(localStorage["filter"]); + + if (localStorage["boot"] == "1") + url += "&boot"; + } else { + if (localStorage["boot"] == "1") + url += "?boot"; + } + var request = new XMLHttpRequest(); - request.open("GET", "/entries"); + request.open("GET", url); request.onreadystatechange = entriesOnResult; request.setRequestHeader("Accept", "application/json"); request.setRequestHeader("Range", "entries=" + range + ":" + getNEntries().toString()); @@ -271,8 +294,7 @@ var lc = null; var fc = null; - var i; - var l = event.currentTarget.responseText.split('\n'); + var i, l = event.currentTarget.responseText.split('\n'); if (l.length <= 1) { logs.innerHTML = 'No further entries...'; @@ -326,7 +348,7 @@ else if (d.SYSLOG_PID != undefined) buf += "[" + escapeHTML(d.SYSLOG_PID) + "]"; - buf += ''; + buf += ''; if (d.MESSAGE == null) buf += "[blob data]"; @@ -340,8 +362,10 @@ logs.innerHTML = '' + buf + ''; - if (fc != null) + if (fc != null) { first_cursor = fc; + localStorage["cursor"] = fc; + } if (lc != null) last_cursor = lc; } @@ -419,10 +443,102 @@ } } + function onMouseWheel(event) { + if (event.detail < 0 || event.wheelDelta > 0) + entriesLoadPrevious(); + else + entriesLoadNext(); + } + + function onResultFilterFocus(event) { + if ((event.currentTarget.readyState != 4) || + (event.currentTarget.status != 200 && event.currentTarget.status != 0)) + return; + + f = document.getElementById("filter"); + + var l = event.currentTarget.responseText.split('\n'); + var buf = ''; + var j = -1; + + for (i in l) { + + if (l[i] == '') + continue; + + var d = JSON.parse(l[i]); + if (d._SYSTEMD_UNIT == undefined) + continue; + + buf += ''; + + if (d._SYSTEMD_UNIT == localStorage["filter"]) + j = i; + } + + if (j < 0) { + if (localStorage["filter"] != null && localStorage["filter"] != "") { + buf += ''; + j = i + 1; + } else + j = 0; + } + + f.innerHTML = buf; + f.selectedIndex = j; + } + + function onFilterFocus(w) { + var request = new XMLHttpRequest(); + request.open("GET", "/fields/_SYSTEMD_UNIT"); + request.onreadystatechange = onResultFilterFocus; + request.setRequestHeader("Accept", "application/json"); + request.send(null); + } + + function onFilterChange(w) { + if (w.selectedIndex <= 0) + localStorage["filter"] = ""; + else + localStorage["filter"] = unescape(w.options[w.selectedIndex].value); + + entriesLoadHead(); + } + + function onBootChange(w) { + localStorage["boot"] = w.checked ? "1" : "0"; + entriesLoadHead(); + } + + function initFilter() { + f = document.getElementById("filter"); + + var buf = ''; + + var filter = localStorage["filter"]; + if (filter != null && filter != "") { + buf += ''; + j = 1; + } else + j = 0; + + f.innerHTML = buf; + f.selectedIndex = j; + } + + function installHandlers() { + document.onkeyup = onKeyUp; + + logs = document.getElementById("divlogs"); + logs.addEventListener("mousewheel", onMouseWheel, false); + logs.addEventListener("DOMMouseScroll", onMouseWheel, false); + } + machineLoad(); - entriesLoad(""); + entriesLoad(null); showNEntries(getNEntries()); - document.onkeyup = onKeyUp; + initFilter(); + installHandlers();