Skip to content

Commit 610c8bc

Browse files
author
dpikt
committed
Make a beautiful table
And comment out manual data entry
1 parent d31702a commit 610c8bc

File tree

4 files changed

+71
-49
lines changed

4 files changed

+71
-49
lines changed

db/data.db

0 Bytes
Binary file not shown.

jfp_server.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,28 +40,28 @@ def teardown_request(exception):
4040

4141
#other helpers
4242
def format_time(timestamp):
43-
return datetime.datetime.fromtimestamp(timestamp).strftime('%H:%M:%S, %Y-%m-%d')
43+
return datetime.datetime.fromtimestamp(timestamp).strftime('%H:%M:%S - %m/%d/%Y')
4444

4545
#default view
4646
@app.route('/')
4747
def show_entries():
4848
cur = g.db.execute('SELECT time, printer, copies, success FROM Entries ORDER BY id DESC')
49-
entries = [dict(time=row[0], printer=row[1], copies=row[2], success=row[3]) for row in cur.fetchall()]
49+
entries = [dict(time=format_time(row[0]), printer=row[1], copies=row[2], success=row[3]) for row in cur.fetchall()]
5050
numreq = g.db.execute('SELECT COUNT(*) FROM Entries').fetchone()[0]
5151
dayreq = g.db.execute('SELECT COUNT(*) FROM Entries WHERE time > ?', [time.time()-86400000]).fetchone()[0]
5252
return render_template('layout.html', entries=entries, numrequests=numreq, dayrequests=dayreq)
5353

5454
@app.route('/add', methods=['POST'])
5555
def add_entry():
5656
g.db.execute('INSERT INTO entries (time, printer, copies, success) VALUES (?, ?, ?, ?)',
57-
[format_time(time.time()), request.form['printer'], request.form['copies'], request.form['success']])
57+
[time.time(), request.form['printer'], request.form['copies'], request.form['success']])
5858
g.db.commit()
5959
return redirect(url_for('show_entries'))
6060

6161
@app.route('/hide', methods=['POST'])
6262
def hide_successful():
6363
cur = g.db.execute('SELECT time, printer, copies, success FROM Entries WHERE success == 0 ORDER BY id DESC')
64-
entries = [dict(time=row[0], printer=row[1], copies=row[2], success=row[3]) for row in cur.fetchall()]
64+
entries = [dict(time=format_time(row[0]), printer=row[1], copies=row[2], success=row[3]) for row in cur.fetchall()]
6565
numreq = g.db.execute('SELECT COUNT(*) FROM Entries').fetchone()[0]
6666
dayreq = g.db.execute('SELECT COUNT(*) FROM Entries WHERE time > ?', [time.time()-86400000]).fetchone()[0]
6767
return render_template('layout.html', entries=entries, numrequests=numreq, dayrequests=dayreq)
@@ -91,8 +91,6 @@ def login():
9191
session['logged_in'] = True
9292
return redirect(url_for('show_entries'))
9393

94-
poop = True
95-
9694
@app.route('/logout')
9795
def logout():
9896
session.pop('logged_in', None)

static/style.css

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,25 @@
11
/*Adapted from the "flaskr" tutorial at http://flask.pocoo.org/*/
22

3-
body { font-family: sans-serif; background: #eee; }
3+
body { font-family: "Source Sans Pro", sans-serif; background: #E8E8E8; }
44
a, h1, h2 { color: #377ba8; }
55
h1, h2 { font-family: 'Georgia', serif; margin: 0; }
66
h1 { text-align:center; border-bottom: 2px solid #eee; }
7-
h2 { font-size: 1.2em; }
7+
h2 { font-size: 1.2em; margin: 5px;}
8+
table, th, td { border: 1px solid #888; padding: 5px; text-align: center; }
9+
dl, dt, dd,
10+
ul, li { text-align: center; margin: 5px; padding: 0px; }
11+
form { padding: 5px; }
812

9-
.page { margin: 2em auto; width: 35em; border: 5px solid #ccc;
13+
.page { display: flex; flex-direction: column; align-items: center; margin: 2em auto;
14+
width: 35em; box-shadow: 0px 0px 50px rgba(0,0,0,0.2);
1015
padding: 0.8em; background: white; }
11-
.entries { list-style: none; margin: 0; padding: 0; }
12-
.entries li { margin: 0.8em 1.2em; }
13-
.entries li h2 { margin-left: -1em; }
16+
17+
.table-stats {}
18+
.stat { margin: 5px; }
19+
.table-actions { display: flex; align-items: center; }
20+
.entries { width: 30em; border-collapse: collapse; }
21+
.entries th { background: #91B4CC; }
1422
.console { font-size: 0.9em; border-bottom: 1px solid #ccc; }
15-
.metanav { text-align: right; font-size: 0.8em; padding: 0.3em;
23+
.metanav { text-align: left; font-size: 0.8em; padding: 0.3em;
1624
margin-bottom: 1em; background: #fafafa; }
1725
.error { color: red; }

templates/layout.html

Lines changed: 52 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
<div class="page">
77
<h1>JFP Data</h1>
88
{% if not session.logged_in %}
9-
<h2>Login</h2>
109
<form action="{{ url_for('login') }}" method=post>
1110
<dl>
1211
<dt>Username:
@@ -17,42 +16,59 @@ <h2>Login</h2>
1716
</dl>
1817
</form>
1918
{% else %}
20-
<div class="metanav">
21-
<a href="{{ url_for('logout') }}">log out</a>
22-
</div>
23-
<div class="console">
24-
<form action="{{ url_for('add_entry') }}" method="post" class="add-entry">
25-
<ul style="list-style: none">
26-
<li>Printer: <textarea name="printer" rows="1" cols="10"></textarea>
27-
<li>Copies: <textarea name="copies" rows="1" cols="1"></textarea>
28-
<li>Success: <textarea name="success" rows="1" cols="1"></textarea>
29-
<li><input type="submit" value="Add">
30-
</ul>
31-
</form>
32-
{% if request.path == "/" %}
33-
<form action="{{ url_for('hide_successful') }}" method="post">
34-
<input type="submit" value="Hide Successful Requests">
19+
<div class="metanav">
20+
<a href="{{ url_for('logout') }}">Log out</a>
21+
</div>
22+
<!-- <div class="console">
23+
<form action="{{ url_for('add_entry') }}" method="post" class="add-entry">
24+
<ul style="list-style: none">
25+
<li>Printer:
26+
<li><textarea name="printer" rows="1" cols="10"></textarea>
27+
<li>Copies:
28+
<li><textarea name="copies" rows="1" cols="10"></textarea>
29+
<li>Success:
30+
<li><textarea name="success" rows="1" cols="10"></textarea>
31+
<li><input type="submit" value="Add">
32+
</ul>
3533
</form>
34+
</div> -->
35+
{% if entries|length == 0 %}
36+
<p>Database is empty.</p>
3637
{% else %}
37-
<form action="{{ url_for('show_successful') }}" method="post">
38-
<input type="submit" value="Show Successful Requests">
39-
</form>
38+
<div class="table-stats">
39+
<h4 class="stat">Total requests: {{ numrequests }}</h4>
40+
<h4 class="stat">Requests in the last 24 hours: {{ dayrequests }}</h4>
41+
</div>
42+
<div class="table-actions">
43+
{% if request.path == "/" %}
44+
<form action="{{ url_for('hide_successful') }}" method="post">
45+
<input type="submit" value="Hide Successful Requests">
46+
</form>
47+
{% else %}
48+
<form action="{{ url_for('show_successful') }}" method="post">
49+
<input type="submit" value="Show Successful Requests">
50+
</form>
51+
{% endif %}
52+
<form action="{{ url_for('clear_database') }}" method="post">
53+
<input type="submit" value="Clear Database">
54+
</form>
55+
</div>
56+
<div class="table-scroll">
57+
<table class="entries">
58+
<tr>
59+
<th>Printer
60+
<th>Copies
61+
<th>Time
62+
</tr>
63+
{% for entry in entries %}
64+
<tr {% if entry.success == 0 %} class="error" {% endif %}>
65+
<td style="text-align: left">{{ entry.printer }}
66+
<td>{{ entry.copies }}
67+
<td>{{ entry.time }}
68+
</tr>
69+
{% endfor %}
70+
</table>
71+
</div>
4072
{% endif %}
41-
</div>
42-
<script type="text/javascript">
43-
document.getElementById('date').value = Date();
44-
</script>
45-
<h4>Total requests: {{ numrequests }}</h4>
46-
<h4>Requests in the last 24 hours: {{ dayrequests }}</h4>
47-
<ul class="entries">
48-
{% for entry in entries %}
49-
<li {% if entry.success == 0 %} class="error" {% endif %} ><h4>{{ entry.time }}</h4> {{ entry.printer }}, copies: {{ entry.copies }}, success: {{ entry.success }}
50-
{% else %}
51-
<li><em>Database is empty.</em>
52-
{% endfor %}
53-
</ul>
54-
<form action="{{ url_for('clear_database') }}" method="post">
55-
<input type="submit" value="Clear Database">
56-
</form>
57-
{% endif %}
73+
{% endif %}
5874
</div>

0 commit comments

Comments
 (0)