From f38c1715fc3a1e0c3655b65f215c8971df97123b Mon Sep 17 00:00:00 2001 From: Dennis Winghardt Date: Mon, 15 Dec 2025 09:48:39 +0000 Subject: [PATCH] add date parsing --- plan.xlsx | Bin 10961 -> 11170 bytes ui/pages/home.templ | 14 +++++----- ui/pages/home_templ.go | 41 +++++++++++++++++++---------- xlsx/main.go | 57 ++++++++++++++++++++++++++++++++++++----- 4 files changed, 84 insertions(+), 28 deletions(-) diff --git a/plan.xlsx b/plan.xlsx index 97d85b843a5d7c315b3cb20a988f171ea3090a5b..c4c05060b821718c6edaef4a52b4bd581a7beec9 100644 GIT binary patch delta 2719 zcmY+Gc{mi>8^>qHGM4OPsTpJ+%V^5YI+nR^G{YcUQIYJ%63R$jlU=qjS+kACGDsM* zW|FdmQAnX=$u`Iqk?p$ue$TJxcm6of`<(ClIp06t_j%8GXH$5wN)b#n;XjUwU;zN$ zZ~y>&001D^`xL=10Ds-j53d^R<6U9nUV`vrewd~o`2Ki)MU~ImuxNKjVx-=7&Ed+tz#>yQNnRceW>6l-vqV^bzWOVxhp0HkJ{9xv&0t2r5Ml= zmj;tOY(kD*Irqx&gP7ve6ZaaNztSu)#s^Q?ix>*(=6j;S&6^THSY9B;~{-#?BJeKcj!Ov z*X)Ae(?sfH7?}l97j*#B@lTGN9Ex=#JAVv50S)zLGZNhOhcqWG8Ycs7A};3q)PXc? z(rkY;IS%~HU%_D}*yrna|60sm9XdUQTD0*^GB2i>qM2Sy@i{TOz+1;YzlpcqQY%dW z8hXnR<7S@$UxT7)jjp{*_gy1{TwXIEm)QSKBo5(U?CPtwJ1mWFhh9+Omi}s={2e%s zRn7)e*e>t@fnPqju(*p9a9Y#~(u7cOQM8i_br-o%6$rVv&v;&K744ZvCpL*}k~ zw0;Snv0{s^N4t$rGRLPo8SSw75kM=;a7+j=L%u*#G z7-E&e81*?G9ewL0m2*fWB*!x?eQ2u0ff(af9;V)IZW)Pze2z(7&r683{PNPmr{}l| zWDGOE%<=AI>FYgQXZ@@xX-Oo95<(mMY1)mD_EK%o<*}H;*y=sGQ{;)L`sSQ-VOIRC z1LydHom;GjHW)q4+gyg? z@i`|k9Uveon}Y+h>`&c5`gPG+%8QdKeTI&(c-v} z(qFx?osWK9`nPV{M;>244js%g%cFCWd zb{P7uf%f;DJg)RAoX-)o0#$E+mnDGt|2BT$40QKOp5-WQ`zTB>n5xdL#^$*?B4q&e zJ^+`GVFJlt57}Ng90S~?18SrV_VIl;y7ncH2J_+JukB&RvhPdeG2%H#woTyhi8m!& z183+Q%;c?jobvUtu~Xy4{Ekx|2jCp&P3HMlr0J=W!Keor(@w#}{mkbpP%pQ^u{G4| zi_NWBe_Ik^gnq}n*&TyBHGWMow*$qD?(21U@43XSJOvk$pG!ms?L|n%aee-#m<$J$3w(RlunI^?!2~6vD%$Rp6YKnLYna zvSdY^`)DbM)Uf5L0oIk5P&vxts>)=qtyFNiOjCk3hlJ6N0$XXUy^>a3<)9JGoyF1dgMzy(wA1`q+^jrLz&}U~C=!S!9YTePGwJ$nl(?S78hVm$z1M z%};FQrwUHwlyeh8i!In=zJHCvZxPk5Bv7N}e zM$DV!6?+sG%X_{JOxdZr#m5gbT~817!^WA~eAVB;RW-N+f&B6@fY;tc6wz*`(aR-y^@Y02y9_Of z#-_yK-kr{>y);(;`d$3$5X@nT`&&MnmOxb3NbAG}JF{{eW zXSd$63+*KcZ;3LK=k;IJ7E)vc&qzxEU6agPaXYjCSvMBW|9$L8lL}_Q9ug9cfc}0% z006P0aq@c|kb>doK(zv?0>UIVI6rAjjQ`kgHTQU`q9p9!))WQ;0OBA30PgxFGo?r}O3JWbl|7;(j%b1ZqhCssyp(i7SUD0^ LNt#^}{;&8CL<<2_ delta 2493 zcmY*bXE+-Q7fym27g4oiMeUfSgizFHRErwHMO!1HL~+F^N<>tPx>W2{D{iUTn2nVx zNv$faS*muak!!Y;&%HmsKHvFqp7(jqdC&QA&Uv3x;`km}r@)GnskYk3GXVfJHUIz& z008d$sfGmvVLSo?Fe>-&`Bfor1(d@1qVD*dFwGale&_bpowu{A5Ju+Qpumuou7Qcj zt}1oQO5c;owhf7C44V%^IQeBkGB2X3Hsu{dU(m|Hf88Qnx~;S-=f&!qoBSh-RYik8 zU4Opn)4YS!#pCioj#W_XUPAC1jSR-+`wQV(Jii$MW6JYhka+GDt>3zxCK4uBCBs!! zC0tt{1MM8AWL|I$mVuVk1dpn@w)ZyJn8n3N5U69ATw>f(l%aF>$SG!y5r zLhJgNZLnLNNq)uh7~yQg(2S|HC}3SV;95AW0ZqE#7Uf;I?+8ZIV|w$gVo8Kj-(2ii zeIp!rH%dCHNJ3cmYCw%!)~u$UIkL5J0pyHlUKJ*nf3({@VDz6^TMGP*}8gw!ph;kz?rzEl3nH+08$ z8p0aj;O$#s2__Z0ZMiT02;6C8`mSvw6!9nKv$Wr+J*UOD zIX*3oE}{|M;xr82A^D2HLeMm`r`-Jn?P;4@TN)Y_2#(37g~$^Za(B!#Gl~7 zhJ8zpOmGv-LTe^Teevex?a^{KNF8BoNE8{K+glW

%8XYP#h6P|{~wt99ILRu@h% zJQJMPb&@vj8f8_W**8Bi%4-m+2??(dC`Xrh`DDvhthcz&b3WL0jEiTL=Yd3!gl}|8 z4jO!(<}m&a9_?0s!2w=WKW-CJsz;s^Hths`Sq26)b)H(F}8vxUYTYiW)a6 zZv%ZmT>rx(t5Um1Q0YSW7Gp@eRe^f(&r zQNP#WxZ+Q&?$y(;57&%edm$$5pZNvts{+V99A+R6Fgl|A<=L5ra}Wi%ByrbM^3?bq z9%THGP}-ulq1kNccSU$ZLXpofo+?z1-VdSTrIn}cg4rn3K3TDZN9xOngTNF)u-wNq zCLvfz*61);9&fd35jvfJa@fH@r#sOoiOsJF`Bw-eaDR$~fZ4s!CSV{ld%>X3f~$e| zK;k*R=8nzcZtX^`M8pG4oC`XVsZGSdRyiqlu24Y*p?iLLSs=a!qfj*LQCoz)@W!xT zY%BmWIjv!t;1ZaaH`8$t=b$fTF==t2cU8g0C1NIv0S zd8&#?0L{C7Q0S{FEcvGb5l zS-Li^fVNLS=9eV)YA;VZ9T}X-^6BZnF8#wacdQyGF6N6PG!mf0CXY^oA4xG^YqMQ= z{HVD(8C^B_vIW6VT`avmysu}e!MQWMezcb}b5LoY)6ONB)EU~?ciT(<31t)_i?GTH zuT4afBJ@XAf!+*>r16vvrI3@=kSix83{UFx`v8~O82#W@b+c#24(#T+q;VFA-+cVbmv@Y}&nVJWr13K4ac}cC^iG40SgT&cgPY zmTh^K8dW}#P2J3HbTbu+gLpQv-^ks|@$fuH@zjbH_Tlk=(t6Epr0N|XL}NmX%s=pN zhkL(hkbmkot7_coU@DRTkb&oOeq&Br_~bw=6jcKn65omPL=L|&_H+@+A@uefbz^4afPxvjaHQH>ffBsP3Q{eI#@5(FwuS3aS zDowz8V6lw-2UScRqhq=^Q8uM=KZ&^-P zJIKy^1`YiT8j_jxbIf=z=k%9v!Npu2KDx z#3xL>CRTGf)pnWS%fv3onz?Lobx$NH+kcXw786=(?)5~$r?|9S+jh9-(o-R>_?0wV zr{u$alDnV4s7W_HdyzK7@4%%Lv6?U zs%cpgHHj*wbZf@?LO0g&vcs#H41hh#R?QuMG$nu?c5c1PANp#^;m0Z{6q?jAuucEy z->^7j5WiH*PpAC6L-=cX+rzOACjdwBNs&9|Y<{=gT~v`xEB(@a*lmF8l~M#=4H z{5^W0ng2)9TIwq9KNdnHze}>>K$Cdu4oe2vSO(3+{=YYf_)^{q_?8G%P=@@{TmV4m z?EHS&G4Yy$322drn5tj^8WbYFSCA0>XA}8>0Du?>0O0$TdWPB{L{3FR5R({jOH77{ zRa6AAh!Yv&3Pk!Dq)QTa6=9") + templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 10, "") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } diff --git a/xlsx/main.go b/xlsx/main.go index 36a6d24..94a7b57 100644 --- a/xlsx/main.go +++ b/xlsx/main.go @@ -1,23 +1,66 @@ package xlsx import ( + "fmt" + "strconv" + "time" + "github.com/xuri/excelize/v2" ) -type Plan struct { - Menus [7][3]string +type Plan = [7][3]struct { + Text string + Date time.Time } func Load() (Plan, error) { f, err := excelize.OpenFile("./plan.xlsx") + defer func() { + err := f.Close() + if err != nil { + fmt.Println(err) + } + }() if err != nil { return Plan{}, err } - var menus [7][3]string - for x := 0; x <= 2; x++ { - for y := 0; y <= 6; y++ { - menus[y][x], err = f.GetCellValue("Menüplan", string([]rune{rune('B' + x), rune('2' + y)})) + var plan [7][3]struct { + Text string + Date time.Time + } + today := time.Now().Format("01-02-06") + v := "" + offset := 1 + for v != today { + offset++ + v, err = f.GetCellValue("Menüplan", "A"+strconv.Itoa(offset)) + if err != nil { + fmt.Println(err) } } - return Plan{Menus: menus}, err + for x := 0; x <= 2; x++ { + for y := 0; y <= 6; y++ { + plan[y][x] = struct { + Text string + Date time.Time + }{} + plan[y][x].Text, err = f.GetCellValue("Menüplan", string([]rune{rune('B' + x)})+strconv.Itoa(y+offset)) + if err != nil { + fmt.Println(err) + continue + } + datestr, err := f.GetCellValue("Menüplan", "A"+strconv.Itoa(y+offset)) + if err != nil { + fmt.Println(err) + continue + } + time, err := time.Parse("01-02-06", datestr) + if err != nil { + fmt.Println(err) + continue + } + plan[y][x].Date = time + } + } + return plan, err }