From 0e3d30a2871b7e6f75fd9f6a056e3904b66938f5 Mon Sep 17 00:00:00 2001 From: sstent Date: Fri, 19 Sep 2025 14:19:40 -0700 Subject: [PATCH] starting templates --- __pycache__/main.cpython-313.pyc | Bin 33212 -> 32908 bytes main.py | 41 +++------- templates/base.html | 14 +++- templates/foods.html | 127 +++++++++++-------------------- templates/meals.html | 58 +------------- 5 files changed, 70 insertions(+), 170 deletions(-) diff --git a/__pycache__/main.cpython-313.pyc b/__pycache__/main.cpython-313.pyc index 413ad88f175fca7408061b2fe1c619506a071168..8b77780c5b4210469d4da98eb8ed96cb770b5478 100644 GIT binary patch delta 4261 zcmb_eeN0=|759DiGhhQDO$Z4eiAjhZm+_I*e1(K2tt&z5+(5>yNG%1vAsVuGP)cg}oo6;h6$+l)Y=bHC0 zmb0}|5$~t-?)#l{fA^eoukWuP6&{}wQWsNFEC%@d$D3D2zSDgsbv=m*xUvu4!;B_zU^9h(i3ixnqk zr!?xx{i}&L%8x3WDjd9ShFRa@KYw=`}t;dXmNU%Vp*io zm|5HOoFB!RvwV8a$6}c6s4vIAl)1=B895C?ye0@U}nMf@1j*SOsC^$&i>e980*sF(=mxc;QLSsI9 z8mROsgr@<5c#zv@4PaQ~^^LoS75WSe{SFy905=UM4L7W7uUogyTenX8Up_J8m@BPY zu-4C+>hI8R17pI>a@*IitM*xPhCS&h6wkrnTk30$jD)mlFzF)*KR|en-7Gvo&a%Ox z06EVVik=YPhT&_fQoPMXF0j)sd+tw>_acDPO!LwH6~e0sGYGTnkFFMSg*i$b=67I# z5Vfu3yg*)Lx60O>*VKDcpd#V~Ona|>=fbe~UA0zPO{*XO?sAqB- z-l1uB;&2NB=KO+@cA(vf(1q|E!cP!h0GLSMX>0c@$H$eykm9i^lm@7+z!tUUJo++{ zFCzR5K}Em@37fz%M1O&%7-UnmS(7p8K`mj?>+>E}=p}CZykp)_WTn61Aw~mUKfMfQ zq(nRsjrhuCUq_2C2Kyi^4*8A+M|h6ImRi3@Ieq{I(^;fJstY1r;#^11;|NdqYiRuz z0X5Ut5#B&}lO3u%vi>bJd3GK}>k2?{9RQoHTf-_#l2~JLigiqJ`+{^4hU?Ui>#m6h zJ^+(9hf|=uQMlUWMoFZ6A$s$M6R0vo70}KbaR%LInb?vC-FJV>M)4CE_>tP!vI9H$ zq@;K9IVrbrxj~{j83Qa=I=ZEAN=^tmH=3T7qC6-V4bE?=css>Rc`Q8v+U|X+ z8<)J$Z5Qu?>vi>Rw;Pw-FK_6;9kv{+N!x78nj(7`S-dTx7L8+2euL9Q4REeS3LmK_ zdq;MP0u0_zKb1cgMonNIq<>g3*K#JD$#E0$Cw)?0RxTvo^hS!|mpA%`rOq+K=%V`7 z{z)TwfqgnynRf#N^1}9@#Z!I+Ej)80+hc~wp3KTK@b0um&TdZNJ^eRiS#YXeu);=< z`$RYipbvg1{6XHt)XFY;oaR+PB7*vX$1AkQuM-y#TPKXq6Pge;bsA2{8-t5Dg(Ti- z_gUQ@PhTj&r>ARxmd#!tR>*%?{zxWCQ4fwJ3#ETWI^W7seV6)wl5m-w8qLX{iIT&U zkb+9M2wXq?CxR|#iVe}z-k0IQ%AiUr1nIlV7 zj<_*fs#tKGH_EkiV2uVZH8Le{DF{dC~(a0;Xg3TO7-?%?vKyZ z{@HqFmh$l=%@a4mU@N;spI&VQYa*%0qlDaEpW=bL!biPp$u1_?os;bbNsx?%LWuzK z;4jZmW*j0;Q`1C>#^)D_aN_UU;DVuBW z%bhRlU$DC8Ozu08TTNy*nXnXvmTo_IulX!mEqn_^geGZMry$M6yu_85s?QL){@8)3 z#24zDNtkQxop&8cUa%{kUl_enKf$mv=6C#yq`=vklN3wE~NGY Km3?<=>wf`?uGUKc delta 4670 zcmcIn4^R~672n;vJ&xlz5IEpKl0#9rK?IaPq9K9^@<&i_IY2lirz~&=?#Op%syOyA znKqd8kLHVM8tqg&X^hjx!Ct4)YNM@*scq5}X)1GZlC`ipz{;!-}m=FDBdNy})WJ}q02mOJyLJm>rptyB^vxmuCrOMy4F z(HB}S>hsYQ3BGG~=k4)+SUE1cERO1M|SeIMMFaNiI2YPhSM z)g>8Hb(HICRM*#_>;3;f*Y8e8BoKQ^yc$T2v*rs0GhbR870g;Cn1ou@nog-;mLSzR zYaie0#)lhiZ9q6mN@SIiXXvJiDS@ zYDJw$}7B;cm_n^!oUP69Z^`;)Go8(#9!EvrMj*~da*wjwi zo$dCq@Z_D1P`LuhD-B5xRcNeSpRvzqBR9C<<8cX@%WVS51Kv<#t2{U~;PT6M**E0% z_+%STz5y?MILWPK9r9?2*Xt(->FbMau|6%VJYvb@>8rWF=MT^$c}vAZu=Gms&Ahaj z#KS<6JqXVt9HF-hck`4E6?yrm>3c@{R$R7;)1TS!$KyC44dk_-X5#R>$moLcY1mVQ+AoARb-nf z3NwX2LaG8GNSiBG#m&}DE80N!pDS$Q>%fo{OkeqBA@Bx}btm{xvTwI%dq44d+{1FW zPxkrTUJp5eiY_Cd2h5_)K<2O((zrd{AzhC=Ap7On0ioD70Go!OC9)IY5`a$wV6{?n zrCFQ+a#^sj^4EL@)7^kfPa&|Fuy*7CO<7$cz6Ip{!RFP?hKy%$RY3SQ!Z8F^jPKAN zH*_UoaZU(iB`$A5c$Q{2n&XZj`F(`vX?0`fl9{-2$PaM&hX^ksoJ2Se5Yl?&U4Ak~ zM;o(OL_gy8U7APcz{iUblywp?_#hufGBdVQ;YTA+dL0r>~!- zD`aT!^vJtv3Gotg4%skktSfA(VAgQ%e2~+%>RNqnzkmsf(z{kk0M;67n{n( zn?TkEKWX}nSo=1vVhLdruyVHH!c5qD!m_P4Vkm~ly+j7LSQkawGRd9;t@B=I3T?6* z#A#4*G}vihrgUbr>>BuVXC80OUOH3HS)GX<%oJvJi{5UvfgP*ED&7L7lfhcYOG5Dt z2l@kQ5Ah$Z9l zU0PvRGJR??lwEnYGaUY6@eT-F3C4A~1pYW3++t~CyHM5DqHK>Dzrvdl?Xc?4iWb+{ z-q4bNBFzdMsp7RQHt}Du_-@d!^#dXB36OQQ7RP2VVNxsw?<12)zbjjGI4OvZzAW2x1~B~*AN-5#7V_uHfsQZ_ zK2^JY{bq9<$P(5d%)lsW#Wpk33;pq;3ErmBEB*5Pf5403ltMToJcWCPWa9IB_7?8x zaqZqq^g+pO6as%jQ8rK1E!1K&eNG0>pb$$x^PvSFSE`CIKjA)z2`531-ZDqG;H$qP zgk9!nwj(9k*eCnD!KrTalOzK7qM$f1tO>-U;2gOD4@07FXaMHYJE&|B;Xf9Qbxd>` zQG)fVVOF)6qiXMj=*Qkn*l-y`HZc`EDGSyQ-4Ftpr(x4Za5Z{DsGh33W~PV!t6h_( zCMuF1I9Bk;w!#%Y%@YY7^CgNFU~HzZ`kt)$7`=%t?2-L0_ki599odx&{|UtHck3pw zFXXJ;AMc($nQ6upl!J(m5<(qk){?5ISR(VWx-2=(Ah{R@T3ptPI&?a;BYdFrM z>xx&@I&^juoz6^7(3FA>ygV@u(LN8?Vswre_P(fnaX=E5YLrhmE7!c1s`ZJMtH$hc zWA<}7$McWnkEM<;C_k5S-g3rrp?`dPMazV7!&Rd+Zj>gBj*(iBOGzDB|8}BzRC~=* zJeKp4?Ue1beZo>TYMRuiT-9fe>oX@)(kCsslV;1eHXq!4)odF#+oof*S%%x3Ha2cr zfaF{gdfAztm2PniaZRoW>Y4 z#c9NtJ0FOgvEYs`38HzVMyM&}FKQENinJG#7XVEY9?s=A2g@I}^888K@uhu%Q<$uS z2!{Yd+99vcPhP|4Z3sOG_*EO8Kllww9zvKvcnbl)TgWs59{&W7Y;p&I%_KYz36EvM zvw+~(X48-0v>_HO6Sq0SSMc@5SJ;U9Ei3Iy@z=zlRgV$I|wtjbsT zUpBd7&17!=neq!|XID>a=JPQ})22B18C%GHCbM& Meals + - + diff --git a/templates/foods.html b/templates/foods.html index c3bb3a1..69eb305 100644 --- a/templates/foods.html +++ b/templates/foods.html @@ -1,31 +1,11 @@ {% extends "base.html" %} {% block content %}
-
-

Bulk Import

-
-
- - -
- -
- - -
- - - -
+

Foods Database

@@ -59,7 +39,7 @@ @@ -229,21 +209,10 @@ {% endblock %} \ No newline at end of file diff --git a/templates/meals.html b/templates/meals.html index 2f6b44e..2e647e2 100644 --- a/templates/meals.html +++ b/templates/meals.html @@ -1,22 +1,11 @@ {% extends "base.html" %} {% block content %}
-
-

Bulk Import Meals

-
-
- - -
- - - - -
- -
+

Meals

{{ "%.2f"|format(food.calcium) }}mg
@@ -336,46 +325,5 @@ async function deleteSelectedMeals() { } } -// Meal CSV upload handling -document.querySelector('form[action="/meals/upload"]').addEventListener('submit', async (e) => { - e.preventDefault(); - const form = e.target; - const submitBtn = form.querySelector('button[type="submit"]'); - const resultsDiv = document.createElement('div'); - resultsDiv.className = 'alert alert-info mt-3'; - form.parentNode.insertBefore(resultsDiv, form.nextSibling); - - submitBtn.disabled = true; - submitBtn.innerHTML = ' Uploading...'; - - try { - const formData = new FormData(form); - const response = await fetch('/meals/upload', { - method: 'POST', - body: formData - }); - - const results = await response.json(); - - if (results.errors?.length > 0) { - resultsDiv.className = 'alert alert-danger'; - resultsDiv.innerHTML = `Errors (${results.errors.length}):
` + - results.errors.join('
'); - } else { - resultsDiv.className = 'alert alert-success'; - resultsDiv.innerHTML = `Successfully created ${results.created} meals, updated ${results.updated}`; - } - - if (results.created || results.updated) { - setTimeout(() => window.location.reload(), 2000); - } - } catch (error) { - resultsDiv.className = 'alert alert-danger'; - resultsDiv.textContent = `Upload failed: ${error.message}`; - } finally { - submitBtn.disabled = false; - submitBtn.textContent = 'Upload CSV'; - } -}); {% endblock %} \ No newline at end of file