diff --git a/README.md b/README.md index e69de29..5009464 100644 --- a/README.md +++ b/README.md @@ -0,0 +1 @@ +# codimd_note_overview diff --git a/src/main.py b/src/main.py index ce5a1b4..fedd4c6 100644 --- a/src/main.py +++ b/src/main.py @@ -1,7 +1,16 @@ import psycopg2 + from flask import Flask, render_template + import os -import config + +from datetime import datetime + +if os.environ.get('PRODUCTION'): + import config +else: + import config + app = Flask(__name__) app.debug = True @@ -11,6 +20,13 @@ sql_statement = 'SELECT "id","title","alias","shortid","viewcount","lastchangeAt @app.route("/") def main(): + if os.environ.get('PRODUCTION'): + return production() + else: + return testing() + + +def production(): DB_HOST = os.environ.get('DB_HOST') DB_NAME = os.environ.get('POSTGRES_DB') DB_USER = os.environ.get('POSTGRES_USER') @@ -34,5 +50,47 @@ def main(): return render_template('index.html') +def testing(): + notes_arr = [] + notes_arr.append( + { + 'id': "SJBWsApiX", + 'title': "None", + 'alias': "35c3", + 'shortid': "SJBWsApiX", + 'viewcount': "0", + 'lastchangeAt': datetime(2013, 10, 31, 18, 23, 29, 227), + 'permission': "freely", + 'content': "xxx" + } + ) + x = { + 'id': "SJBWsApiX", + 'title': "Protokoll für die Fachschaftssitzung vom 6. Februar 2019", + 'alias': "35c3", + 'shortid': "SJBWsApiX", + 'viewcount': "0", + 'lastchangeAt': datetime(2013, 10, 31, 18, 23, 29, 227), + 'permission': "freely" + } + + notes_arr.append(x) + notes_arr.append(x) + notes_arr.append(x) + notes_arr.append(x) + notes_arr.append(x) + notes_arr.append(x) + notes_arr.append(x) + notes_arr.append(x) + notes_arr.append(x) + notes_arr.append(x) + notes_arr.append(x) + notes_arr.append(x) + notes_arr.append(x) + notes_arr.append(x) + + return render_template('index.html', notes=notes_arr, host=config.CODI_URL) + + if __name__ == '__main__': app.run(host='0.0.0.0', port=5000) diff --git a/src/static/css/main.css b/src/static/css/main.css index 3825489..a5857e4 100644 --- a/src/static/css/main.css +++ b/src/static/css/main.css @@ -1,47 +1,16 @@ -/*.extra-content {*/ -/*display: none;*/ -/*text-decoration: none !important;*/ -/*color: #0b2e13;*/ -/*}*/ - -/*.sortable a {*/ -/*display: inline-block;*/ -/*}*/ - -/*.sortable a:hover .extra-content {*/ -/*display: block;*/ -/*text-decoration: none !important;*/ -/*}*/ - -/*.sortable a:hover .extra-content p {*/ -/*display: block;*/ -/*text-decoration: none !important;*/ -/*}*/ - -.fancy-tooltip { - position: relative; - display: inline-block; +table.dataTable thead .sorting:after, +table.dataTable thead .sorting:before, +table.dataTable thead .sorting_asc:after, +table.dataTable thead .sorting_asc:before, +table.dataTable thead .sorting_asc_disabled:after, +table.dataTable thead .sorting_asc_disabled:before, +table.dataTable thead .sorting_desc:after, +table.dataTable thead .sorting_desc:before, +table.dataTable thead .sorting_desc_disabled:after, +table.dataTable thead .sorting_desc_disabled:before { + bottom: .5em; } -.fancy-tooltip .tooltiptext { - visibility: hidden; - width: 300px; - background-color: #555; - color: #fff; - text-align: center; - border-radius: 6px; - padding: 5px 0; - position: absolute; - z-index: 1; - bottom: -170%; - left: 50%; - margin-left: -60px; - opacity: 0; - transition: opacity 0.3s; - line-height: 1em; -} - -.fancy-tooltip:hover .tooltiptext { - visibility: visible; - opacity: 1; +.dataTables_length, .dataTables_info, .dataTables_paginate { + visibility: hidden } \ No newline at end of file diff --git a/src/static/js/sort.js b/src/static/js/sort.js index 4dab712..0c70ffc 100644 --- a/src/static/js/sort.js +++ b/src/static/js/sort.js @@ -1,61 +1,5 @@ -function updateParent(notesArr) { - let parent = document.getElementById('sortable-wrapper'); - parent.innerHTML = ''; - for (let elem of notesArr) { - parent.appendChild(elem); - } -} - -function convertToArray() { - var notes = document.getElementsByClassName("sortable"); - var notesArr = []; - for (const node of notes) { - notesArr.push(node); - } - return notesArr; -} - -function sortByTitle() { - var sort_by_title = function (a, b) { - let x = a.getElementsByClassName('note-title')[0]; - let y = b.getElementsByClassName('note-title')[0]; - return x.innerHTML.toLowerCase().localeCompare(y.innerHTML.toLowerCase()); - }; - - var notesArr = convertToArray(); - notesArr.sort(sort_by_title); - updateParent(notesArr); -} - -function sortByDate() { - console.log('Sort Date'); - var sort_by_date = function (a, b) { - a = a.getElementsByClassName('note-date')[0]; - b = b.getElementsByClassName('note-date')[0]; - if (a && b) { - a = a.innerHTML.split(' '); - let a_date = a[0].split('.'); - let a_time = a[1].split(':'); - b = b.innerHTML.split('\ '); - let b_date = b[0].split('.'); - let b_time = b[1].split(':'); - let x = new Date(a_date[2], a_date[1], a_date[0], a_time[0], a_time[1]).getTime(); - let y = new Date(b_date[2], b_date[1], b_date[0], b_time[0], b_time[1]).getTime(); - if (x === y) { - return 0; - } else if (x > y) { - return -1; - } else { - return 1; - } - } else { - return 0; - } - - // return x.innerHTML.toLowerCase().localeCompare(y.innerHTML.toLowerCase()); - }; - - var notesArr = convertToArray(); - notesArr.sort(sort_by_date); - updateParent(notesArr); -} +$(document).ready(function () { + $('#example').DataTable({ + "lengthMenu": [[-1],["All"]] + }); +}); diff --git a/src/templates/index.html b/src/templates/index.html index c6da70a..32d4b9e 100644 --- a/src/templates/index.html +++ b/src/templates/index.html @@ -1,45 +1,53 @@ +
| id | +title | +alias | +last change at | +permission | +content | +
|---|---|---|---|---|---|
| {{note['shortid']}} | +{{note['title']}} | +{{note['alias']}} | +{{note['lastchangeAt'].strftime('%d.%m.%Y %H:%M')}} | +{{note['permission']}} | +{%if note['content']%}💬{%else%}❌{%endif%} | +