Some styling and code cleanup
This commit is contained in:
@@ -5,7 +5,7 @@ from datetime import date, datetime # used for daily verse
|
|||||||
import sqlite3
|
import sqlite3
|
||||||
import string # for literals
|
import string # for literals
|
||||||
import json # for dictionary
|
import json # for dictionary
|
||||||
import hunspell # for spell checking
|
import hunspell # for spell checking (not really used)
|
||||||
import sys
|
import sys
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
@@ -48,7 +48,6 @@ cached = {
|
|||||||
"html_response": open("html/response.html", "r").read(),
|
"html_response": open("html/response.html", "r").read(),
|
||||||
"html_navbar": open("html/navbar.html", "r").read(),
|
"html_navbar": open("html/navbar.html", "r").read(),
|
||||||
"css_navbar": open("styles/header.css", "r").read(),
|
"css_navbar": open("styles/header.css", "r").read(),
|
||||||
"js_navbar": open("js/header.js", "r").read(),
|
|
||||||
"css_response": open("styles/human_readable.css", "r").read(),
|
"css_response": open("styles/human_readable.css", "r").read(),
|
||||||
"css_collapsible": open("styles/collapsible.css", "r").read(),
|
"css_collapsible": open("styles/collapsible.css", "r").read(),
|
||||||
"js_collapsible": open("js/collapsible.js", "r").read(),
|
"js_collapsible": open("js/collapsible.js", "r").read(),
|
||||||
@@ -221,6 +220,7 @@ def parse_query():
|
|||||||
if len(result) > 17:
|
if len(result) > 17:
|
||||||
return result
|
return result
|
||||||
result = "<!DOCTYPE html>"
|
result = "<!DOCTYPE html>"
|
||||||
|
result += search()
|
||||||
result += "<style>" + cached["css_collapsible"] + "</style>"
|
result += "<style>" + cached["css_collapsible"] + "</style>"
|
||||||
result += "<h3>1828 Webster Definitions</h3> Click on the word to get the definition."
|
result += "<h3>1828 Webster Definitions</h3> Click on the word to get the definition."
|
||||||
split_query = query.replace(",", " ").split(" ")
|
split_query = query.replace(",", " ").split(" ")
|
||||||
@@ -235,11 +235,11 @@ def parse_query():
|
|||||||
+ word.capitalize()
|
+ word.capitalize()
|
||||||
+ "</button>"
|
+ "</button>"
|
||||||
)
|
)
|
||||||
result += "<div class='content'>" + definition + "</div>"
|
result += "<div class='definition'>" + definition + "</div>"
|
||||||
logging.debug(f"parse_query.define = '{word}'")
|
logging.debug(f"parse_query.define = '{word}'")
|
||||||
result += "<script>" + cached["js_collapsible"] + "</script>"
|
result += "<script>" + cached["js_collapsible"] + "</script>"
|
||||||
result += "<hr>"
|
result += "<hr>"
|
||||||
result += search()
|
#result += search()
|
||||||
logging.debug(f"parse_query.search = '{result}'")
|
logging.debug(f"parse_query.search = '{result}'")
|
||||||
return result
|
return result
|
||||||
|
|
||||||
@@ -354,7 +354,7 @@ def show(kw=None, get_start_verse_id=False):
|
|||||||
logging.debug(f"show.results({results})")
|
logging.debug(f"show.results({results})")
|
||||||
for result in results:
|
for result in results:
|
||||||
verse_results.append(result)
|
verse_results.append(result)
|
||||||
response_list = response_multi(verse_results)
|
response_list = scripture_response(verse_results)
|
||||||
arg_view = request.args.get("view", None)
|
arg_view = request.args.get("view", None)
|
||||||
if arg_view == "plain":
|
if arg_view == "plain":
|
||||||
response = "<br>".join(response_list)
|
response = "<br>".join(response_list)
|
||||||
@@ -395,37 +395,7 @@ def response_rich(scripture):
|
|||||||
chapter=passage.split(":")[0], passage=passage, text=text
|
chapter=passage.split(":")[0], passage=passage, text=text
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def scripture_response(scriptures):
|
||||||
def response_single(scripture):
|
|
||||||
logging.debug(f"response_single({scripture})")
|
|
||||||
arg_view = request.args.get("view", "json")
|
|
||||||
logging.debug(f"->requested_format = {arg_view}")
|
|
||||||
if arg_view == "plain":
|
|
||||||
return response_text(scripture)
|
|
||||||
elif arg_view == "rich":
|
|
||||||
l_r_nav = get_next_prev_chapter(
|
|
||||||
str(scripture[0])
|
|
||||||
) # get the first scripture, the id thereof
|
|
||||||
return (
|
|
||||||
cached["html_navbar"].format(
|
|
||||||
query=request.args.get("kw", ""),
|
|
||||||
current_chapter_name=l_r_nav["current_chapter_name"],
|
|
||||||
next_chapter_name=l_r_nav["next_chapter_name"],
|
|
||||||
next_chapter_link=l_r_nav["next_chapter_link"],
|
|
||||||
prev_chapter_name=l_r_nav["prev_chapter_name"],
|
|
||||||
prev_chapter_link=l_r_nav["prev_chapter_link"],
|
|
||||||
)
|
|
||||||
+ cached["js_navbar"]
|
|
||||||
+ cached["css_navbar"]
|
|
||||||
+ cached["css_response"]
|
|
||||||
+ response_rich(scripture)
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
response = response_dict(scripture)
|
|
||||||
return jsonify(response)
|
|
||||||
|
|
||||||
|
|
||||||
def response_multi(scriptures):
|
|
||||||
response = []
|
response = []
|
||||||
arg_view = request.args.get("view", "json")
|
arg_view = request.args.get("view", "json")
|
||||||
logging.debug(f"search ->requested_format = {arg_view}")
|
logging.debug(f"search ->requested_format = {arg_view}")
|
||||||
@@ -436,7 +406,7 @@ def response_multi(scriptures):
|
|||||||
l_r_nav = get_next_prev_chapter(
|
l_r_nav = get_next_prev_chapter(
|
||||||
str(scriptures[0][0])
|
str(scriptures[0][0])
|
||||||
) # get the first scripture, the id thereof
|
) # get the first scripture, the id thereof
|
||||||
response.append(cached["css_response"])
|
#response.append(cached["css_response"])
|
||||||
response.append(
|
response.append(
|
||||||
cached["html_navbar"].format(
|
cached["html_navbar"].format(
|
||||||
query=request.args.get("kw", ""),
|
query=request.args.get("kw", ""),
|
||||||
@@ -449,9 +419,11 @@ def response_multi(scriptures):
|
|||||||
)
|
)
|
||||||
|
|
||||||
response.append(cached["css_navbar"])
|
response.append(cached["css_navbar"])
|
||||||
response.append(cached["js_navbar"])
|
response.append("<div class='responses'")
|
||||||
|
response.append(f"{len(scriptures)} Results")
|
||||||
for scripture in scriptures:
|
for scripture in scriptures:
|
||||||
response.append(response_rich(scripture))
|
response.append(response_rich(scripture))
|
||||||
|
response.append("</div>")
|
||||||
else:
|
else:
|
||||||
for scripture in scriptures:
|
for scripture in scriptures:
|
||||||
response.append(response_dict(scripture))
|
response.append(response_dict(scripture))
|
||||||
@@ -482,9 +454,19 @@ def salvation():
|
|||||||
@app.get("/random")
|
@app.get("/random")
|
||||||
def random_verse():
|
def random_verse():
|
||||||
rand_id = random.SystemRandom().choice(cached["verse_ids"])
|
rand_id = random.SystemRandom().choice(cached["verse_ids"])
|
||||||
scripture = lookup_one_verse(rand_id)
|
#scripture = lookup_one_verse(rand_id)
|
||||||
|
scripture = lookup_by_verse_id(rand_id)
|
||||||
logging.info(f"Random Served: {scripture[0]}")
|
logging.info(f"Random Served: {scripture[0]}")
|
||||||
return response_single(scripture)
|
response_list = scripture_response(scripture)
|
||||||
|
arg_view = request.args.get("view", None)
|
||||||
|
if arg_view == "plain":
|
||||||
|
response = "<br>".join(response_list)
|
||||||
|
elif arg_view == "rich":
|
||||||
|
response = "<br>".join(response_list)
|
||||||
|
else:
|
||||||
|
response = jsonify(response_list)
|
||||||
|
logging.debug(f"Search Response: {response}")
|
||||||
|
return response
|
||||||
|
|
||||||
|
|
||||||
# backwards-compatibility
|
# backwards-compatibility
|
||||||
@@ -496,9 +478,17 @@ def verse_of_the_day():
|
|||||||
today = int(str(date.today()).replace("-", ""))
|
today = int(str(date.today()).replace("-", ""))
|
||||||
# this is deterministic because of today's date being used as the seed
|
# this is deterministic because of today's date being used as the seed
|
||||||
random.seed(today)
|
random.seed(today)
|
||||||
scripture = lookup_one_verse(random.choice(cached["verse_ids"]))
|
scripture = lookup_by_verse_id(random.choice(cached["verse_ids"]))
|
||||||
return response_single(scripture)
|
response_list = scripture_response(scripture)
|
||||||
|
arg_view = request.args.get("view", None)
|
||||||
|
if arg_view == "plain":
|
||||||
|
response = "<br>".join(response_list)
|
||||||
|
elif arg_view == "rich":
|
||||||
|
response = "<br>".join(response_list)
|
||||||
|
else:
|
||||||
|
response = jsonify(response_list)
|
||||||
|
logging.debug(f"Search Response: {response}")
|
||||||
|
return response
|
||||||
|
|
||||||
@app.get("/search")
|
@app.get("/search")
|
||||||
def search():
|
def search():
|
||||||
@@ -517,7 +507,7 @@ def search():
|
|||||||
return "{} not found, try one of the following: {}".format(
|
return "{} not found, try one of the following: {}".format(
|
||||||
cleaned_keywords, ", ".join(suggestions)
|
cleaned_keywords, ", ".join(suggestions)
|
||||||
)
|
)
|
||||||
response_list = response_multi(results)
|
response_list = scripture_response(results)
|
||||||
arg_view = request.args.get("view", None)
|
arg_view = request.args.get("view", None)
|
||||||
if arg_view == "plain":
|
if arg_view == "plain":
|
||||||
response = "<br>".join(response_list)
|
response = "<br>".join(response_list)
|
||||||
@@ -608,7 +598,7 @@ def sequential_read(start=0, num=1, uid=None, getuid=False):
|
|||||||
start_verse = cached["verse_ids"][nextverse]
|
start_verse = cached["verse_ids"][nextverse]
|
||||||
end_verse = cached["verse_ids"][nextverse + num]
|
end_verse = cached["verse_ids"][nextverse + num]
|
||||||
result_list = lookup_by_verse_id(start_verse, end_verse)
|
result_list = lookup_by_verse_id(start_verse, end_verse)
|
||||||
response_list = response_multi(result_list)
|
response_list = scripture_response(result_list)
|
||||||
|
|
||||||
logging.info(f"Served {num+1} verses to UID {uid}")
|
logging.info(f"Served {num+1} verses to UID {uid}")
|
||||||
seq_cur.execute(
|
seq_cur.execute(
|
||||||
|
|||||||
+11
-9
@@ -1,20 +1,22 @@
|
|||||||
<div class="topbar" align="center">
|
<div class="topbar" align="center">
|
||||||
<a href="/">Home</a> | <a href="/find">Quick Search</a> |
|
|
||||||
<a href="/random?view=rich">Random Verse</a> |
|
|
||||||
<a href="/votd?view=rich">Verse of the Day</a>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="header" id="NavHeader">
|
<header>
|
||||||
<header align="center">
|
<div class="header" id="NavHeader" align="center">
|
||||||
|
|
||||||
|
<a href="/">Home</a> |
|
||||||
|
<a href="/random?view=rich">Random Verse</a> |
|
||||||
|
<a href="/votd?view=rich">Verse of the Day</a>
|
||||||
<form action="/find">
|
<form action="/find">
|
||||||
<input type="text" name="kw" value="{query}" id="searchBar">
|
<input type="text" name="kw" value="{query}" id="searchBar">
|
||||||
<input type="hidden" name="view" value="rich"">
|
|
||||||
<input type="submit" value="Search">
|
<input type="submit" value="Search">
|
||||||
|
<input type="hidden" name="view" value="rich">
|
||||||
</form>
|
</form>
|
||||||
<
|
←
|
||||||
<a href="{prev_chapter_link}">{prev_chapter_name}</a> |
|
<a href="{prev_chapter_link}">{prev_chapter_name}</a> |
|
||||||
{current_chapter_name} |
|
{current_chapter_name} |
|
||||||
<a href="{next_chapter_link}">{next_chapter_name}</a>
|
<a href="{next_chapter_link}">{next_chapter_name}</a>
|
||||||
>
|
→
|
||||||
</header>
|
|
||||||
</div>
|
</div>
|
||||||
|
</header>
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
<script>
|
|
||||||
// When the user scrolls the page, execute myFunction
|
|
||||||
window.onscroll = function() {headerscroll()};
|
|
||||||
|
|
||||||
// Get the header
|
|
||||||
var header = document.getElementById("NavHeader");
|
|
||||||
|
|
||||||
// Get the offset position of the navbar
|
|
||||||
var sticky = header.offsetTop;
|
|
||||||
|
|
||||||
// Add the sticky class to the header when you reach its scroll position. Remove "sticky" when you leave the scroll position
|
|
||||||
function headerscroll() {
|
|
||||||
if (window.pageYOffset > sticky) {
|
|
||||||
header.classList.add("sticky");
|
|
||||||
} else {
|
|
||||||
header.classList.remove("sticky");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
+24
-22
@@ -1,30 +1,40 @@
|
|||||||
<style>
|
<style>
|
||||||
/* Style the header */
|
/* Style the header */
|
||||||
|
|
||||||
.topbar{
|
.responses{
|
||||||
padding: 10px;
|
font-family: sans-serif;
|
||||||
}
|
font-size: 14.5pt;
|
||||||
a {
|
width: 768px;
|
||||||
text-align: center;
|
padding: 1px;
|
||||||
}
|
margin-top: 100px;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
color: #547720
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.header {
|
.header {
|
||||||
|
font-family: sans-serif;
|
||||||
padding: 10px 16px;
|
padding: 10px 16px;
|
||||||
background: #dbd5d5;
|
background: #dbd5d5;
|
||||||
color: #1a1919;
|
color: #1a1919;
|
||||||
|
position: fixed;
|
||||||
|
top: 5px;
|
||||||
|
width: 768px;
|
||||||
}
|
}
|
||||||
|
|
||||||
input[type=text] {
|
input[type=text] {
|
||||||
width: 100%;
|
width: 75%;
|
||||||
padding: 12px 20px;
|
padding: 12px 20px;
|
||||||
margin: 8px 0;
|
margin: 8px 0;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
text-align: center;
|
text-align: left;
|
||||||
font-size: 14pt;
|
font-size: 14.5pt;
|
||||||
}
|
}
|
||||||
|
|
||||||
input[type=button], input[type=submit], input[type=reset] {
|
input[type=button], input[type=submit], input[type=reset] {
|
||||||
|
font-family: sans-serif;
|
||||||
background-color: #afcdc2;
|
background-color: #afcdc2;
|
||||||
border: none;
|
border: none;
|
||||||
color: rgb(0, 0, 0);
|
color: rgb(0, 0, 0);
|
||||||
@@ -35,19 +45,11 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Page content */
|
/* Page content */
|
||||||
.content {
|
.definition {
|
||||||
padding: 16px;
|
padding: 8px;
|
||||||
}
|
font-family: sans-serif;
|
||||||
|
font-size: 14.5pt;
|
||||||
/* The sticky class is added to the header with JS when it reaches its scroll position */
|
|
||||||
.sticky {
|
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
width: 768px;
|
width: 768px;
|
||||||
}
|
padding: 1px;
|
||||||
|
|
||||||
/* Add some top padding to the page content to prevent sudden quick movement (as the header gets a new position at the top of the page (position:fixed and top:0) */
|
|
||||||
.sticky + .content {
|
|
||||||
padding-top: 102px;
|
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
<style>
|
<style>
|
||||||
html{
|
.testhtml{
|
||||||
font-family: sans-serif;
|
font-family: sans-serif;
|
||||||
font-size: 14pt;
|
font-size: 14.5pt;
|
||||||
width: 768px;
|
width: 768px;
|
||||||
}
|
}
|
||||||
a {
|
a {
|
||||||
color: #547720
|
color: #547720
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
Reference in New Issue
Block a user