From 4eadee3e43e706a495383b7bad194406fcf0e381 Mon Sep 17 00:00:00 2001 From: muhamad fais aizat Date: Thu, 12 Jun 2025 12:59:51 +0700 Subject: [PATCH] fix:menambah prediksi grafik 4 kernel --- backend/__pycache__/index.cpython-310.pyc | Bin 1379 -> 1379 bytes backend/config/__pycache__/db.cpython-310.pyc | Bin 665 -> 576 bytes backend/config/db.py | 1 + .../settingPredict.cpython-310.pyc | Bin 661 -> 692 bytes backend/models/settingPredict.py | 1 + .../routes/__pycache__/auth.cpython-310.pyc | Bin 2763 -> 3379 bytes .../__pycache__/predictTomat.cpython-310.pyc | Bin 9103 -> 9336 bytes .../riwayatPengujian.cpython-310.pyc | Bin 3118 -> 3849 bytes .../settingPredict.cpython-310.pyc | Bin 3840 -> 4824 bytes .../__pycache__/testingModel.cpython-310.pyc | Bin 4071 -> 4124 bytes .../routes/__pycache__/user.cpython-310.pyc | Bin 2622 -> 2746 bytes backend/routes/predictTomat.py | 231 ++++++++++---- backend/routes/settingPredict.py | 44 ++- backend/routes/testingModel.py | 77 ++--- .../settingPredict.cpython-310.pyc | Bin 817 -> 842 bytes backend/schemas/settingPredict.py | 1 + .../src/pages/LandingPage/TablePrediksi.jsx | 146 +++++---- frontend/src/pages/LandingPage/ViewGrafik.jsx | 35 ++- frontend/src/pages/Panel/Setting/Setting.jsx | 281 ++++++++++++++---- 19 files changed, 605 insertions(+), 212 deletions(-) diff --git a/backend/__pycache__/index.cpython-310.pyc b/backend/__pycache__/index.cpython-310.pyc index 90239e074a18d70a274653d9bf20ef8bd01f752e..9d3a4bb9b3fd7e871c9fb975d6df013b6f130761 100644 GIT binary patch delta 30 kcmaFN^_Yt{pO=@50SFdMaL;(Pk=LJ_e>+_KYBEDF-1%v_@~3Njo60uvpQQj!z%iwbhmER#zt5)1Oo@=Wt}!A9s6rxulE zCZ`tbCFi7;r55QX=j4~B=q2apS{WM~nCYYHWP@m(c=ISD&*b@xQjAfPcQMv-GO;mo KF!C|;FarQ4(L8ei diff --git a/backend/config/db.py b/backend/config/db.py index 49a507c9..25f376ac 100644 --- a/backend/config/db.py +++ b/backend/config/db.py @@ -2,6 +2,7 @@ from sqlalchemy.orm import sessionmaker from sqlalchemy import create_engine, MetaData engine = create_engine("mysql+pymysql://uupkixae2jbw2zse:1bFkfd8pfZ6EZhphAPQa@bdcaorplf9ct8apn6n5o-mysql.services.clever-cloud.com:3306/bdcaorplf9ct8apn6n5o") +# engine = create_engine("mysql+pymysql://root@localhost:3306/predict") meta = MetaData() conn = engine.connect() diff --git a/backend/models/__pycache__/settingPredict.cpython-310.pyc b/backend/models/__pycache__/settingPredict.cpython-310.pyc index 436a409e51c0e77b9905eb3e0a5662374958ba62..618fb1b8af979a3ad63e7c762e44ed7d27aceab9 100644 GIT binary patch delta 134 zcmbQrx`kCcpO=@50SNZ*^~l)9#K7=!22{4E-@-Q+nu>eT{B*@3e@f`r)$Psw} diff --git a/backend/models/settingPredict.py b/backend/models/settingPredict.py index f7153db4..926ef36b 100644 --- a/backend/models/settingPredict.py +++ b/backend/models/settingPredict.py @@ -12,5 +12,6 @@ settingPredict = Table( Column('nilai_degree',String(255), nullable=True), Column('nilai_coef',String(255), nullable=True), Column('status',Boolean, nullable=False, default=False), + Column('statuskedepan',Boolean, nullable=False, default=False), ) \ No newline at end of file diff --git a/backend/routes/__pycache__/auth.cpython-310.pyc b/backend/routes/__pycache__/auth.cpython-310.pyc index 6eca94d8f464a631719af2b0435337b0ac9d64e6..d1be643bbe825b31527475beecf5aa03b48b46d0 100644 GIT binary patch literal 3379 zcmaJ@OK%&=5uTnGhYyjIWy!KE+w?m$;778LYz$*z*)}7 zG?yYlFYIW6-!`WRp}iCE3bmGej5rQPneD^?g;HPD~Uu zcwVS@ngf_7PO2LO`{qmk>-y7iA&U2cXjyJBO^9kBQ{-=;JOi6vF+M% z&dtS+>%@6C9~az$S~H_!TyjgQZ$%Sv*)7Kvx1z>&RE;OyN!8CqN8%}WO7)%SXguvs ztA0M3iI2I*;#qfAjSJE7c+Q<88k^eDKx)Giv`9-M-JPcs?nzp9PcfTTXthP?1)Jk^4s7O> z%{j0+Pfr}OIk#ssPfseF3t)4Ko(7xK%H|^2T%t9wap)O(mY&3BPX1{KAv_%V|e2E+_7-tUPIK2dpi^G?CWR z4&yy(XTleqOy(9@n6Pds5XY5f5Tfn|%kS2+=TTFO#4Hm6V#yDyfqtvG!O$AH7 zfuWtThy?;HD$S=47ouQ;#k~gSDVNp9ZN`0ksUN8sP|r14mf>dLebTqY0O|IB{#?a`b~f#xX_fPhiNNJmf4FA%Y?L8?1zzb+J2UGQ%;xOTGH{n z#E+Th$%5y_DeXkqFL~aJjvwu<7@6R*;(30Oq~KCGTjqIhHGUR8L5cU*7jLXaKKEN` zvfAx-S64bMKU>(^2>I%oA8dj5S2>0%Tg9VZZTI+busw)Y2N{AOuF z)P1SbwLk}r{U-+<I0H8oQc$9gY__R=O= zzbJCZS}{AYcgUZ$zv$zyqpV`D3&YCoN8Zl|G?KUjt{iv1lP;A7~ zUSmFIoKHg>KvxebpMx&Hf@9My`9T0I@I(r+mj(6biC&wz1=uR&Eb}nLNVs?ZfGEDN zE<&`|fSfhhH03vH?~go7Koxk$;2h(*`W!FeOUfXm)!ks6NfM|R%N*Ng0erc1)|m)4 z(u8pfbrCS~DCP(6)9cs0+Y5`{a^vZD9X*8SO%Hs!(C9m-{F2Pl}1wSbaYWik)VG)+<^_77D{H*{hXQ#T3xesKO-F3u3=Rar-=|C`?f;{e*B2hVv6 z8lMFLNo4xhDQ~6X$zImj%O+#DmlD?X_R+P(=h5sSEsT5k!Tdf5Z2bKGs9(LduJ*mM zZ+?jACg@>m_#RsJ2N16b&{-2?r~}mvK{m}z3&?9B)%Pf_5A9faEPPxWta@09eNBH z-GY|QfcSCAqB=O$kj@>pr97&R`+uO+gk64%+aW{>8q^J(>6fl48edU4@9KVZdVbQX z`4AUyb-=bDi4`f!0v@WHf_l{<*r9_D>dRkY0QKdx0NCvS@BnnGzWnd%!cQRZLW21n zKxj}CAOuwg^0(8w4fz}Hhy9tp4S>ocpuW-)n8Dw3)CYKp!ob|C0Ll_7fcdSdDnPOK z_1+FxEo|!ilrB_&{1SfvUk(=t-eKV%0jttl_an%)3Y(w88vhK%=OF4Ol}^XF`!C2T zKz_g-<}m3%L5Q%Xt8B*a;1<>xp_s?`A}ZOC;5(7vcX8%JI#6ILsxWyfOg^k<=Rsfs zn<0?6^a3gAWnBkQ*+eIYlGSritY4OTnsKB6UqGRwK!nNMx(}rdiVNam%oI!@sseBa zHJo;j`iTewp2uMx?tklH>ndI27;;|3$r9XwSd?826Uw%gSAb9ICdemX-7RM?B7b}Z zyb4|AyhD?0I~ZqsBnaI5KB%WW=94&yS5CNEs!G9c!wkQL(?z@+dFr0T)m=!M?G&zF zn50z#l}5WG6vq_gr2+el!+@^&$kEE>%G=J(@ty8VK!KKFEFHLOIZz$u!NpZ*_``qO bC;^vEf)&Fg_P?sOW6qQ6B_%74d71nNZ4W~X literal 2763 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 n_0P%Utosf48Qr&Drb;u(=)^0YBQ* z&6td}^0H6%w^gRV9+SQ{Gvi`h`enSKnh6nZO^8Cb24+}H_LwC1n5p`TVy5wA#C9=- z2CTu3Do@OqSs9Som|~8|xLxMN4xX1IGS_f01u3Wb7?O?3oE+tzn8L>w6wHL)nvtVz z*7d}c1~c+%B4&=+ zezmo$t+YHsEqlvza*X!Id88`GVNas#?M>E8{I*QtC9twUEMi2NSIiW0INJ)k3d@8X zmPtN!%^_2K2cN#CEh?uM6$I?2fK!U5h&@-;D{iKk<4oBKg4s(9#yca&Ushhh0GYC= zJf?6&JUw1)QR1sh zVzpW+s74A=e|0(uHS3ap&bGEPZU1v@-r6^Co%yZ554<_PVXRg}$GKH9sw}?0JwkG5_8~5clGLS7`gn}Td7`PE(eB8d)S+8JU{|;PCbDGrbSngV zgeM_&|F-=j@T=s5IO=zm%V~36b9tbM4qa4x_-!`ULNboUD|FmW;1CB zWRQn!WttY_JS0PM5R&FFBapjbPtg{@WWj{NjWjiIDR5mq`y#lU&20la3bm_8Aa_BY zx09X*o$t{@2pEIhMP#HkA^YWkEfbLzgbgbeg{TE&6ml06krpYLT>}#rJG!=}mCSejbNr_vb77^WG^RD3?l`! z$1b<`$|;oT746=n5WAPKv~y4!+F;4<2IG*A=TttutRi!g#1~Ii?1nbgXZUPWh4|&p zsOAW|b&5T5gzs!Z%*>q3wf1t_p`&76rnw96o0l03Y!v#stE;avi+a8%h`$m0ByKHp zOzgMIaXI#~!sl!)bC?t8wt#0+#-Q>ES&*5!RAfd@@ZHzkizH(Xv4`)W?xTviT{_Gu zp$k{pUG~^`U+Vzh+h$?`p8H|Xw^_r{dO$oVTw=kFIB0VR&#O2L`;F zDBw$ot5N2-Vw@)@U1J5-ancQEIg^?CCv2+V-intZ)9y(U&4Dg~TK2kilRyuTE zY!=r#LEB+HlswGdv8?3L;|FMbZxXyk@Dm!TYS`WnU~f5Qr)CRI<6R=(BltPNF9_Zz z$N&n*t!Qd56V_K!xj>D)n*;{IMeF;iy>&mCUndwKXb?P0@EpPO1TPSLgWyGiZxZ+j zzD4j7L4cr15F`izI@;=5b;)>!>Ng3#O<)mx576Uyc; zG^(2w-f^t2RshAz#zEqpYsGV=H6sEWUm1_5N5^OyjCTme2*v@0-Q5|wL5?KByVeiW zC#HWuW{aRr@EXDY`Na57I%=7jymcd!WY?|VW@aW%d!8y9E5)-I(_OQ8`LurJZ1M7H z?X$VJKFvI({}JhH0c$NAV;SrDY_6_r-R}~g?q*R{chL7p_wQ8$%&Ug*4BC%R^*X$c z0Q0lBrs3G(m&YnRW~5 NZ>y^Msp<&a`Y-%^d?o+@ diff --git a/backend/routes/__pycache__/riwayatPengujian.cpython-310.pyc b/backend/routes/__pycache__/riwayatPengujian.cpython-310.pyc index ecd8a3925283fdaec3a8efc89934c08d9858e7de..4aeb016dc15694ac045a25e78d4580d51932e991 100644 GIT binary patch delta 1845 zcmah~OK%%h6rOYEbv^djshfve($t9(m867*mPaWq1ZZhiVNp;-#e&3l(m2pK+_@n* zOyWSgVNoQQB@ZR+xl`Ukq|9wB523B;o6FF?wo<(xZ??T{E|G@tLBd%l^u-*?aP zPlYcBPFH;2Gw^tDg&@F3V|8$Etm(94~~m$V9#6PsOY|B ze*?X>=3GzUH|Bap-z|F!uAd0{76-%;%*buQ4G{iq*370S?J*ot5XUs*Br>}HgOR-Z zxOhru7e)WIyC1_t29NH(XU)Lb=kSZy>@%O0#kw59afu=99X1YV(f9ERe?a&g){5~T zc2A8(ux&?d2ezFZW8I8Q*{|HlT*Nic7}pGy5+Il`Z?iAJGL%<655~F$##$O@EMcp3 zWNpE>#`ldJfwLRdD&=OX)BAFr!*V$#uNtFnTy(~21Ndd~1j26D9X^QgsK$R9MOM&d8Sb@MK=puNA zU>xC&O`NFtNJ#|Yimo`_7QDKPH>S@`3S39@Arg-SsS*t3X{$5so-cE_v_svaTGH0YD>Q0#sr|0V^YM?~(D)qYghL34 z@*Wn7*GcQE@$cTRBlHJRH_K>v(yo>(q0-e_wjc67UOh#~A1lH? DPD5ak delta 1212 zcma)5%}*0i5Z`&b-ENoe0;N(u3LDns-EZ0kbB<$c zxVrBp7p5Fd`%H&lR|pRixbu@Q2S2RynBOtacngm|H%f4~(@$iRJnHLyV+kGrceWWn z<~tbC$`dN03nRLD^N|S5p`r}l#@kiYag2)p9))>2c&Cc!;mJA8+kFjR7-V+0j61MC zf>k{U4L{BBqBx0m8W8GBN5jDV9(R5MVH2b#p#)_nA**MNg0{#iPy`t&n+2#qIb6|- ztiVKvv5n)76UU4Ky|(*bATP1sN&Z#0)gF8Y&uS#3h5gkjsuK`hvi^f7^=+ zZ2Lj==A+cZRX;EK$a9h462UmZWr8aNKPj2%+|p7;dQ6`-e3_=&>x;T|$YUN4$m4rtbcV@j*(p%3bhKRJQP8uEoGmgjEStE_ z4IZKnag&D?J8N28!2b)H2XThrECKaOTn+Z@ft=SYTsqNxVw9kVKsD?dS^p`3n84tw zC30)&-0HGa?evUVo|+<*jC$I;PWt7O2-MWN9Q3S7VzVe%Ox(nPBkk4EaX84g@bIre zE;1Zx9A=b>Wi1XUQ;&@B0qi|DlujXTDxJd9f05{0w13RAMI+w!M~MyxK=Btebc(t- zrv{+txa~9O%ag{$*2ab(@S66H(PyR;3a_Oj6cX^*MZW QN8BceS-9Oe#A0#y0rODbEC2ui diff --git a/backend/routes/__pycache__/settingPredict.cpython-310.pyc b/backend/routes/__pycache__/settingPredict.cpython-310.pyc index 0a5a719cd73398d2b6070efb5f0140e92f330995..31b1d816432f19de9ee9f9bf9d18c9dbad2e8432 100644 GIT binary patch literal 4824 zcmai2TXWmS6~-<=5WMPQOP25OCAR6NxSlwX6uaZdj-|v6s+0q9mlPxbq!*xN zu~f&cJk!gJJMFYHeer{w>5G3yenQ_cee07R`joyziIbkQ04Y+5V`y-&dv?#+-Lv1h zP>n(%tHAT$FRw4Xa!^tJgPs0o7&`C48_ZBeVG1Lz;t`8@)S{khsh(zO1o_lWdAg;0 zX)7)Js%v-|D_K_&dlBCA`DzNWvTI@s2XH$4g}EnzbKRKfsRt z#OlY{3AxXMb%mY$f&hI*(o>S2{(`VGPc-Wg=sC!oeQqLRwn3U7mo9rzqcU;Q7{SvuLJ-K(f za%^l)DP7(|gq5@?bM5wxJB?PzMO3&xKYx4rL6tW{r{PDbk6T=NtEZW2~$#w)ak68&a(NgC-eR&ySJBD)^6wMpA`Q5}=J z=6==TK}6YNmEeJsM}sf=+z0RmzXH-e5Q1NAkaf~gHc5v(C7blAvQ9fR*uyAO9dcKh zQ<%n5kCYCbQZ{5?Q$lsEOq6w%C~YIum>#A&>IPxy$MkoE0slAZDp^%Z#%%jvS+nn% zo4z^y!Mu6a9N^B}x%H8m*tC)yd0@ib>(h6pP2cwH$_f`gcg-8K=9$y3<8xb_K4+d5 zi#7ZNPTgxb44ch{yLP%Xpyk$`sp&iB`=6OJH>Ph+o#|5t^Ixv(-JY^2?ZGA4b-rDg zZJ2PawpnYmd^TWfh*=8Sdk)^O#(~t8j`DeWorFqy6^&If0g{qzU!JfWVbQJvdf0+MKnDwn zDHE)en`=?_it7Ynwc$0d9>)FP=EjxnlL%=5P9>2D%2(V*)pmoc(C7+m{SP1nTgnBY z9kzl>wZSBeL)&pnx+sFGD9s=6Dy$tDH6B)%KxLHad6ZCbiW-EXq=~)IwlczAt=yAt zrVAdl+%O`1=cwW+3JmYw+z@aBl&91nMO~v=GE9qfm>3V~_u@PZY?H}>I~c&b3lrMM zLL~&-Z_9PN`)r;i|vu*W4`Ql8; zh^WJ&T%VssY2R^er&0y3Y}9Sfv!g=X;myEtApqy&F5`8zk{)P*exuyo@6TX^f>Jd3q<3SuZ9bW5Cy6TXBuxDDjD;E)Ij83L&Uff|EA?1j)q z5C|C7!juG#9;Oq($hicZdeeBSK;ZyE(jkyy^!BA`pEVnfADS&cY^|6c_m^$g_E&5l z!W?H@z^4kXYIblhajxAn;xiOXoVH6ec+!YL!i*~@@LF11Cp$`oe0hK33@MeP; zRD1|*Q1>=!!g=!2A8)Q)gJAbTTj}s_z#IG)GEcP=M+z{mAHK zH}g*wOw#MwPBxeVZBV`@=q*U}4(wpL$O?|q$^Mi4nXLDAgF9IsV%iE7T<#|uYk=Jj zOPuFAS(bkSsjF0+-TFHKc6($lu6|6v5yqJ?MkYpv(hqKC$8tE{eY$?R2N=OAAh0v# z^PvU0PM{nie^Bl#0?HDmvi;!_Z4ADoPrIUnb}0Y5Iw7*a)ub)OV8x@q96 zKSAe5992ymRqfDCsBghhu{zK?8aQft$5BJ0&$SYnv-SaDuM4PrhaLbTmM!iH~1~^Au>P4zS?Ys zkqYIKEKH?4N7`be;R>`ypM_*iA>)Q|1y0#=`Bij@0R4AD876u7J0vMa42|gDjp`F* zbaaC39o|duPy2Q>Jwfyloyfm$M-5#~+Q8AihA8tr$bLsv`kZR?TbiQZP@QhmbpGqn U^Eg*~zB4EPd~|#_Z}|ED0cRDM!vFvP delta 1980 zcmZ`)&2Jk;6yKTsUauX;aZ)F-osZ_DZd0e}2ddi84^#wcQ7EmDP$Y=l%p`Sc*Y50E zZKDk?q!KDpkkCk+BH>hA_yag_;R1+551bHaB~BbrCHMzQ2)r4)jupzR=I43u&6~IL ze($Y+8Gn$SszjrX0^|3^^v(N8Mfpt#og)Uq1(@D9=+mip>PR69F-qO##6m)@%~DS} zxsXH(MZ_ZZ3L?%XUg)L0t9>LwHJaE!pmR4dtj!Iyj7XFwmobTvu7~;tS~x)Bq?;s2 z4@tu8A-$w;%OVFz3Uo<$`pG~`H%QW?-cc>L&gW`G(llFnw#gV=oe3Hh*H>Lm7U_o;%<$QOL{^UcyxmA*n{=+V92R#T5OsTFe(&AQ*o@V zJuX%!+ID@veb1!rH^~DvHYJ=-2{Psrdeh_xi{_Ix<}C+EnF;TsJz zFd%;x<^(zerY?dEsxPirIBE5C{BL$k#Am&3Wup7~B3vv#>a>Wvi0UiDPEqAm}(kGd7W<_N$Rm#6aP7y9g^?!s@N@GDpspPEzw1f`aX2qd7g}&Li7A`Y&0u4UlLvLe28vncLe`9 zHdM#H-Y^2laKi+))IbF$tvx1vyMqhp7|DebAfj!e^|r6@Ta6GMc$fumV7SGD-f$%k z7I@f_2WOsLgqL8i2*@aLxH^)>E=gf$`RT4STH|kbouIks{*=l@4hzq{c6&{TssLAj z$Sr$AfK02_Osh!5iyM;v*)=dx2D2y9iXRLZF{EJ^WmN|`@M~cQu{Xh#8|7o&>$xyq zE)r6rcMFW>i?<2A$Hf0t81wFw3ZLa~>{CaqfWd?tFG z%?Vkp*8ET{LJdp^-Mrj$qf#l!h#lXJy%Mx$%N0^9(Q~4Py=8!u5=SmPDTx?kq#TzihJCQu^?!mvvf!0cCCzj2Kf`@Gst^T$+kNhN*RDYk2}tcJJl*v7 z>}G1zp^|B)$4V9>$uzUjj_y%L-YA%&gULCN0*4i62xej)P@aPvCVdf;Ho;lT?T~%y z-jS)=gq1L<{1{ImE`TF>C_p|*q6G2@BAJk%oJkN)bf6iXSXo2xY})!nit@)NdrH}TcyUc(>Ly^cjJ`3m&5 zX!}ak5+8i;V}mfRui)}ZW7(~&*Ei~$<${>?H~eRNTtgiCpM(b9XZ4NNW^H@maqF!b z6SL;sqI(Zb7d*p#3lp`~jp}Lz4bNb8SG+Z^hHl97Z_08@mN{`^-k%~eZ&Yiny6rwVdK!pOx+1oMJO2TOw*ct? delta 942 zcmY+C%Zt-c6o+$@G)>baeZSxBj93(LAfNlj5K|E<^M$CnqoZolzB{?_4@?pvB7=|X`5!szz{Z@Ey zewV~QBL6LYNP@bqP=)#jgazHuj=*%#M`8X`uJjF1R|Fd0BN>62pwa}MLv9322+<@> z(eyyRFS9U?di6!hh<~hti zVxGg?ha}%0$cXZY3Wz=XID~kg5MBgJU z2l{%!`!be?{HRD1C@El8f&%ub=;^U4dlizBcW*|3Qe1#yN|>2u*{DL*F*!Td3q?Lq%zf`hE-4WSRtuF7Rsovp}y+rp}dIqJ~{_keBG+Ig~yx1 z=77xlhVEq$ZTv{AYtv`hAWds;3knJZAP5G;VGdG|h76q>N_2jx-x2Dk_RsjAi$vzP z0vUb~_`=6pgMU*q4rv=*Z6L5iv)O7zq`k|aq{7j?g)WQi_w)jXfqBpf76;v_1nxJ<+0Rq`_}&2O94lJdi8 jp|Dxr}EJyF@RY-)9#8~fah64K&tL)(7=(NF)C diff --git a/backend/routes/__pycache__/user.cpython-310.pyc b/backend/routes/__pycache__/user.cpython-310.pyc index ca111f2628f430f0b1862bb2a072ba172b216b3f..87236d2341124c621320e4944e5af14f3863664c 100644 GIT binary patch literal 2746 zcmbVO&2Jk;6rY*>v>hj@o2F?DiVaW1clAc*jabic4x26whf3E_m(gar7{5}LArrB-02c3@K+vl1tD12^>o&-CrYPYXf8 zw4J1wmV%OLyU9da4$7wOC6nn?Fhz-A+~QQoC6Ht~=_+uNme z%FAM^&iEvsdf@ERpkh3ykM%qyP8)BVR}Oj4oDlc4DD8XC@G~a%8Hhd0PmVoa;qqC2 z)~q-SE9PFZ0{3q7IeyM~pW}3e)aIWc-pe&h7jE48>f3f#38~9puCCttd@B+i6}Ma3 zyD2)N#j_gIcGPaQwA&DBop02rcDk9688qzgpaK6AcZH1W{dLv8En3j`Rz#LTkZpI# zxCRb7VkoyGMLpiqwh9~BQ@VtUxp|OiMX|^<;~Npso?jNUP%eMLoh^g;g>Ii3kRefY z$o9w{9a?*2hjPl<12UjD$u9k#tPq?`Xj+FM-)3DQtTMZati zQ9JEiU&3ABmS)NJc_~7^&O;S0UQ60hm}J+XG4_1&4}kWV=~AXb)y>wUHW%9ELWOZs z^Ry?nM1(AR5KOz7NJOLpzb;g?877G?rP+PPDs-Ao!tLK@|H{{3aNAk>Ip#Z>#XQ2d8D9u=&TRr6;I=xTV{V6*qD{N$ z49IP^M}cVS6PUN|S^LaC z`2#?EI*Hn>w%V#%Z+BZ<&cR0HSunK;`3klXGr0gpJH1UIg{F~w9lIm^+AU!~lc&(H zg62G$3t%4G#?t^PU&YZXnp_?RM}yIaFrLkTK?JMRrxWlSqo{2Z$I00J1nU61`2lHy zT$_*$j~E~Y8KSJAy+?-5z#vFL#E2r4K|n4ZXNuQf%JK36uY$qL+0T?QUhXpJ%MmFk zO8cEK%X)3ewU3tmrY z_imVUp$51h{xnu27*US~%bG1~*hWzXeoOS$5tQQq)y1BSl`zTjDR}3&PSP1bwwU88 zufS}CPZ(bgG;&Ekf)2p?(SW^FlGea_QIh*>d;tH5jGG0hBSpANSc>*2P{M{2h7yOn zIVI)(H$VxTaZtQG?y1RveMrLgJ=;jwUzTsc9_5>8jBek-*85=g`RI0_VjRauZR&sk zBX0Q?F1?5b#Vs$PF~z_g1(8^d4)J#xySdV9&S+Uq(TQ@`rBOUX&({zn!%R7l{XDa& zP5o!SeTb+Jz~yB9{|2)_)Rq5JJNDPSK$M||4hx1Fn>#r*#r_w0ws_n{FH5$^qaD>_|>rg~{4{;BG{+-%;AD zhj6BJVu_V|ROqm72L<>jsK<>(z9BJbq>Fo{to_yUwP^~Pkkty9(e zggcHn_0sB7q5=_3e%eMfVUN@Nl|48{xqObFu~Bmnb>`J5*k_)fwGs22u94QcXNb^h z%Q5Baw{Ct{^t6zs{>|;%x4znrMOP<9Zb~;qSL9r^sBz;W&*9hWDIu-nd+30pc2CHp zJ=oC2U6Jqj%XU8Wa8|XL@w-yAlWpVbsH2|KWn97St|E^Up<+D6AyA zcTQ=tM>X4X_Q^iobN9(E@WVq3(>sgEOHiB!Zo4BA4+n^BsY@|0!iV1%QzM7pF(uXiq4KVBhV@=wiGthzu>|c2aoIBp~FA3i@Ea6AM#*o9g2D0>uQK3Ov3PmoOqt;2uY$fj zk%6L2(2bPp7m}M&CX|XgV&}YtF$PI!!5398j$xwROVfb`)56-S$`9bEvV{gUd4R3) zlN`QL8~09ZeNjU?HS9V5w6i7Es5M`XNJ0jXA@)vy#GoFV8t!p z#`W)@L2=7>(b!_(k9LwDq33|ak8wCvddnRxLyAt6yQz-0vh>`9NQE`xK=v1yOI;eg z2;4(NU4f93_5VA}0#R3AL)7uL;{>9{)Kn}rF88L?R0m&AvnAmE3Du?a3N?pV;ZS;y zXXV(E^FOSNc9KVFknaH=FBKV69fexdLzq`s)(%i#U`G<;6PRqB4gEW@9CWoQwIjG# zx{1VG85KIrl&}o{0<@FP62D{B6xK4hcT%;KpF delta 83 zcmX@bwvmlDpO=@50SHp=9!{^A$lK0XGjVFJh&w|HX9`yfLkd?jQxs1MQ!s-j_hdQ7 e)X9?=PciaNj%BJB6as4EV&GsDfWgV{nW6!R0240& diff --git a/backend/schemas/settingPredict.py b/backend/schemas/settingPredict.py index 6aa32ed7..afc2c41e 100644 --- a/backend/schemas/settingPredict.py +++ b/backend/schemas/settingPredict.py @@ -9,6 +9,7 @@ class SettingPredict(BaseModel): nilai_degree: Optional[str] = None nilai_coef: Optional[str] = None status: bool + statuskedepan: bool class Config: orm_mode = True diff --git a/frontend/src/pages/LandingPage/TablePrediksi.jsx b/frontend/src/pages/LandingPage/TablePrediksi.jsx index f9542d93..9e69d1bd 100644 --- a/frontend/src/pages/LandingPage/TablePrediksi.jsx +++ b/frontend/src/pages/LandingPage/TablePrediksi.jsx @@ -1,60 +1,102 @@ import React from 'react' import { - Table, - TableBody, - TableCaption, - TableCell, - TableFooter, - TableHead, - TableHeader, - TableRow, - } from "@/components/ui/table"; - import dayjs from "dayjs"; - - // Generate data selama satu bulan - const dataHarga = Array.from({ length: 30 }, (_, index) => ({ - no: index + 1, - tanggal: dayjs().subtract(30 - index, "day").format("DD/MM/YYYY"), - harga: `Rp ${Math.floor(Math.random() * 10000) + 5000}`, - })); + Table, + TableBody, + TableCaption, + TableCell, + TableFooter, + TableHead, + TableHeader, + TableRow, +} from "@/components/ui/table"; +import dayjs from "dayjs"; -const TablePrediksi = ({tabelDataPredict}) => { +// Generate data selama satu bulan +const dataHarga = Array.from({ length: 30 }, (_, index) => ({ + no: index + 1, + tanggal: dayjs().subtract(30 - index, "day").format("DD/MM/YYYY"), + harga: `Rp ${Math.floor(Math.random() * 10000) + 5000}`, +})); + +const TablePrediksi = ({ tabelDataPredict }) => { + const isHargaAvailable = tabelDataPredict.some(item => item.harga_prediksi !== undefined); + const isLinearAvailable = tabelDataPredict.some(item => item.linear !== undefined); + const isRbfAvailable = tabelDataPredict.some(item => item.rbf !== undefined); + const isSigmoidAvailable = tabelDataPredict.some(item => item.sigmoid !== undefined); + const isPolyAvailable = tabelDataPredict.some(item => item.poly !== undefined); + + const totalColSpan = + 2 + // kolom No dan Tanggal + (isHargaAvailable ? 1 : 0) + + (isLinearAvailable ? 1 : 0) + + (isRbfAvailable ? 1 : 0) + + (isSigmoidAvailable ? 1 : 0) + + (isPolyAvailable ? 1 : 0); return (
-

Harga Prediksi

- - - - - No - Tanggal - Harga - - - - {tabelDataPredict.length > 0 ? ( - tabelDataPredict.map((item, index) => ( - - {index + 1} - {item.tanggal} - Rp.{item.harga_prediksi} - - )) - ) : ( - - - Tidak ada data - - - )} - - - - Total Data - {tabelDataPredict.length} Hari - - -
+

Harga Prediksi

+ + + + + No + Tanggal + {isHargaAvailable && ( + Harga + )} + {isLinearAvailable && ( + Prediksi Linear + )} + {isRbfAvailable && ( + Prediksi RBF + )} + {isSigmoidAvailable && ( + Prediksi Sigmoid + )} + {isPolyAvailable && ( + Prediksi Polynomial + )} + + + + {tabelDataPredict.length > 0 ? ( + tabelDataPredict.map((item, index) => ( + + {index + 1} + {item.tanggal} + {item.harga_prediksi !== undefined && ( + Rp.{item.harga_prediksi} + )} + {item.linear !== undefined && ( + Rp.{item.linear} + )} + {item.rbf !== undefined && ( + Rp.{item.rbf} + )} + {item.sigmoid !== undefined && ( + Rp.{item.sigmoid} + )} + {item.poly !== undefined && ( + Rp.{item.poly} + )} + + + )) + ) : ( + + + Tidak ada data + + + )} + + + + Total Data + {tabelDataPredict.length} Hari + + +
) } diff --git a/frontend/src/pages/LandingPage/ViewGrafik.jsx b/frontend/src/pages/LandingPage/ViewGrafik.jsx index abff078d..087d7063 100644 --- a/frontend/src/pages/LandingPage/ViewGrafik.jsx +++ b/frontend/src/pages/LandingPage/ViewGrafik.jsx @@ -69,8 +69,8 @@ const ViewGrafik = ({ date, setDate, dataYAxis, setDataYAxis, priceType, setPric const fetchData = async () => { - - + + if (!date && !tempPriceType) { setTabelDataAktual([]); @@ -105,7 +105,7 @@ const ViewGrafik = ({ date, setDate, dataYAxis, setDataYAxis, priceType, setPric console.log(tempPriceType); - if (formattedDate==dateTerbaru && tempPriceType=="all") { + if (formattedDate == dateTerbaru && tempPriceType == "all") { setTabelDataAktual([]); setTabelDataPredict([]); @@ -120,7 +120,7 @@ const ViewGrafik = ({ date, setDate, dataYAxis, setDataYAxis, priceType, setPric return; } - if (formattedDate==dateTerbaru && tempPriceType=="actual") { + if (formattedDate == dateTerbaru && tempPriceType == "actual") { setTabelDataAktual([]); setTabelDataPredict([]); @@ -150,13 +150,17 @@ const ViewGrafik = ({ date, setDate, dataYAxis, setDataYAxis, priceType, setPric return; } - + try { const response = await axios.get(`${API_URL}/predict/history?tanggal=${formattedDate}&data_type=${tempPriceType}`); const formattedData = response.data.dataGrafik.map(item => ({ date: item.tanggal, actual: item.harga_aktual, - predicted: item.harga_prediksi + predicted: item.harga_prediksi, + linear: item.linear, + rbf: item.rbf, + sigmoid: item.sigmoid, + poly: item.poly, })); setPriceType(tempPriceType); @@ -247,6 +251,25 @@ const ViewGrafik = ({ date, setDate, dataYAxis, setDataYAxis, priceType, setPric {priceType !== "actual" && ( )} + {["linear", "poly", "rbf", "sigmoid"].map((kernel) => + chartData[0] && chartData[0][kernel] !== undefined ? ( + + ) : null + )} diff --git a/frontend/src/pages/Panel/Setting/Setting.jsx b/frontend/src/pages/Panel/Setting/Setting.jsx index 5cc75ad8..d63d817d 100644 --- a/frontend/src/pages/Panel/Setting/Setting.jsx +++ b/frontend/src/pages/Panel/Setting/Setting.jsx @@ -9,6 +9,7 @@ import { useToast } from '@/hooks/use-toast'; const Setting = () => { const [isLoading, setIsLoading] = useState(false); + const [isLoadingGrafik, setIsLoadingGrafik] = useState(false); const { toast } = useToast(); const getemail = localStorage.getItem("email"); const idUser = localStorage.getItem("idUser"); @@ -21,35 +22,75 @@ const Setting = () => { const [gamma, setGamma] = useState(""); const [degree, setDegree] = useState(""); const [coef0, setCoef0] = useState(""); + const [isChecked, setIsChecked] = useState(false); + const [isCheckedRBF, setIsCheckedRBF] = useState(false); + const [isCheckedSigmoid, setIsCheckedSigmoid] = useState(false); + const [isCheckedPoly, setIsCheckedPoly] = useState(false); + const [kernelData, setKernelData] = useState([]); + + const handleCheckboxChangeall = (id) => { + setKernelData(prev => + prev.map(item => + item.id === id ? { ...item, statuskedepan: !item.statuskedepan } : item + ) + ); + } + + + const handleInputChange = (id, field, value) => { + const updatedData = kernelData.map((kernel) => + kernel.id === id ? { ...kernel, [field]: value } : kernel + ); + setKernelData(updatedData); + }; + + const fetchDataKernel = async () => { const token = localStorage.getItem("token"); try { - const response = await axios.get(`${API_URL}/setpredict/`, { - headers: { - Authorization: `Bearer ${token}`, - }, - }); - console.log(response.data) - if (response.data.length > 0) { - setSelectedKernel(response.data[0].id) - setSelectedKernelfalse(response.data[0].id) - setNilaiC(response.data[0].nilai_c) - setEpsilon(response.data[0].nilai_epsilon) - setGamma(response.data[0].nilai_gamma) - setDegree(response.data[0].nilai_degree) - setCoef0(response.data[0].nilai_coef) - } - // setDataHarga(response.data) + const response = await axios.get(`${API_URL}/setpredict/`, { + headers: { + Authorization: `Bearer ${token}`, + }, + }); + console.log(response.data) + if (response.data.length > 0) { + setSelectedKernel(response.data[0].id) + setSelectedKernelfalse(response.data[0].id) + setNilaiC(response.data[0].nilai_c) + setEpsilon(response.data[0].nilai_epsilon) + setGamma(response.data[0].nilai_gamma) + setDegree(response.data[0].nilai_degree) + setCoef0(response.data[0].nilai_coef) + } + // setDataHarga(response.data) } catch (error) { - console.error("Error fetching data", error); + console.error("Error fetching data", error); } - } + } + + const fetchDataKernelkedepan = async () => { + const token = localStorage.getItem("token"); + try { + const response = await axios.get(`${API_URL}/setpredict/all`, { + headers: { + Authorization: `Bearer ${token}`, + }, + }); + console.log(response.data) + setKernelData(response.data) + + } catch (error) { + console.error("Error fetching data", error); + } + } useEffect(() => { fetchDataKernel(); - }, []); + fetchDataKernelkedepan(); + }, []); const handleCheckboxChange = (kernel) => { setSelectedKernel(kernel === selectedKernel ? "" : kernel); @@ -130,7 +171,7 @@ const Setting = () => { }, } ); - } else if (selectedKernel ===2 ){ + } else if (selectedKernel === 2) { const poly = await axios.put( `${API_URL}/setpredict/2?nilai_c=${nilaiC}&nilai_gamma=${gamma}&nilai_epsilon=${epsilon}&nilai_degree=${degree}&nilai_coef=${coef0}`, null, @@ -142,7 +183,7 @@ const Setting = () => { }, } ); - } else if (selectedKernel ===3 ){ + } else if (selectedKernel === 3) { const sigmoid = await axios.put( `${API_URL}/setpredict/3?nilai_c=${nilaiC}&nilai_gamma=${gamma}&nilai_epsilon=${epsilon}&nilai_coef=${coef0}`, null, @@ -154,7 +195,7 @@ const Setting = () => { }, } ); - } else if (selectedKernel ===4 ){ + } else if (selectedKernel === 4) { const rbf = await axios.put( `${API_URL}/setpredict/4?nilai_c=${nilaiC}&nilai_gamma=${gamma}&nilai_epsilon=${epsilon}`, null, @@ -182,19 +223,80 @@ const Setting = () => { toast({ description: "Pengaturan model berhasil disimpan", }); - - fetchDataKernel(); - + fetchDataKernel(); + + } catch (error) { toast({ description: `${error.response.data.detail}`, variant: "destructive", }); } finally { - setIsLoading(false); + setIsLoading(false); } } + + + const handleSaveDataKernelGrafik = async () => { + setIsLoadingGrafik(true); + const token = localStorage.getItem("token"); + + try { + for (const kernel of kernelData) { + + + const { + id, + nilai_c, + nilai_epsilon, + nilai_gamma, + nilai_coef, + nilai_degree, + statuskedepan + } = kernel; + + let params = new URLSearchParams(); + if (nilai_c) params.append("nilai_c", nilai_c); + if (nilai_epsilon) params.append("nilai_epsilon", nilai_epsilon); + if (nilai_gamma) params.append("nilai_gamma", nilai_gamma); + if (nilai_coef) params.append("nilai_coef", nilai_coef); + if (nilai_degree) params.append("nilai_degree", nilai_degree); + + await axios.put(`${API_URL}/setpredict/${id}?${params.toString()}`, null, { + headers: { + "Content-Type": "application/json", + Accept: "application/json", + Authorization: `Bearer ${token}`, + }, + }); + + + + await axios.put(`${API_URL}/setpredict/update-status-kedepan/${id}?statuskedepan=${statuskedepan}`,null, { + headers: { + "Content-Type": "application/json", + Accept: "application/json", + Authorization: `Bearer ${token}`, + }, + }); + } + + toast({ + description: "Data kernel berhasil disimpan", + variant: "success", + }); + } catch (error) { + toast({ + description: `${error.response?.data?.detail || "Gagal menyimpan data"}`, + variant: "destructive", + }); + } finally { + setIsLoadingGrafik(false); + fetchDataKernelkedepan(); + } + }; + return (
@@ -220,12 +322,12 @@ const Setting = () => {
-
-

Atur model peramalan

+
+

Atur model prediksi history

- +
{
- setNilaiC(e.target.value)} - disabled={ - selectedKernel !== 1 && - selectedKernel !== 2 && - selectedKernel !== 3 && - selectedKernel !== 4 - } + setNilaiC(e.target.value)} + disabled={ + selectedKernel !== 1 && + selectedKernel !== 2 && + selectedKernel !== 3 && + selectedKernel !== 4 + } />
- setEpsilon(e.target.value)} - disabled={ - selectedKernel !== 1 && - selectedKernel !== 2 && - selectedKernel !== 3 && - selectedKernel !== 4 - } + setEpsilon(e.target.value)} + disabled={ + selectedKernel !== 1 && + selectedKernel !== 2 && + selectedKernel !== 3 && + selectedKernel !== 4 + } />
@@ -321,7 +423,7 @@ const Setting = () => { setGamma(e.target.value)} disabled={ selectedKernel !== 2 && @@ -332,19 +434,19 @@ const Setting = () => {
- setDegree(e.target.value)} - disabled={selectedKernel !== 2} /> + setDegree(e.target.value)} + disabled={selectedKernel !== 2} />
setCoef0(e.target.value)} disabled={ selectedKernel !== 2 && selectedKernel !== 3 @@ -357,6 +459,67 @@ const Setting = () => {
+ +

Atur kernel untuk grafik prediksi kedepan

+ {kernelData.map((kernel) => ( +
+

Kernel {kernel.nama_kernel}

+
+
+ handleCheckboxChangeall(kernel.id)} + /> + +
+ + {/* Input Nilai C */} +
+ + handleInputChange(kernel.id, "nilai_c", e.target.value)} disabled={!kernel.statuskedepan} /> +
+ + {/* Input Nilai Epsilon */} +
+ + handleInputChange(kernel.id, "nilai_epsilon", e.target.value)} disabled={!kernel.statuskedepan} /> +
+ + {/* Input Nilai Gamma */} + {kernel.nilai_gamma !== null && ( +
+ + handleInputChange(kernel.id, "nilai_gamma", e.target.value)} disabled={!kernel.statuskedepan} /> +
+ )} + + {/* Input Nilai Coef */} + {kernel.nilai_coef !== null && ( +
+ + handleInputChange(kernel.id, "nilai_coef", e.target.value)} disabled={!kernel.statuskedepan} /> +
+ )} + + {/* Input Nilai Degree */} + {kernel.nilai_degree !== null && ( +
+ + handleInputChange(kernel.id, "nilai_degree", e.target.value)} disabled={!kernel.statuskedepan} /> +
+ )} +
+
+ ))} + + +