diff --git a/__pycache__/dashboard.cpython-312.pyc b/__pycache__/dashboard.cpython-312.pyc index d315b2b..2427b14 100644 Binary files a/__pycache__/dashboard.cpython-312.pyc and b/__pycache__/dashboard.cpython-312.pyc differ diff --git a/__pycache__/main.cpython-312.pyc b/__pycache__/main.cpython-312.pyc index 9c9f0c6..e1ec0ad 100644 Binary files a/__pycache__/main.cpython-312.pyc and b/__pycache__/main.cpython-312.pyc differ diff --git a/__pycache__/utils.cpython-312.pyc b/__pycache__/utils.cpython-312.pyc new file mode 100644 index 0000000..ebd76fd Binary files /dev/null and b/__pycache__/utils.cpython-312.pyc differ diff --git a/dashboard.py b/dashboard.py index 98cf907..04a2c46 100644 --- a/dashboard.py +++ b/dashboard.py @@ -1,13 +1,37 @@ import theme from nicegui import ui from main import checked_data +import data + +db = data.CON +cur = db.cursor() @ui.page('/dashboard') def dashboard(): with theme.frame('Dashboard'): pass - with ui.grid(columns='auto 150px'): - with ui.card().classes('border-purple-200 grid justify-items-center').style('border: 2px solid rgba(0, 255, 0, .25)'): - ui.label('John 3:16').classes('text-center') - ui.label('For God Sent his son etc etc').classes('font-bold') + with ui.grid().style('grid-template-columns: repeat(2, minmax(1px, 1fr));'): #(columns='auto 99px 1fr 2fr').classes('w-full gap-3'): + res = cur.execute(f"select person,verse,verse_passage,status from tasks where status = '0'") + information = res.fetchall() + for info in information: + if info[0] == 'hannah': + hvc = ui.label(info[1]).classes('hidden') + hpc = ui.label(info[2]).classes('hidden') + with ui.card().classes('grid justify-items-center').style('border: 2px solid rgba(0, 255, 0, .25)'): + ui.label('Hannah').classes('absolute top-0 left-0 font-thin text-sm') + ui.label(hvc.text).classes('text-center') + ui.label(hpc.text).classes('font-bold') + elif info[0] == 'fiona': + fvc = ui.label(info[1]).classes('hidden') + fpc = ui.label(info[2]).classes('hidden') + with ui.card().classes('grid justify-items-center').style('border: 2px solid rgba(255, 55, 0, .25)'): + ui.label(fvc.text).classes('text-center') + ui.label(fpc.text).classes('font-bold') + else: + lvc = ui.label(info[1]).classes('hidden') + lpc = ui.label(info[2]).classes('hidden') + with ui.card().classes('grid justify-items-center').style('border: 2px solid rgba(0, 0, 255, .25)'): + ui.label(lvc.text).classes('text-center') + ui.label(lpc.text).classes('font-bold') + diff --git a/main.py b/main.py index bf61d4b..283541f 100644 --- a/main.py +++ b/main.py @@ -4,6 +4,7 @@ from nicegui import app, ui import re import requests import theme +from utils import Utils # DB columns tasks(person, verse, verse_passage, status, awana_completed, awana_bonus) db = data.CON @@ -11,7 +12,6 @@ cur = db.cursor() APIKEY = "Token f562cf2d890151d682065696dacdc0f86938a18e" HEADERS = { 'Authorization': APIKEY} -card = "card" @ui.page('/') def index_page() -> None: with theme.frame('Homepage'): @@ -19,7 +19,12 @@ def index_page() -> None: pass with ui.grid(columns=1).classes('self-center justify-items-center content-center p-2 m-2 rounded-xl'): - toggle = ui.toggle(["Hannah", "Fiona", "Liam"], clearable=True, on_change=lambda: show_person(toggle)) + users = Utils.get_unique_people() + for ppl in users: + pers = str(ppl)[2:-3].title() + users = [pers if x==ppl else x for x in users] + toggle = ui.toggle(users, clearable=True, on_change=lambda: show_person(toggle)) + with ui.row().classes('fixed bottom-0 left-0 p-2 m-2'): with ui.element('q-fab').props('icon=navigation color=accent'): ui.element('q-fab-action').props('icon=add color=secondary').on('click', lambda: add_verse(toggle)) @@ -36,14 +41,12 @@ def index_page() -> None: def show_person(person): showperson.clear() if person.value is not None: - res = cur.execute(f"select verse,verse_passage,status from tasks where person='{person.value.lower()}'") - dbinfo = res.fetchall() + dbinfo = Utils.get_specific_person(person) if dbinfo == []: showperson.clear() ui.notify(f"{person.value} doesn't have any verses saved under her name! Start adding some by clicking the green arrow in the bottom left.") else: - showperson.set_visibility(True) #False if showperson.visible else True) - # showoptions.set_visibility(True) + showperson.set_visibility(True) if person.value == "Hannah": setcolor = "rgba(0, 255, 0, .5)" elif person.value == "Fiona": @@ -58,24 +61,34 @@ def index_page() -> None: label_passage = ui.label(text=item[1]).classes('hidden') label_status = ui.label(text=item[2]).classes('hidden') ui.label(label_verse.text).classes('font-bold') - # ui.chip(label_verse.text, icon='ads_click', on_click=lambda: ui.notify(label_passage.text)).classes('border p-1') - ui.label(label_passage.text).classes('text-wrap') - if label_status.text == '0': - ui.chip("Incomplete", selectable=True, icon="add", color="negative", on_selection_change=lambda: toggle_completion(label_verse.text, person, status=1)) + with ui.row(): + ui.label(label_passage.text).classes('text-wrap') + ui.chip("Edit Verse", selectable=True, icon="edit", color="white", on_selection_change=lambda label_verse=label_verse: edit_verse(label_verse.text)) + if label_status.text == '1': + ui.chip('Complete', + selectable=True, icon="add", color="positive", + on_selection_change=lambda label_verse=label_verse: Utils.toggle_completion(label_verse.text, person, status=0), + on_click=lambda: show_person(person)) else: - ui.chip("Complete", selectable=True, icon="add", color="accent", on_selection_change=lambda: toggle_completion(label_verse.text, person, status=0)) + ui.chip('Incomplete', + selectable=True, icon="add", color="negative", + on_selection_change=lambda label_verse=label_verse: Utils.toggle_completion(label_verse.text, person, status=1), + on_click=lambda: show_person(person)) ui.checkbox('Pin Verse')#.bind_visibility_from(card, 'value') ui.checkbox('Mark as Completed')#.bind_value(item[2]) ui.separator().classes('col-span-5 h-2') else: showperson.clear() - def toggle_completion(verse, person, status): - ins = cur.execute(f"update tasks set status = '{status}' where person = '{person.value.lower()}' and verse = '{verse}'") - print(f"update tasks set status = '{status}' where person = '{person.value.lower()}' and verse = '{verse}'") - db.commit() - show_person.refresh - show_person(person) + def edit_verse(verse): + ui.notify(f"Edit Verse function is running for {verse}") + + # def toggle_completion(verse, person, status): + # ins = cur.execute(f"update tasks set status = '{status}' where person = '{person.value.lower()}' and verse = '{verse}'") + # print(f"update tasks set status = '{status}' where person = '{person.value.lower()}' and verse = '{verse}'") + # db.commit() + # show_person.refresh + # show_person(person) def add_verse(person): diff --git a/memorization_tasks.db b/memorization_tasks.db index f6738a9..3a245b7 100644 Binary files a/memorization_tasks.db and b/memorization_tasks.db differ diff --git a/utils.py b/utils.py new file mode 100644 index 0000000..4c84671 --- /dev/null +++ b/utils.py @@ -0,0 +1,23 @@ +import data + +db = data.CON +cur = db.cursor() + + +class Utils(): + def __init__(): + pass + + def get_unique_people(): + data = cur.execute('select distinct person from tasks;') + ppl = data.fetchall() + return ppl + + def get_specific_person(person): + res = cur.execute(f"select verse,verse_passage,status from tasks where person='{person.value}'") + dbinfo = res.fetchall() + return dbinfo + + def toggle_completion(verse, person, status): + ins = cur.execute(f"update tasks set status = '{status}' where person = '{person.value}' and verse = '{verse}'") + db.commit()