diff --git a/buscribe-web/index.html b/buscribe-web/index.html new file mode 100644 index 0000000..07f4057 --- /dev/null +++ b/buscribe-web/index.html @@ -0,0 +1,35 @@ + + + + + Buscribe -- Search + + + + + +
+
+ +
+ + + +
+
+
+ +
+ +
+ +
+
+

Start time and end time specify the time range.

+

Text search supports quotes ("word1 and word2") to search phrases with those words in order. The word "or" works + as an or operator. Dash "-" works as a not operator.

+
+
+ + + \ No newline at end of file diff --git a/buscribe-web/script.js b/buscribe-web/script.js new file mode 100644 index 0000000..a3cf54c --- /dev/null +++ b/buscribe-web/script.js @@ -0,0 +1,56 @@ +function onSiteLoad(e) { + + document.getElementById("search_tools").addEventListener("keydown", + function (event) { + if (event.key === 'Enter') doSearch() + }); +} + +function query(text, start_time, end_time) { + let query_string = "" + + if (start_time !== "") { + query_string += `start_time=${start_time}`; + } + if (end_time !== "") { + query_string += `&end_time=${end_time}`; + } + if (text !== "") { + query_string += `&query=${text}` + } + + fetch(`http://localhost:8005/buscribe/json?${query_string}`) + .then(response => response.json()) + // .then(response => console.log(response.error())) + .then(fillResults) + +} + +function doSearch() { + query( + document.getElementById("search_text").value, + document.getElementById("start_time").value, + document.getElementById("end_time").value + ) +} + +function fillResults(results) { + const results_element = document.getElementById("results") + results_element.innerHTML = "" + + for (const line of results) { + const line_div = document.createElement("div"); + + line_div.classList.add("line"); + + line_div.innerHTML = ` +
+
${line.start_bus_time}
+
${line.start_time}
+
+
${line.text}
+ `; + + results_element.append(line_div) + } +} \ No newline at end of file diff --git a/buscribe-web/style.less b/buscribe-web/style.less new file mode 100644 index 0000000..f145016 --- /dev/null +++ b/buscribe-web/style.less @@ -0,0 +1,79 @@ +body { + color: aliceblue; + background: dimgray; +} + +label { + display: inline-block; + font-family: sans-serif; + width: 5em; + text-align: right; +} + +input[type=datetime-local] { + width: 13em; +} + +button { + padding: 0.25em; +} + +#search_text { + width: 50em; +} + +#help_box { + display: none; + position: fixed; + top: 1em; + right: 1em; + width: 20em; + float: right; + background: #fff; + padding: 1em; + color: #000; +} + +.line { + display: flex; + flex-direction: row; + + margin-bottom: 0.5em; + padding: 0.1em; + max-width: 50em; + + .line_time { + + text-align: right; + + display: flex; + flex-direction: column; + + flex-shrink: 0; + + //padding-top: 0.15em; + + .line_start_time { + color: lightgray; + font-family: monospace; + font-size: smaller; + } + + .line_start_bus_time { + font-family: sans-serif; + font-size: small; + + display: flex; + flex-direction: column; + margin-bottom: 0.2em; + height: 1.36em; // try to align the baselines + justify-content: flex-end; + align-content: flex-end; + } + } + + .line_text { + display: flex; + margin-left: 0.5em; + } +} \ No newline at end of file