From 6c5951cdfab5811f3b8178263a710d33cb1756db Mon Sep 17 00:00:00 2001
From: thomas fitz <tf00488@surrey.ac.uk>
Date: Sun, 24 Nov 2024 21:13:57 +0000
Subject: [PATCH] one

---
 DOCUMENTATION.docx  | Bin 14512 -> 16540 bytes
 backend/data.json   |  41 +---------------------------
 frontend/index.html |  19 +++++++++++++
 frontend/script.js  |  62 ++++++++++++++++++++++++++++++++++++++++++
 frontend/style.css  |  64 +++++++++++++++++++++++++++++++++++++++++++-
 ~$CUMENTATION.docx  | Bin 0 -> 162 bytes
 6 files changed, 145 insertions(+), 41 deletions(-)
 create mode 100644 ~$CUMENTATION.docx

diff --git a/DOCUMENTATION.docx b/DOCUMENTATION.docx
index f4b2d4aa3115cce445c6b658b1781b8a3edb7954..696ae9795f8a56845bfaa146287e1503b5493867 100644
GIT binary patch
delta 7496
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
LnZ^jQzux`_xwhXe

delta 5463
zcmZWt1ys~czuu(<mF{L~>0KHZ=~!5o6p(IdSQ_Ln-MJu0Nh2cN4F)0|B3+V#64D@W
z`M!JK_r3SKGv`d4i8C|5-^@JElN}7McBe)muyH6rcpw502*e6nDjIh(0)s#-HPjqf
zP?z^YBub}g7sSa;dX`%SZ+Wp|;V=2Mf8f&uVCi3_d~Uz)B*)Uy11A$Yv2j387oqyS
z7*{L>z&{?!6!wP-x_sKPh@HO3;l}g00iXW9X&xC7rglp7xr-_rjr9zA!oV&~Bh0*>
zB6>UU$Jf`Xf$69ukGW7Z<9-4ijcf+$Ndo>)Pi9Y;)`PxYwh|wUve>FXU1PtN>LNbm
z9K-UFUNJ}g#Vo&~AUJt=KC__0Ab%nEh8w@cI3C<CqqI85NX(PGOb3$QM21mn$W|#I
z478IM70gFx&^5~_J1*Qww#Ux*I~m!Sp3ROa8g@SdKPz07?Om*Lsu+H@3=;k^0hnZ|
zezP0FKX%T0#Mrkncj<hFUH1wbh7Ei<URgTF2Z6L$K_JrGlk;))uokp-weoVdaq$%J
zb#|IJGDNS6kp(Tiy&{fc63gP9YggQ!t||2tcGvTsYRLTxS72vn<Gh0h;(yQ;)YhYr
z{yBgBpvbmVhAMn@N4YSuO7d`JRp(`j3MVD?xz|WbZ9v$1a+F_Z=kC>S9-y7!Bx)R%
z_>9-Xdtpvw^3wNksw;3h&WbdRc0d#yWgIWA<hg*T7wCOiTo7iXYhojlA|IXB8KY<$
zJsG1iI7>kLwDQ;VMp+V@rFw8X?GSU>_N3dGj(EMn_&q1(?oLV$U5AtU4{oOSzCVRH
z`Vy|?f^oP!b9A`(CQ-rRMnDeecmxZp0-5yZFez8k*o`SAAO<Eu{6$)cE;rKiJ94Hh
zG&W>isD(_Vkgl`8Ax-NXMU@URMh&IQtosvXc#n3Ya%HpgNq;(!iU<aYzVGf=9Ml$c
zL4EY9N<D901ZH+sCO=PJUlcC%jJsIM&G%V8meOmTdC)dpISa2M2V!e7ISdKCDO%Kh
z$7~~i8pAR)=#oCC-`&qB9%|KG@x0qGQrzh0bx*omV0+3Zy*O<{5F+IrIj0!qtwK$C
z-$pFcdbvls$L^KwNHg;D+61VX3nceZiYgY*%D~ECOrVuC(&uhDUTG`k#}(-hQjF;3
z8j%2y`#CScl;cr1F)-g5S!~J3RTb*E+xNahcOvYqm_12y$L@<DqNbsfpC<2?sB~r3
zwWy?F*JAZ^CjJX7V}7{$jM<lW6go6tU4~I5dDYnmwhf0D4N$;BP!JOSkMp2wywVTE
zhkdz&5{shnj~qSkCfmTdjT8q|vP2nMiA20V_?uhA4F@+DErD;)Lex4e;bPd@wvC*D
z5t}RS2E9<{?7G#KJ8^$#Cgx>X@2hZEX^bBf-6U>}v#56HUe(0IEfZ9Pf(Kbrd?}u&
zbAcQDqB}$^{TZC_M8IpfzxXNYh#>4UYXgT=F`qPfUQil>^@3SL#3X9vr5|o~ALCDq
zzGlirqi!T6fX$U>tvM4?X<Hijq1WsTOzL;#Wj!}7ZaAWSejAIP4Dy!~yTDeVdNVU|
zyEB)D$v`!u^A*oZ3~aEg^{$B-o|Xn&M2Y(k2~9Lju#tRY0lQIBM)@1v7<Nmm2z&4@
zl2yX8fE4Obc@Z)ih-lX4Fkk7XWcjq_3VU!pwo5e%)GETPs?%+#aXv0{f|uBNa7G$J
zXy2A!#T8pa`eB?1<rm0m6+#oDZM>a3e0Uv_bC1ZwV&H3*XeD^hT~kI4^2%rZ5L_wJ
zZo6iCliwM%M+1Za$E#OKeAo--M5KPY6$ZgN<XR5zmz&Lt2r5oY@TYz~j#wPb$r}jd
zm^v;2>Xhv93l*Yw*%<C}?cTr6G4Xi@drG$yPzSjYrkTgy_*KK(JysbIZrz(4AbvyU
zX18oVw=q6S8&}s@At-}5dHRJTcFeBXJ;e-B%!)JH3~Ev}FiH|FXCS+HX8*ukp?Oad
zmN1s+h%e=qDCjkqb-}Q0GWuGatt3>85FLRFB=rB%!#{1ZiyebikBxPuToT)^xUCGf
zTb=rp4i6G9^0|*pysn7etrK<E=ITc_2rz^v{9-nAg1IXnvgU5nSIUe8Og%;sTjt4K
zQm((r4P-y`2fMw)&$wMnuTospdKC?cK|M=tO$Y-n9w=r~zF^q@>5H|7qM3&guIq5X
zE?uixc&JdMn9LGxTN^vC#MGs=t>V$frf!_1S-bG6_^Zr%7Ze@jM$3sdH#N7=QjhvZ
zRG?nXqgW%*kd$2_WZnN-#H;CT%c!sj^t2{6D}l4IX}`<T1l?}2bWDX&i0%|Wj!<wt
z;KDuW@>%pzb2&7Y(f*^nt7MdG`(p$^g$cQ>*uR-v>}mgG4|=z74aA*QmpD5I?kOE8
zWf55h@7|4OG0Pg|3;;Lf&oN5Qvrx{D=|quOC-nWEy{i5haMr2tf(jR_KFp&-3RnG1
zN^PZT5tn9C6&I#x>YaoZ5fT;behM4ewl^ZGEgHinNMywk6i?Y97uXj~8MgzX-e0a2
zkC5P3yRch&XVeF2^_{bJWgTy9&<RAG?*u#3UnfpcVNzu?^fJMB1oNSWSmb-};S6@m
z#Gya5s84g%c()!?pSbycO>TqCy&B%!eVtmgTVzner^EhH;9clKNV4p!k%-S_jk2|+
ziy)P*l{nACg40jViI+~;ZE6z0bo*fbtmDOt==G#hny`{CJ+|kt9N~e=KA^@iUJ=jZ
zQG|UHU2A9=4w?2)?TilCE5l;Pu$Tl}_qZiZJ{?ug%C5^(z6+x|KP{n+*j<zUeR@eS
zn{3R1#TNCR%*j~a#ve=)A+|nBF3LDUtTMCWROcP70>HBplqU+ee5U~4yBpWmB$jKx
z5J&BKvWH8L=(2;UHFBV<?qG!a;bL*<5MD4dvh+H6NCsHb_|OweyG|eV>G`&6CIT~?
z*aEKK+c%!H)B$Sxcy#P&Q*GABU{$K`X7!v5H#Xw$QTe_ZD#3ZhX4Z8L_P1b5s^l3t
z2-h>#tYD=<r`$2dy#%Ul!4KaoKAfy)-zcZ#8}e%X^*-$~w)^nI7&VW=$XWBlO#dJt
zqT^S3u*!G0sl^{PX7BcZ$g+F-Q>53STejKVXrZHs29F(pO^)7CtJ}BBOxVC$r>zQ+
z-_Ym1q|-Q?rODz;<2&B1jER3DztvH-L$=3I|MsI2o1T!74zZlERRnA44fnyqg~YmK
z+o}{6e@C}dZ6+l1^Y&zG!(|tV_zgA)baR{hUwrk=x=!op7B2|bX^`@Pfs_G<5C4K#
z;n$%V&-taFqvY3|)LG}gU4fLCWZ&@J89G|&s!~<k88vU+_o&Q3kGv3@8|jJhiTfH*
zn%Cz+vK3bqFvaUz##FT{N8<RzafgwYCfWR{si{-$r~?x5^*C6uKtg*|II<ztT8aT?
z1J6SU#wUhuz<TxZoK3xeSdX+#9}y%iDp%-Jr9O$zv1pXT-81G!*UZJ`P;pmmDYy=+
ztlLf8;13CP1IDM;xELXXV$!CPJ|bq6Io3*~6vg+pyYN$4w?%Gwmq~5zgurzpbMIbt
z2D;gBJpUl!K}QpL;_EGL*2i%FbKL)TAa#-Cg!p&FW-09ya6lk;OeP&WFnY*vRr^!-
zjgF%CLQ&LI{&2OOdJ!L65qDB5qtEnBCxpWYNlxJ&+ivjnxz7?~;%Djet4Nh$Wob4_
z%Hw$=K`d9rZFzGe*UiPH)AEC2ac#Ou8euI=iw{fxrQ7kP>)vS@n^9;c9ayPC+jOu)
zeTVb-xt?wq#EX?q8{2>o_>vs)q~%yLh1eM?fa97}B59+`{D+&M#Pl&_!}P&UeJKsv
zNHt%vEMASbKZU9YkRUpz>&p3}O~KFA(8%;$jpieZgWj03q}X+x6G%V7`m|8<rv%#n
zQpop{_o@8%!cUIxp?L8WxLSnwqoC9*75JYqc8V%X)XQy41;tp0fKYY$L?7mmpui4i
zB19(lv-=GC%-pYE;lNL30z%A4MvnvpGRU#!bCpOx3EV#v+Tb!KbTrOU*&OZ@Z&WQL
zEVELgQ}$TI!$1~-iO=<aic(I?`M}auy-(W&Wlf8k=8RNRp#=E-Za8VM+Obz=5+sM!
zh~M_>oW!=^nU)Zs@=%iiK3jS(8Q1usy`kLlIo^v9>UCwvJ;gEy0;|SI$~cz&w#Q9m
z?ptuArLz!^*1*xjesLpMUcEwfhv8QpD$0~Mqlzwcx}Z7vuSSF$N7ZLKTezMgcc?3x
zs-HU>IJYw0p%VRGy~6d}m0w6Wxgn+V+Bz=yn2EDgpv#9H$SXy}eCbd-Qf8(xl-sAj
zh&P@(LzlyFmFKR4SVNd`A33a^6Q%ZE<+DBr@g#cY53xI8*N+o(<SkBW5{;Pkh1%8g
zMdRR8I5^*1S16vIlUX7Ovq<esUeZqn9?`nk1`^wxC*7&Q?UIC1u3bza$G^1!MxFa|
zFVda{Qpz&}dZCGGB&LFGs`sQ=R`_ylub6V#++la@_DmH8Fx)|7oC6^{ld*jy!9ZMU
zsV(S+W1&CwGRlXF=p$Nf%-&hK-WBF?o-{VQA{o4>giO}Vl6I5X1$`p5dZ5~l?KJKi
zQ|9opsNS(r*+Y8&gzmQz&r$A(ionD`)E{=GInOP?w4mgHRVf*gvxB4Jm~kChIUBh8
z&S9&O3-xqWQ2N;+tjO-Q12@s!{oN#f!E(g*LFqd|Sx)g1&ptX)%_qU<V%Y(4E)N(p
z3&!>%RuIFTYjbZtv&AYg+M1y(yzyqQER&Rw-UZashBAGeNHJRLXbeZF)3&t^q&#m^
zl?DV5yV1^%_aS;RrpW`L%Oi>=WV+#WwLdqoQ`5I_uDVf$ChANU7bF^@fh^(_=p*|G
zEtu#=hnNEX*fv)y9<+Z*2M=0#xw9uL+{kfl!e{G3Nzw0)UOpE}5NPeD)f<(f%P=-l
zjl8m`aZ9n(n$IMa{-LtK_td(MWq0`_QbxhKjVSx_iMFjO>Acl2?1#opjzEfp@o=qs
ziiZB`m$t+K_r~Ug-Y=F^f+^-TajWaV6^GXiW##oP8T;$G#h_&A>g*tmqyU!k8QI}2
zo%O{7fyn-%X|}E|p1Ky6PB#DMX&6n{Y$1|}y|fEvzNI>v69_$pn0nT`uLxqj3+(n@
zKK<%=nMIrP(}p3HsFTs+&uqbwJ{c;92}7$BO8Q%a_XsLP7z7EFjfHcFyaxC8nywb8
zAl16-_2V&i&A|GL*WPAbGGfp2({R_eDT`8Un(G^pg#-p)IKsm#TRgtV)2mekh<;Yp
zJ`8%hm+?}x;X4bj#T+-Qb!b3bOL#%7ywG*QjGBjy!gFii^(Z4b9tRrxA^v*htah<X
zchIJxKI3EUd}WRHRxGuiI6RZ-aOi{&1*%eplQm@$-yC>IoMa3Zi!<90ZhQ#wNYhE^
z+jJL$sH~9>cZov5Yo&%!){;jn)MjuCIhR8ZCYR~LzA0@4f^a>xZ<E$Iv04AZ5ApI^
zg4cN~--F#JBuN^F`^DA7(6}J$T6$gp5!|iU`)VXSQ&;Q9_G`y-*1mT|c+Df(&(bX9
z-6%Rsv;o~;dGZiYt0F(&1N<wE`2BlcJR~aV5<S7z(>Z?fDZd`>rcPr%H2h4n)>W<I
zlYPMF_TKSN^<Ek=atpfcWHJ*#o`QYxh5iVEcpEa7$$L+RDgJ_gE{Veslh#H~T_Hs;
zuK5vXH#@rhBDj4w6yw6Sl;hE50<>lJeOTfecNcbftvc;?#FkfSf643|$lSe4eCq^%
zxye7O2bwfo+V|E?u(9h}#hJlCT*|;d(#L7f{n5w*lCO~llx1YP6|K+{kidaLBkTUD
z7a2jkdhxEUjNNWrRZjeAZIrip&Zt9J3X>cucS#GXoYX(-@%I1<$;XtX;rc@I_-^*u
zW@a{nMH)|i8)jb|V;NJVrXpU^<~N*jewwZkRo(UvM&&nu1@yI<wcFlD)ZQ}z?~;4O
za`^U_l{S;bX_iMNq+~aw*gD1<y@1}uRYfhX6s0dicY4%)YVs@puoUm(V^fdm)D)j0
z>&*>cc6gu)EpBiC4Kv$gJ*#})Dw;f*Rlei*)Jb+{3=w_K)Mnj*=y^_7TdFrxVz0GY
z!rA<}sd~cgfzEH^5)}@A!gM!Wmr)J_CM4U|;ML^}%HBvW=U&hISSF~=(v|phth3dX
zk?5{3Z)e^kb-OtBrWCVmRd%xYgH?KJ>xIvB{g`DQj&O1BVXlRcsu~e!kMzZ))T9xI
zG31RQii!HH>w8|gFPVM&cF^1(`u}AY^1tP%WGip4;9J8iV%7Oe-5N$)^YKR(l8&r1
zX4O4`g-NHlSD!NUR(q<f%X9DKG%6C}j7|f4=2J$inn<W?gt#kH_qmGev~<LqoCS&j
zB}1Y5{>j<KtnX#5a4CKRjq%%U#%5V|8)V0R!1ld6Y^6#Efe_M*E2XE%uFAZ<A3#g3
z+o=1@c*~{$RzEKquMhbC`1&+a>_E@3QZk6WUi6zv5F4LzZ{6vU+4yYPJ3;u9P%b!_
z@?^0u>^po3*3AXtO)o0*O#Gg)%oD6KV@dH~*$N~m@HO={YKrE4BS!A6;zsoP!4JB#
zyDy0L;`K$6tG*-4mkS)p0?x<=M8NxgM59>Jx~_7ia;e>$JoA79g776`*-CLX#3}U1
zWU#=F_Gc=rxp+YdqN%tn3vx2qD`xzdHuh7W9xCMjq)|ofsx$j@M=zII%Yf5p?xwiJ
z+?7(P%Vu#u;Z(Vqz@U0Hgu>CtkxUHircgzp!Su+-Iri9RWJ&(y*zZpz%tdSbT;w-B
zM7#uGhu>P^1{3m-{LbGJAtv{sHW-6Bc*sQmpK{pkE&HEPhv9{@GyDyEZ$UA`Urqnc
z=k8-1;Hp@pq?md*7sKCB@a})hYX5Ylp~0NOAs8cBI;<E5jJK@xy>7n$k==Z3EOjt9
zaC(OSeC_`kjS|2d%d#{4bI<>CdbAKm^bthyAAbXZNd6gqTVjKPK)3oH%EQ$SEokB9
Z_OHJKg}CL$w}I$3_F#cPGot^h{TGXP<!=B0

diff --git a/backend/data.json b/backend/data.json
index 22866e9..a5a678d 100644
--- a/backend/data.json
+++ b/backend/data.json
@@ -1,40 +1 @@
-{
-    "medicines": [
-        {
-            "name": "Elixirium",
-            "price": 5.99
-        },
-        {
-            "name": "Cureallium",
-            "price": 7.49
-        },
-        {
-            "name": "Healix",
-            "price": 4.99
-        },
-        {
-            "name": "Restorix",
-            "price": 12.99
-        },
-        {
-            "name": "",
-            "price": 15.49
-        },
-        {
-            "name": "Tonicast",
-            "price": null
-        },
-        {
-            "name": "Allevium",
-            "price": 19.99
-        },
-        {
-            "name": "Synthomaxi",
-            "price": 14.99
-        },
-        {
-            "name": "Magicure",
-            "price": 200.0
-        }
-    ]
-}
\ No newline at end of file
+{"medicines": [{"name": "Elixirium", "price": 5.99}, {"name": "Cureallium", "price": 7.49}, {"name": "Healix", "price": 4.99}, {"name": "Restorix", "price": 12.99}, {"name": "", "price": 15.49}, {"name": "Tonicast", "price": null}, {"name": "Allevium", "price": 19.99}, {"name": "Synthomaxi", "price": 14.99}, {"name": "Magicure", "price": 200.0}, {"name": "Paracetamol", "price": 2.0}, {"name": "Ibuprofen", "price": 3.99}, {"name": "Asprin", "price": 4.99}]}
\ No newline at end of file
diff --git a/frontend/index.html b/frontend/index.html
index 22a13be..c8e84be 100644
--- a/frontend/index.html
+++ b/frontend/index.html
@@ -14,6 +14,25 @@
         <h1>Medicine Tracker</h1>
     </header>
     <main>
+        <table>
+            <thead>
+                <tr>
+                    <th>Name</th>
+                    <th>Price</th>
+                </tr>
+            </thead>
+            <tbody id="medicine-body">
+                
+            </tbody>
+        </table>
+        <form id="medicine-entry-form">
+            <label for="medicine-name">Medicine Name:</label>
+            <input type="text" id = "medicine-name" name = "name" required />
+            <label for="medicine-price">Medicine Price (USD):</label>
+            <input type="number" id = "medicine-price" name = "price" min = "0"  step = 0.01 required />
+            <button type="submit">Confirm Add Medicine</button>
+        </form>
+        <p id="feedback" style="display: none;"></p>
 
     </main>
     <script src="script.js"></script>
diff --git a/frontend/script.js b/frontend/script.js
index e69de29..79ab2a2 100644
--- a/frontend/script.js
+++ b/frontend/script.js
@@ -0,0 +1,62 @@
+async function fetchData() {
+    try{
+        const response = await fetch("http://localhost:8000/medicines");
+        if(!response.ok) {
+            throw new Error("Failed to fetch data")
+        }
+        const data = await response.json();
+        displayData(data.medicines);
+    } catch (error){
+        console.error("Error fetching data:", error);
+
+    }
+
+    function displayData(data) {
+        const tblBody = document.getElementById("medicine-body");
+        tblBody.innerHTML = "";
+        data.forEach((medicine) => {
+            const row = document.createElement("tr");
+            const name = document.createElement("td");
+            name.textContent = medicine.name || "N/A";
+            row.appendChild(name);
+            const price = document.createElement("td");
+            price.textContent = medicine.price !== null ? `$${medicine.price.toFixed(2)}` : "N/A";
+            row.appendChild(price)
+            tblBody.appendChild(row);
+
+        });
+    }
+
+}
+
+fetchData();
+
+document.getElementById("medicine-entry-form").addEventListener("submit", async (event) => {
+    event.preventDefault();
+    
+    const form = new FormData(event.target);
+    const feedback = document.getElementById("feedback");
+
+
+    try {
+        const response = await fetch("http://localhost:8000/create", {
+            method: "POST",
+            body: form,
+        })
+        if (!response.ok) {
+            throw new Error(`Could not add medicine: ${response.statusText}` )
+        }
+
+        event.target.reset();
+        feedback.textContent = "Success! Refresh the page";
+        feedback.style.color = "green";
+
+    }catch (error) {
+        console.error("Error", error);
+        showFeedback("Error!", "error");
+    }
+
+    feedback.style.display = "block";
+
+});
+
diff --git a/frontend/style.css b/frontend/style.css
index aba6d5b..5a8c32e 100644
--- a/frontend/style.css
+++ b/frontend/style.css
@@ -29,4 +29,66 @@ body {
     height: 30px;
 }
 
-/* ---- Your custom styles below ---- */
\ No newline at end of file
+/* ---- Your custom styles below ---- */
+h1{
+    text-align: center;
+    color:blue
+}
+
+table {
+    width: 100%;
+    border-collapse: collapse;
+}
+
+th {
+    border: 1px solid #ddd;
+    padding: 8px;
+    text-align: left;
+    background-color: #ddd;
+    font-weight: bold;
+}
+
+td {
+    border: 1px solid #ddd;
+    padding: 8px;
+    text-align: left;
+
+}
+
+form {
+    max-width: 400px;
+  margin: 20px auto;
+  padding: 10px;
+  border: 1px solid #ccc;
+  border-radius: 5px;
+  background: #f9f9f9;
+}
+
+label {
+    display: block;
+    margin: 10px 0 5px;
+  }
+  
+  input {
+    width: 100%;
+    padding: 8px;
+    margin-bottom: 10px;
+    border: 1px solid #ccc;
+    border-radius: 3px;
+  }
+  
+  button {
+    background: #007bff;
+    color: white;
+    border: none;
+    padding: 10px 15px;
+    border-radius: 3px;
+    cursor: pointer;
+  }
+  
+
+  
+  #feedback {
+    margin-top: 10px;
+    font-weight: bold;
+  }
diff --git a/~$CUMENTATION.docx b/~$CUMENTATION.docx
new file mode 100644
index 0000000000000000000000000000000000000000..71e0a4a5c88b9740472e6d94019c79b2a49b9469
GIT binary patch
literal 162
zcmd-s$;i)5ELKR%EU9838gMg|Fk~>~GvqQPG88i?Fr+bL0!2Uue3#e(Bx@=l^c)9N
tBblIFnE3XeS2kGK-ezoCd(LutDg%S-ovW3r>~1qMFgAcynoT*o4**z!9pwN3

literal 0
HcmV?d00001

-- 
GitLab