Moved functions to a util area. Cards on dashboard are organized and based on toggle and db. Cleaned up small functions.

This commit is contained in:
Norm Rasmussen
2024-10-07 15:17:24 -04:00
parent 9279c239b4
commit a05d842a5a
7 changed files with 81 additions and 21 deletions

Binary file not shown.

Binary file not shown.

View File

@ -1,13 +1,37 @@
import theme import theme
from nicegui import ui from nicegui import ui
from main import checked_data from main import checked_data
import data
db = data.CON
cur = db.cursor()
@ui.page('/dashboard') @ui.page('/dashboard')
def dashboard(): def dashboard():
with theme.frame('Dashboard'): with theme.frame('Dashboard'):
pass pass
with ui.grid(columns='auto 150px'): with ui.grid().style('grid-template-columns: repeat(2, minmax(1px, 1fr));'): #(columns='auto 99px 1fr 2fr').classes('w-full gap-3'):
with ui.card().classes('border-purple-200 grid justify-items-center').style('border: 2px solid rgba(0, 255, 0, .25)'): res = cur.execute(f"select person,verse,verse_passage,status from tasks where status = '0'")
ui.label('John 3:16').classes('text-center') information = res.fetchall()
ui.label('For God Sent his son etc etc').classes('font-bold') 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')

47
main.py
View File

@ -4,6 +4,7 @@ from nicegui import app, ui
import re import re
import requests import requests
import theme import theme
from utils import Utils
# DB columns tasks(person, verse, verse_passage, status, awana_completed, awana_bonus) # DB columns tasks(person, verse, verse_passage, status, awana_completed, awana_bonus)
db = data.CON db = data.CON
@ -11,7 +12,6 @@ cur = db.cursor()
APIKEY = "Token f562cf2d890151d682065696dacdc0f86938a18e" APIKEY = "Token f562cf2d890151d682065696dacdc0f86938a18e"
HEADERS = { 'Authorization': APIKEY} HEADERS = { 'Authorization': APIKEY}
card = "card"
@ui.page('/') @ui.page('/')
def index_page() -> None: def index_page() -> None:
with theme.frame('Homepage'): with theme.frame('Homepage'):
@ -19,7 +19,12 @@ def index_page() -> None:
pass pass
with ui.grid(columns=1).classes('self-center justify-items-center content-center p-2 m-2 rounded-xl'): 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.row().classes('fixed bottom-0 left-0 p-2 m-2'):
with ui.element('q-fab').props('icon=navigation color=accent'): 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)) 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): def show_person(person):
showperson.clear() showperson.clear()
if person.value is not None: if person.value is not None:
res = cur.execute(f"select verse,verse_passage,status from tasks where person='{person.value.lower()}'") dbinfo = Utils.get_specific_person(person)
dbinfo = res.fetchall()
if dbinfo == []: if dbinfo == []:
showperson.clear() 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.") 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: else:
showperson.set_visibility(True) #False if showperson.visible else True) showperson.set_visibility(True)
# showoptions.set_visibility(True)
if person.value == "Hannah": if person.value == "Hannah":
setcolor = "rgba(0, 255, 0, .5)" setcolor = "rgba(0, 255, 0, .5)"
elif person.value == "Fiona": elif person.value == "Fiona":
@ -58,24 +61,34 @@ def index_page() -> None:
label_passage = ui.label(text=item[1]).classes('hidden') label_passage = ui.label(text=item[1]).classes('hidden')
label_status = ui.label(text=item[2]).classes('hidden') label_status = ui.label(text=item[2]).classes('hidden')
ui.label(label_verse.text).classes('font-bold') 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') with ui.row():
ui.label(label_passage.text).classes('text-wrap') ui.label(label_passage.text).classes('text-wrap')
if label_status.text == '0': ui.chip("Edit Verse", selectable=True, icon="edit", color="white", on_selection_change=lambda label_verse=label_verse: edit_verse(label_verse.text))
ui.chip("Incomplete", selectable=True, icon="add", color="negative", on_selection_change=lambda: toggle_completion(label_verse.text, person, status=1)) 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: 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('Pin Verse')#.bind_visibility_from(card, 'value')
ui.checkbox('Mark as Completed')#.bind_value(item[2]) ui.checkbox('Mark as Completed')#.bind_value(item[2])
ui.separator().classes('col-span-5 h-2') ui.separator().classes('col-span-5 h-2')
else: else:
showperson.clear() showperson.clear()
def toggle_completion(verse, person, status): def edit_verse(verse):
ins = cur.execute(f"update tasks set status = '{status}' where person = '{person.value.lower()}' and verse = '{verse}'") ui.notify(f"Edit Verse function is running for {verse}")
print(f"update tasks set status = '{status}' where person = '{person.value.lower()}' and verse = '{verse}'")
db.commit() # def toggle_completion(verse, person, status):
show_person.refresh # ins = cur.execute(f"update tasks set status = '{status}' where person = '{person.value.lower()}' and verse = '{verse}'")
show_person(person) # 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): def add_verse(person):

Binary file not shown.

23
utils.py Normal file
View File

@ -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()