From bebf2c9640db54470641dc0f7b0ae2bdfc6df7f0 Mon Sep 17 00:00:00 2001 From: KirinBaka Date: Tue, 22 Apr 2025 15:19:28 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=80=E4=BA=9B=E5=BE=AE=E5=B0=8F=E7=9A=84?= =?UTF-8?q?=E8=B4=A1=E7=8C=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/Timetable.tsx | 3 ++- data-init.zip | Bin 0 -> 21269 bytes package.json | 2 +- pages/api/config.ts | 3 ++- pages/api/record.ts | 10 +++++----- pages/index.tsx | 6 +++--- store/index.ts | 15 +++++++++++++-- 7 files changed, 26 insertions(+), 13 deletions(-) create mode 100644 data-init.zip diff --git a/components/Timetable.tsx b/components/Timetable.tsx index a2ea762..1db3379 100644 --- a/components/Timetable.tsx +++ b/components/Timetable.tsx @@ -115,7 +115,7 @@ const Timetable = ({ tds.length = 0; const table = target.children[0]; - table.setAttribute("border", "1"); + table.setAttribute("border", "0"); // mark cell const conflictsTmp: ConflictsTmp = {}; @@ -266,6 +266,7 @@ const Timetable = ({ <>

Login as {user}

&0D>UP$ zugk}Z;@x7cYM^D;J|7{D<&w4igB|g|iXVKP*HvT5j>4)a{P4n>w%%ifqT)l>{Cf?& zf^4rM*H1TdBIKyLF22OR3H*_?>&yG<>=#PCzIc80+Va{Kn+$o!13#;R_(<^dz$-Bq z-eOf5#!!cK$71<`F-w7Yr8_?HKC`>`&z?DID=MHlSnS%&d+{mdl0im{^JjrAWhi3Jl=t9yo(-#pf_#@@?SBnx_ ze185kR~ifsX)40WL81MaWh+>d!*xae$^2W6-R_^NQ6K}RI+7p&tR=XMA{RPI`vUbgUQz#}mP)3IrEsbvURZ(z(tT$>9 zT$v{%&lrRH>XmbvS^4fVt^=L2G+NK8Kx6doH)1Re1cOk$cwy1y69EFAXk}`UCZYNUBMII=oW8P(q~j$h#4W6 zjp7|?9L(sUw);*-)gxc7H)NV+GX3I|`}(R}%~e{D`oh5x2HOiE-^jc}m8l}p84D`p zTEADQ>ZsOBoKNb##hrMQ@&+C2ZKaUeimXqeeW{mEjz1T&+)xSQYklXXHK}sdgHiJ7 z$fI8}CnHJx?VO0#!Xt4>6s7%Ul1n;@r^RZbVu++UDJ_y}I;JXF`n8DtKL|{Ygo(zj zUUz(2uU@XFBbOvJ-Hszbmbpr)pEy$c<76CrU&-WMe^RwQQXh_qt&Q$i1v5f1;SP18_}p7#QgVcz9|55?YM#(L*E9k3n*i=E1-yYtqcX2iL*SQRPX_O}Hm1+r%s1I;%uXnG-wS8NwBy^#yqF~jidGpAA}_4`Nzc+l zy|AR&k}g-vB!KQq5tA0hJ506H)a;;GhMOs)?vrm{puj+cDFBaVk4+4Dp8m2{b5ueF z=F{7tB`&2}{G+iUNTfeYJhDhRqnBUg{FKaY19=hE{v+jUDZC`#>r0YxS0yowh7ik7 zvAaJgBE#k+%IM;v>b~e}Xh+UoO0}>G;9u5JWMC-W%>KqNa8kYvpU$?G;cb@1B?k*a zp0X1q)+Y(-Vk`&cUMrU{%|9uaCePtir)e8L_u#>=Yw~cxmQcz`_7}Y!=@(-H0&Rvg zziP798fgbA>Mp6+N?7|je07LF1A`A`Flpp{*R~`NivDo7<_l`Eb~O8@)YNUen}WD^ zg?9#)N!U+G%!XeL%I*^MiNE;Px@AQ{A2Wq!WEd;UM$Os1>9dC7rzsz_1eFXP%p9H` zDcP`hAzq=WYO)KZzN9vEk%`uRGA~)~uyKYGMF+59%{nN{Ws?W4EWDMOO`}E~`CjSk z^v!d$_fwXG#w5Po)aIhw$x8g28HKU-)Ogz%Om_U_L$yp(eetb+zFBC3KQ3}AQg>J9 z>YP(pF@E-D)3JSkT7yKX@PpQ+>4!56S;p$sNe*jt`TQ43L$jtU)Qd9bPBf4|uWiu3 z@UwW_w8rV(-BM~ns~|MudKLYA(~#@eBUva#Fh9QIpS+m*NXUKX+UwD0jeO2+VrM$z z6_R^$#w@qLt%`gjYIPAyZ&>Hp+fM65CCABs<|}@OKuTO8oVZ=8OWfF{@eT%m6nWTn zF`;^jjDcV2gbW$Irf)?Cr7_21gp6LeP!ky~)V0zXH_hQ4Gqg)S%c3jElpRlLNS;u0p4nKMq63ws zB}{0(@>C%TA)dn5SGYlAx^^O^F3uwU7mBXlH!l&0?#&k&GxKh1!RTNn`vSMV=WbCQ zx8`@DYP^=$Sz^Lk>00$!MS*Q<4|V?-9GbYG*_zlVU)!IAzQ`NEaNfz?{q=NnOMWeu zK5#H+?P{u1QkulXCq0*`hMMKDeqW{~yS}d z;-Q$#&c}Bt=h8y+gm<$VudekP%v4Y8T-i?hIJWVSddGaxvcLKp#nl8BnzN%<8n(M6 z)l0WWF}uglVY`Lj*iy3{yTo|PnRx3=0z92Rm4ot=Fwd}C_W7@Bb}5$m@|?b3mWDK?$}-oaQ*n|0j5=RTdX3SbAglF&Yp549RhI3W3XG1mQ^V`uwFY>l zS#j=iQ|aa~id%#vt{8{hEvKr%a92ZT)ar268^4@5SdEd>J^9!*T~1zjyQSpZx3SE?Dt5uk4p!-2jiC;A zuj!GEVY|JYgjZe8z~YXWhziCQQ}#qVoXjXFFd%6K=Io>7iw)xl)S&3-_~1^jYyr1Z7bUHItPhl%kY8=S0#new{~lSD*V_}p||6V(3pl%y@lE5lf&*| zwp6`wwc6>ULk*+x#htrOZ0o!9i@5dy=H@kb&Dzkhx$oFJcEUbC^Y4ybD8@r=I zo9DtaE@CafATQuL30y}5VzxGBKBDrVZMucQ*)_R$PdhzPRYT)(F@j zmm6?gd9UE(V20=H5%WT{Xg4|qe4BUJNuRJ`U!zQuW${*o544D;{ zHWwcVj}8CrIcVh6-;LD0u8NasScNA53)S>a$qSxeuP*pSe0zT+XK&r;v|FXd8Fws6 zc%QLdhI)gsh(uE7gyo!N@ufQZNcw&?`fEJ|n~F3ugh!q`E2?OoQP0^_04zaV$2<>z zI-grR7m;+}IUXI|Z|CV4<_0tPR19?eBm&DPW&v_^OfAsROUhTCVM@OF5BtPnHtc??pokww>Z z$}lJL&P=hz3 z#@Y)2gOibF8(=UTmNK8xyl=Bq#7l(Dl5U>`v^&0AiL9p6M3Bf}C_ag0_QHCK|4ALa zN-U~6diZKT|66AKkM?!qzWtk99#+k(glKkxIc=*C1k3~Q)0Ih7$S-A=ESR#oFfg)7 zYP=~Q=2b}e1pGTuXQnw>!q*S{!(Jk(@yX5#APCY_iF+ngX7Y}ErDn;{&s9tDX~t;_ zmfSu<;Ve$u>m#;ozD`YEx624hY(m$fJIu~I>w&_4U8u6=X_TaLC&0Zi)zt7yi{qm zhUE$qqP1B)oillIcY0KOxag=W7=ekKR3bTZ8?dwGPi-v^oU1+P3XNCvL@+J_Oyy=Z zwqdd=%r?g^3|uc?F9sTvP7N6@W<}mUu}+L9?t6PqD%we-^@Fe9`~GwfW7mCF&i(aZ zd6?%R5|9WcsFF3MS7TB4cxe!Wi>HDXATKH#Wg=Iq^+fv({*i5nMBw$qbpjp0E}K8K zt+H`3s_bBB2ekl;7Gn9_7H$Y;&=raTLY%Y#y>LJ*&Q3KAW<3|~&ihfLtGCUsGndTO zY;WGWLXx~{#ak`0mVV~OC3PHetR4)Bq9Sl;f(bULqp5yJIpAdO_j>M^ z$t8nmteihJsLE?0?Dt#?5hfB9C6Qj+c%xSKVnYA=(+Hfv98y30fHn)70Dk}8_~P-G zNokms&ga-Z&A9iij&YJSEbAf+GCGy5-b#g6NMJF)0 zBc3*uWEs4#t4sZ~DBPH*5i_T?gWXe>rfI(dvVz9}7kt@b+}!l+r?ZiYZ}P5#UYnY>D!$DB&S;w{vFg! zWk8CNWth)kjTq|4&SZxpR&Q9wzB78g^@ya=Z%RbX_ccq%i|fBv+9((`zmK8$vfL6C zlf{(m_p!a_DL6S+e0AoGX7f)!c6#=*&it}+$a<3TNqZ*qY+cgi5IwxqSQ#xUolSWs z+B-Kr5GOMN)i(JYKFukulW*5bqZuDxJsL`g7@?n2<{1gth@8016(`I#2hBF5?b|5a zUyfKxFbDK>^PW3}r5E|A($PoYsORax2=n7%gb`Zscj&CYa$OC+2cGM9SY8#6Z7S{D zsV!Z*z__&f?(0a~_tyn|?FGuQrl0(yC~s@&e!1KDq^xG4a;rqtk=v$X{AB)pD(lsc z8u5Bx8p=^|M$tQQX9z!#p1_zg=wQ`3?=7k9`|ai9fbWw*Pw2YY^Cxl0&bWB z*RdtMIAK04XWxfQLFI%%490N&{vJ~i&2L1E16U0y3z=C5cu^Ql=--M4B`IC#|J%8tY0kae}JVbVb zr=p@fpvH@;(?UbHq1V`c?faQKGUZvK^X2*W^Bsby$l@YCkkul$iVjL40vt{x=i7ASU0h)VpLctvi zxOh|RMh5-8J}nFS&+M-dVfA=ZKAI+Y^I?azV`KXCf^-7Cr?PmPr1z`1kU0BON9Gs; z0rvbI7jneL)A-NKnNReG2OOm1!rk16g-UeLQ;9pl6;DVdV7ZH&l%88X>7G=9YE97Q zB$ag8*vq{Z)XDrI6Wj+Y%hd|=4Rpe{aw6~M*K6Lx5>@i^!i@-w-cS;${I*$4qUUhs z$Pz>k?iJJK6a!XNBgc@2ba;H&d}8!L!$b%J%MyX#+O&Yga?R|#U_Lr2T41aC79Ja0 zK%mck+DWSOeY`16N^1g&F$o;Q4>E78jcnRCd!D^w#}~S5>o!hHOg5L`+8NWxO3tMW z@5wj4V$s)ix^~1q7LCZzLKxoe(u;k6#x;U^ua?hPsZjW)oSV{3yx0w6GB2$TvxJ~4 zk#@Ac^p=byLT7rod=(l3Mc+;tk|s$$$GMLRhCTQ@f;{jB3v|nPaS6m zxLA+e*bV86F;5S(S>X_FJYOK@uWc-|TsEnwpB0o3!UT5LfzQfLUiFKeyd&A*XG>E& zZu0BLL}p-ycc);u+qHXbXyODe-`?z11gx{iQ;sWVs(DU+pS@|p5?z0e)je8eqhq(k zV^a{F!Zz-HB1!j9X@J7Hi$xofLrZnXCeuK!wO#{YqX_b<3)orHJX`B`FqtB`5nUm* z7A1gQO-t%Z`x+J3OVX%N(2h6^m6SBj%S*>_X)ka4%g>aSgdsB;#R8?Y`Bk@vjb}$< zhWS?>t-3g04Jk-djk8>06#5|Ejdsz(5Y>{zqnDN$*f>y>VU?RVog!EESvZx3jrp1m zZVBAf2fP;?Svf^xj7gjX9}+N-=TQ2Z8I3AQso)5Co(xhZZw)hm?Y}#h$eQEF#}wKP z-%DplypyAR@#(kEtV-gKO;aC22VaB9O&2-9V?<b5$bA7vnkS`vQL=HN5g+jXyP2D7=j#i#8Wl%V|5Fq|YrHei4>_~A*lbHx#d(@-ixfvA;^#BYtq(zqv0xx_>( zo>D>brouKy{Wigw=jfyMIIohNwnUn6iFwF`<(t$pw|@Tgc)V2|kr~DL{R{s@iQkZ< zwt!q)OQBq9l=bO|@;t9AK(+8CBTt%G9=`FGK@fY+llf~!kgqr1zd`}&WO3 z{+Q|P$0zC2&`VOApnX+%d98EHvDw{P$)t0x>4Veq%E z<0eYjTin&7CuYy9H^t44;CyXdGDnSZoiFUQ3!j<{qenMa|82YiQ#zCGE~;A(*ItsV z$|_++q}9aVh3iK9-_3728fIZW%9=PgU+F0UJ|QO$fKP|#XyD|*mI1HSM;Fm8>MEL| zY|qJ8Ff3u-1)sh=JpE*mpvBQ@+tb@n(Bj#bVT%ZYTohbi$(4}U;5C0 zJ;%m|E&Ib7mFc~Z-wf9y zUm@eIhqZ1e%-4lzHh#`-qtSosQ0iIB-7BG?-0R@e@@Jv; zvgY!xlU+P!jBXOCy%k_c32+^o^{H`lW#RCwgQP(?L>>{3CD&A!ZYwemm~f;pkvC!=$+JcA>Q`BpBY|Jwpkx(;Zp+&~ORe|^)LT?H;@7fV!$+@l za72H6F~!jMBQ<<){+CDd`7VB%M?bgji-Zm-Wzx%+wrI6jn-Snib9rGFDSqj8HOC-} zZ$Z<%@U>!9;9UIkm3IA>2E%dV(zz>w_f}9yS#VpWN13V3DjOg1JdI12l*=^5F{!`o zd)-N_>#~uqM2-VTN=Jl@Y|IUo7`&;SJ}Q|Eb(}p*6S6o*p8jLoc-;Dn;fO8#IC6hv zdd-FU%somu7$3lK2#{JztqmoJW%J*sZ8HQ?qZAw;+xr_h9OH!j^j;Ks+dB_4&RjM> z#kDTt))4k!obLJP;MZj?C8Cf=npK9`GU^G1s^-Rt_~j9H3NF{zgi`M)T`r(gk(%YK zlM(FkKCjDC60z5kI6Froax{k!U84Q+>nvhRnhr!aYT$l!77Z`TTa2%SKg~Ui)|Vm> z>mzV%V^&N)S+$Qr# z5`Xudw5Ri9pCiol+v}MtopaURjJxEEqw`&sQsQQX8@ee}vwX$+hW-Qf7tTZ9YpvU3 z*A`fr>G{e&;NTf%hr~qkRJ;UUkuRUSc!Q9M6+MOo=fv}k7dgIZ& zpqB-lQLYVUOSl0}i2}|Yo1W!`i**M(B)xuNA|E=+7oStqNN!^p=-(OE&oi7t6k-*Z_Ef1%XRXud43vpf6`3MSkij>4j$Le z0B`hQGCq~W%suXl1>#8R zga6rZ#3{=M;5ue)WBkI?p#8z3(YrrbLeBE_as5lBOnOY1C)$aR3|k3S)|{g-ws!%H!a`aB=fi^Miz4AqtM_fw>s0`b+(|Ge z8}mp;NE5UN9b2VHFmF9szz`b{e*ZRdi7NDG;mfr~mmA?+Oeva#-CP2>pS9o~I=Gk0 zHFJ7CWR~#7z)5(d$wVn7zc?=O*SUUXscvs%-+mg!v(AZY9B#bus`v+6(PP_uTDhcY z+C8tDYd+X~>10RdB8D_(Q4^ywU@mg?2{0E(eHN1sPFXJXAZk7&(o=fB1Qj@1rVq0p zmLkkk1E?QwRQS;+zu69oD=T0#Y?xOm$@?foqb|KTVw6grJRm^Kbd!-czI@SymTe*2 za4H)O5AYtmXo_M< zZHq%~t~!F_yZ1zhzs8r{AM?zfWApqkVQd`kkPL%IEiy zPM;S@;M1_C9uULzlE5@gAR;3*o?C3QM z+#}v?xpHA}ME%Ltd?zNtcG0(L&$t3<%fdz_vAQyKOmQnPZe6TUH?7Tib-Rm-KLvFd zR*PYO`fG+HMtd!;nx;`uL?5nAWw3%+w8>`@ym~>l^8tE6@;Ib)Js~`uKKP^zJ|S6F zG>rME^X4($ZQgA#R`e2r_787yB~md@*JBM*wDqig{7K02%74C`>dD!o=7^6`)||@Q zcB=)NV;5-|ns1Do4-15+#vL@rkQgF8#T@WZ8Z2YVeNIZRs;5FW(~c{b zveOg3vz<*-Vj}yb@S#wLhV$-7;hZpMf9L!q*2XiPpZPzPKH6l-z26w$7xEPMw#kOoQ`kEd`(AZqArG2MhL}!7bgP1cfT^)Id-?m!j@R@o z#QjBT;;!AwbvJ??WYFF!ZAE!3@}QG&67#>XDZcUOOBYJJ(%ZS1TSJJmxnp(Zb#dZ* zh`5phT+rTM@W}uQvWInL;g>+g42bW~o2@(o;*u4b4vL_Gv3_f1WX1{jT_12!=@ z-3;HOyERnSOk<6EpeiOCFe434uVOw2Ec%Hw1Q)Us7lLyZf_(O^(iqx53Ep3v;6zm( z)sv0{K0q$yz;nae72Uj%y0c9A-tO6lKX-N>aDFVTvo4vrZ~fGfx7lEGllR)EQ0=hJ zDXtZc-Cr5ERJM@hitGx|z?TJ673jA38Ga3mVVTH-e7 z|Nh<)N4EWmcBhhp>0RR_$=t^U5h5I%!x4|khrDdf6ZE<{F8Ad5A@@aD=3G?xT*W~gy3~!(1t5;K zJX2aFtt!H@0bPKF<3|GToE)+MAzFU_{A{;%Qi^A|LAzIbo<6q3ZYh4|^yx)Q2CnW2 zi3I)EUhqefvN7(lo5xaQ)7;<>9sv9zQbMp$RlDHVwBP1ZVSnT~_{l;ND{F_9f~d1O zveDbKrvs<;^4`~uvRg+Obf1;2P~6-xXqWBoci$5kFJ-txvUVfNc}Spm^wa(9R@R1A zYIjk69c_gb2J45T*e4aqE$8N

tzI~q|iD9Sn*yrE)vK7f2-jb~X&cEd!+J|#*jqiUdv^@LpMByM~0JZXcU z%7v2gA70l=Tds6mL4!ZM@^j}74V}#A6Ek1LhhbB?^n) znefc$dDub!3Wtl~wTdE6TDI7d&!6KTiM)lAIk`|s-p*QMKiYQ7HP|1X_hdV257#vP zrVVjnm3!{qmz0TXa<4yBr=-R07OT-R=iRt;;hYcJMXk#fTge1?`HEl2g{4Zm@V{d2 zX7wsMy*T5n_*m#PxpK>pT$ zbL+4FCG^>tho8{%-Gy6LF1PPYbOb7sUC$sg1`vaT3Cj&V8 zCzl%3OZCjHqWdK{i%*J%dsbboAFl`|Mf$YB2tP{IF}&tP(jr=m+sgOa4G(WF+G-#< z;*pVTqnHi|D|zkWf7YuhlZ|CxPI0jGAcE2I*{7E&+j|${{3JjIsl>uC~Jz0nY_LPzz`P_5MEY;q!j^x2X7+-uOMU* zynt4OAA~w8*rFNXlDGjF?FT&rItUvcH1_pfJOW2vsP}8;(BY)dWh%@ z_Goz~7+^31^3X002gbvJwc)>Y19sK;Rs>EzQo5wFnIor_>BpbT=jVSXBy67ab(X5G zw7-yI9g{Jec3$AI%Y-Jk>W0v@z0$Qj8LEy1x^Al82WFPq+1LFOPUI&t`j>ixoVNg=*@f4B+`^-C#t;7D0&*ck99mtQx6e5f_O`%PQ6Tg!d>m({$RF5QDGHP(xHgKb#M##&N= z+V5~a+<2VYQTgE9c#NJ#7~dO~_HUrMuNS7Q3Cqmx@d0eXKwc#Pd!j2Anh(z7g@JRC z{qy+gQS>k!IXl`I#Cg17VO!%LGRF!&f=O`uH2(v4w)qxg#$q$6WM+5;FK`ezNf7?lPO2smiSE}*)^MgHjX z827JD>M!&Qj@dqvGBL7srv>X_J~iRl&y?pBCO9Yj-z1)cw#L1r2Ki>1Cso4!cdc1$%PkX0do*p6;j_Wrli8F zg7-~g-><&`TNyo14?>J2olae#{`R?w!NI97UF}^tF|Lj%Z0ThGjHfGG_E8khTVAPfpaK-18`=*cZ}YCH)bLOUL&qQzK><^U}I;tPjzG1 z&&e4O>ZX0!3Ih;>QPHlU|J9ei&I8Xu{E)y_#Sr)X(c)fRKP=+73Ce(2cxL4 zS`|}8#2te?!-(TO5KRsr`)6MiJA5o1EZgfG@TC369(`>L0?4h?_#p;7SWt!SE^tTb zneR3{20;FH6&Rod4C@2H@$XuJIVf`9>GmB_%~MwX3rCQ@2>|BcV}m&R-wS{|Um@Vb z{&OAfUHxO&$^NG4kQKmSi~}LWA&4FrLdrXHj#B*Z zI|*623nnoUfk{vuFPH@T;e`L!P4`!-TrjEXI0>ZDg^;f9Y$Ap@?C|~A)vsy)Bqj0wosUVSVqL5-}gU@c*v?!FzFuY zang~-6ik9W7zy8xt$#CZ5uF6ph=NJDz+wyN8qt#Q0J5ojhtbxd?MKCFl0z!gl7{MgiGqWN@c>SZl{$jO-Y7fCA_EQiNM2QF{ z{XzJLQ4W;{f=OSFlMcm#{}zKR0t90mfutJLNf1dOgd||IwS;K8-}gTY5Qu3D750Hi z_@^Nxh|CW{I&8AT`(Jbt6-1c_CRIU65S`w?B_WIMz$6JOh)?y8K@vPL2{!z-<)0=K zqV=GnIxwjhN`gr2z@-0o;6b%*U{V=1#3zW-?Z1$q>NGG(i{?1#NUQc=NKjQ6m?TFF zCP6h~|AhqAe}PFoP!dE9_FqU)aTb^qcLw4UM5^^~Nyq{!FiG$1F%n2l1tCq;UHhjz z8Cli@CUMgpBOQvIAeixu>`6o@BGdlc{RLFJ1jbYz!~CISf?y8g&*A+q;t*7o1jdNc zL%e}#l>Q3|sxAVPrjL_ATBH9$f+~B!qyYwqPY|8Ye<4BTIbf0_aFB7dG9ig|{w)ky zE(36M@N8%X>rg$UzpY|8XIu|eog%N@|QoTSh#P=iqDMLn9t$;BJ5DZkq0w%#O zVA(7JGwJU#FT}D06`X)cGE88Hpz;$i>Hl4pprR5msSiqmNKF1M30X1%CTU-Q_yiG< zfJrb6SjyBtWRu8h3^3^qGlT@uW`Id3>0VJA|3E_Y6I2KRCTX#NNl;k?gmf6}4)2hl zcd%JUmNkG$U!bHzH3QP_3`W<2YyE%t1eG^{NtzcSK0(9||G!TM`*mc=0+_S{B|!uX z5Yn`v#y^b+L_a}g0$|cKE5s*=XaGVw?4QFsq@Rw?AfS2xFv$c^q#Q*&kUHSMV4!7u zFoujBjDZ&Q{|gCPfd`XXkCDLj`2RwJmde2-9}cKb;KKR8B_Wr+!6bT420WrRzm1i)?h701*VZj+GI{ZH*;0L+b2_{t@l8#EB jU;ylOhTVRx@346JN6``!3-R#lz&`?DW4wt_hM@cpYU?r9 literal 0 HcmV?d00001 diff --git a/package.json b/package.json index d216179..c3afce1 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "esbuild": "./node_modules/.bin/esbuild --bundle --tsconfig=entrypoints/tsconfig.json --alias:'@'='./' --outdir=entrypoints --splitting --format=esm entrypoints/index.tsx entrypoints/edit/index.tsx entrypoints/report/index.tsx entrypoints/control/index.tsx --minify", "dev": "next dev", "build": "next build", - "start": "next start", + "start": "next start -p 4000", "lint": "next lint" }, "dependencies": { diff --git a/pages/api/config.ts b/pages/api/config.ts index 54b37d0..fb9ef96 100644 --- a/pages/api/config.ts +++ b/pages/api/config.ts @@ -4,13 +4,14 @@ import config from "@/config"; export default function handler(req: NextApiRequest, res: NextApiResponse) { if (req.method === "POST") { if (req.headers.token !== config.token) { - console.log("wrong token", req.headers.token, config.token); + console.log("api::config: wrong token", req.headers.token, config.token); res.status(403).json({ error: "wrong token" }); return; } // update config config.begin = req.body.begin ?? config.begin; config.limit = req.body.limit ?? config.limit; + console.log("api::config: update config", config); } res.status(200).json(config); } diff --git a/pages/api/record.ts b/pages/api/record.ts index a71ad3f..c0472cc 100644 --- a/pages/api/record.ts +++ b/pages/api/record.ts @@ -5,6 +5,7 @@ import config from "@/config"; export default function handler(req: NextApiRequest, res: NextApiResponse) { const store = storeProxy.get(); + // console.log("api::store.null()", store); if (req.method === "POST") { if (!config.begin) { res.status(400).json({ @@ -13,7 +14,7 @@ export default function handler(req: NextApiRequest, res: NextApiResponse) { return; } const json = req.body; - console.log("request", json); + console.log("api::request: new request", json); if (json.checked) { let count = 0; for (const name in store) { @@ -21,13 +22,13 @@ export default function handler(req: NextApiRequest, res: NextApiResponse) { count += 1; if (count >= config.limit) { res.status(403).json({ - error: `超过选择数量限制: ${config.limit}`, + error: `超过选择数量限制,您至多选 ${config.limit} 个班.`, }); return; } } } - // check whether it is alreadly occupied + // check whether it is already occupied if (store[json.name] !== undefined) { res.status(403).json({ error: `当前位置已被他人占用`, @@ -46,8 +47,7 @@ export default function handler(req: NextApiRequest, res: NextApiResponse) { delete store[json.name]; } } - console.log("query", req.query); - const resp = { + const resp: { occupied: string[], myselect: string[] } = { // try to fix occupied: [], myselect: [], }; diff --git a/pages/index.tsx b/pages/index.tsx index 05bbd9d..7d9c67c 100644 --- a/pages/index.tsx +++ b/pages/index.tsx @@ -9,9 +9,9 @@ export default function Home() { return ( <> - Create Next App - - + 抢 班 + + {/* */}

diff --git a/store/index.ts b/store/index.ts index 2cb0427..1dddcb3 100644 --- a/store/index.ts +++ b/store/index.ts @@ -30,7 +30,13 @@ class Store { await this.save(); } public async save() { - await write(this.filename, JSON.stringify(this.record), "utf8"); + // try first, then catch + try { + console.log("store::index: save record", this.record); + await write(this.filename, JSON.stringify(this.record), "utf8"); + } catch { + console.error("store::index: save record error, filename:", this.filename); + } } } @@ -52,7 +58,12 @@ class HTML { public async set(html: string) { this.html = html; // store into file - await write(this.filename, html, "utf8"); + // try first, then catch + try { + await write(this.filename, html, "utf8"); + } catch { + console.error("store::index: save record error, filename:", this.filename); + } } }