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=a49dcf243ed91277d8cc89db74e2f5a8c4d34cec;hb=8c4e25b73c680ce4072247592bd44e1c809e2dd2;hpb=04909b0f2c6a21284dbd4ff05186f9ef89caee17 diff --git a/src/journal/browse.html b/src/journal/browse.html index a49dcf243..3594f70c8 100644 --- a/src/journal/browse.html +++ b/src/journal/browse.html @@ -6,7 +6,7 @@ @@ -110,19 +118,27 @@
+
+ +      + Only current boot +
+
-
- - - - +
+ + + +      - - - + + +
g: First Page      @@ -156,6 +172,10 @@ } function setNEntries(n) { + if (n < 10) + return 10; + if (n > 1000) + return 1000; localStorage["n_entries"] = n.toString(); showNEntries(n); } @@ -217,12 +237,24 @@ function entriesLoad(range) { if (range == null) - range = localStorage["cursor"]; + 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()); @@ -262,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...'; @@ -419,14 +450,95 @@ 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(null); showNEntries(getNEntries()); - document.onkeyup = onKeyUp; - - logs = document.getElementById("tablelogs"); - logs.addEventListener("mousewheel", onMouseWheel, false); - logs.addEventListener("DOMMouseScroll", onMouseWheel, false); + initFilter(); + installHandlers();