From 12a8d4526ec6c90213d7458c4a8324fef93a93c5 Mon Sep 17 00:00:00 2001 From: Akshat Tiwari Date: Sun, 12 May 2024 14:55:57 -0700 Subject: [PATCH] Image displaying doesn't work yet, checkbox feature added that accurately marks which boxes are being checked, doesnt implement that within the filter though --- app/filter-window/page.tsx | 60 ++++++++++++++++++ app/global_search/page.tsx | 92 ++++++++++++++++++++++++---- app/global_search/styles.css | 32 ++++++++++ app/test_image/alcohol.PNG | Bin 0 -> 1909 bytes app/test_image/beef.JPEG | Bin 0 -> 1823 bytes app/test_image/egg.JPEG | Bin 0 -> 2219 bytes app/test_image/fish.JPEG | Bin 0 -> 1792 bytes app/test_image/gluten_friendly.JPEG | Bin 0 -> 2301 bytes app/test_image/halal.JPEG | Bin 0 -> 1613 bytes app/test_image/milk.GIF | Bin 0 -> 2285 bytes app/test_image/milk.webp | Bin 0 -> 32234 bytes app/test_image/peanut.JPEG | Bin 0 -> 1808 bytes app/test_image/pork.JPEG | Bin 0 -> 1873 bytes app/test_image/sesame.JPEG | Bin 0 -> 1978 bytes app/test_image/shellfish.JPEG | Bin 0 -> 430 bytes app/test_image/soy.JPEG | Bin 0 -> 1817 bytes app/test_image/tree_nut.JPEG | Bin 0 -> 1582 bytes app/test_image/vegan.JPEG | Bin 0 -> 2295 bytes app/test_image/vegetarian.JPEG | Bin 0 -> 1811 bytes backend/webscraper/food.py | 2 +- 20 files changed, 173 insertions(+), 13 deletions(-) create mode 100644 app/filter-window/page.tsx create mode 100644 app/global_search/styles.css create mode 100644 app/test_image/alcohol.PNG create mode 100644 app/test_image/beef.JPEG create mode 100644 app/test_image/egg.JPEG create mode 100644 app/test_image/fish.JPEG create mode 100644 app/test_image/gluten_friendly.JPEG create mode 100644 app/test_image/halal.JPEG create mode 100644 app/test_image/milk.GIF create mode 100644 app/test_image/milk.webp create mode 100644 app/test_image/peanut.JPEG create mode 100644 app/test_image/pork.JPEG create mode 100644 app/test_image/sesame.JPEG create mode 100644 app/test_image/shellfish.JPEG create mode 100644 app/test_image/soy.JPEG create mode 100644 app/test_image/tree_nut.JPEG create mode 100644 app/test_image/vegan.JPEG create mode 100644 app/test_image/vegetarian.JPEG diff --git a/app/filter-window/page.tsx b/app/filter-window/page.tsx new file mode 100644 index 0000000..362b2f0 --- /dev/null +++ b/app/filter-window/page.tsx @@ -0,0 +1,60 @@ +"use client"; +// AllergiesPage.tsx +// AllergiesPage.tsx +import React, { useState, useEffect } from "react"; + +const AllergiesPage: React.FC<{ updateCheckedAllergies: (allergies: { [key: string]: boolean }) => void }> = ({ updateCheckedAllergies }) => { + const [allergies, setAllergies] = useState([ + "Egg", + "Fish", + "Gluten Friendly", + "Milk", + "Peanut", + "Soy", + "Tree Nut", + "Alcohol", + "Vegan", + "Vegetarian", + "Pork", + "Beef", + "Halal", + "Shellfish", + "Sesame", + ]); + + const [checkedAllergies, setCheckedAllergies] = useState<{ [key: string]: boolean }>(() => { + const savedAllergies = localStorage.getItem("checkedAllergies"); + return savedAllergies ? JSON.parse(savedAllergies) : {}; + }); + + useEffect(() => { + localStorage.setItem("checkedAllergies", JSON.stringify(checkedAllergies)); + updateCheckedAllergies(checkedAllergies); // Update parent state + }, [checkedAllergies]); + + const handleCheckboxChange = (allergy: string) => { + setCheckedAllergies(prevState => ({ ...prevState, [allergy]: !prevState[allergy] })); + }; + + return ( +
+

Allergies

+
    + {allergies.map((allergy) => ( +
  • + +
  • + ))} +
+
+ ); +}; + +export default AllergiesPage; diff --git a/app/global_search/page.tsx b/app/global_search/page.tsx index 01563b2..718cef4 100644 --- a/app/global_search/page.tsx +++ b/app/global_search/page.tsx @@ -1,11 +1,38 @@ "use client"; +// BarebonesComponent.tsx import React, { useState, useEffect } from "react"; import axios from "axios"; +import AllergiesPage from "../filter-window/page"; + interface Food { name: string; + allergies?: { [key: string]: string }; } +const allergyImages: { [key: string]: string } = { + + + alchohol: "app/images/alcohol.JPEG", + beef: "app/images/beef.JPEG", + eggs: "app/images/egg.JPEG", + fish: "app/images/fish.JPEG", + gluten: "app/images/gluten_friendly.JPEG", + halal: "app/images/halal.JPEG", + milk: "app/images/milk.JPEG", + nuts: "app/images/peanut.JPEG", + pork: "app/images/pork.JPEG", + sesame: "app/images/sesame.JPEG", + shellfish: "app/images/shellfish.JPEG", + soy: "app/images/soy.JPEG", + treenut: "app/images/tree_nut.JPEG", + vegan: "app/images/vegan.JPEG", + veggie: "app/images/vegetarian.JPEG", + + + // Add more allergy-image mappings as needed +}; + interface subCategory { name: string; foods: Array; @@ -29,6 +56,7 @@ const BarebonesComponent = () => { >([]); const [showSearchResults, setShowSearchResults] = useState(false); const [noFoodsFound, setNoFoodsFound] = useState(false); + const [checkedAllergies, setCheckedAllergies] = useState<{ [key: string]: boolean }>({}); useEffect(() => { axios @@ -48,6 +76,10 @@ const BarebonesComponent = () => { setSearchInput(event.target.value); }; + // const openFilterWindow = () => { + // window.open("filter-window", "Allergies Filter", "width=400,height=400"); + // }; + const handleSearch = () => { const allFoods: { food: Food; dhName: string; categoryName: string }[] = []; dhs.forEach((dh) => { @@ -63,26 +95,40 @@ const BarebonesComponent = () => { }); }); }); - - const filtered = allFoods.filter(({ food }) => - food.name.toLowerCase().includes(searchInput.toLowerCase()), - ); - + + const filtered = allFoods.filter(({ food }) => { + console.log("Food Allergies:", food.allergies); + // console.log("Checked Allergies:", checkedAllergies); + + const hasSearchInput = food.name.toLowerCase().includes(searchInput.toLowerCase()); + const hasAllergies = !food.allergies || !(Object.keys(checkedAllergies).some(allergy => { + const hasAllergy = Object.keys(food.allergies).includes(allergy) && checkedAllergies[allergy]; + // console.log("Allergy:", allergy); + // console.log("Has Allergy:", hasAllergy); + return hasAllergy; + })); + + return hasSearchInput && hasAllergies; + }); + + setNoFoodsFound(filtered.length === 0); setFilteredFoods(filtered); setShowSearchResults(true); }; + + return (
{/* Title */}

Welcome to Hungry Slugs!

+ Milk + {/* Search bar */}
- {" "} - {/* Adjust margin as needed */} { />
+ {/* Filter button */} +
+ {/* */} +
+ {/* Allergies page */} + {/* Display search results if button clicked */} {showSearchResults && (

Search Results:

    - {filteredFoods.map(({ food, dhName, categoryName }, index) => ( -
  • - {food.name} - {categoryName} ({dhName}) -
  • - ))} + {filteredFoods.map(({ food, dhName, categoryName }, index) => ( +
  • + + {food.name} - {categoryName} ({dhName}) + + {/* Iterate over the keys of the food.allergies object */} + {Object.keys(food.allergies).map((allergy, index) => ( + // Check if the allergy is present in checkedAllergies and has a value of true + checkedAllergies[allergy] && ( + // Render an image for each allergy + {allergy} + ) + ))} +
  • +))} +
)} diff --git a/app/global_search/styles.css b/app/global_search/styles.css new file mode 100644 index 0000000..1fddec0 --- /dev/null +++ b/app/global_search/styles.css @@ -0,0 +1,32 @@ +.main-container { + display: flex; + flex-direction: column; + align-items: center; + } + + .search-bar { + display: flex; + margin-top: 20px; + } + + .filter-box { + cursor: pointer; + margin-top: 10px; + border: 1px solid #000; + padding: 10px; + } + + .filter-window { + position: fixed; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + background-color: #fff; + border: 1px solid #000; + padding: 20px; + } + + .filter-content { + text-align: center; + } + \ No newline at end of file diff --git a/app/test_image/alcohol.PNG b/app/test_image/alcohol.PNG new file mode 100644 index 0000000000000000000000000000000000000000..d02ae2936d726606ad2b505826c1f65a17ff0869 GIT binary patch literal 1909 zcma)6X;c$e6do{aDiAhVL>vMI7m``BP9!WzKxmD7)v9fs4NRFN<76Tc#Ug@&iW_w) zwQ5!BR_kspiX!4xaI0FiRf~1S71UboMkfgB509ts%$d3Gz3;pCd-vTt{WH@w7#U)oZIpXWcq?p|-r@{O-MFD&wUChjM_ftSDq- zjw4qLUaUSaqc7(0?cofJuEd#Bo3`(tyXaBVovD!t^Aj_VF0U+49k^`BSi4Vn_3VXK zw}28^;))S?^YxqSvnQNbzqu%0#dnUVTe7?qPMR3dlk*C#U%meL+D%U%Ha~4{X}NX# zTEnR;hmP%;Iq%86`}J!!G*oW9ccpP#?zGMJDU(CvPj1}8d52B(?^yssg5c=ZE~89? zK_kxN!Z$J5$>L-V&4UD;ZMNzp5BKbsfM!Z38L2eECe}cYH)rH=^su~v!^ylH5~C!^ zNnoN=>$I>In#Vz>g|XVTPMrj&Yy_-qbLNcAVe-jQ7w!J57<5=LO_nn(hfDIw}%sEI>~sRXSEQNo0}`k zmCI~gHiTdp2EizVqEZ1NwNJA0xKnDi$8>lw(sq(Fv%J}61zjF-!sg(05<%>XQ&?D& z>7`?#~ag2CwqqY~9C(y(+_FqebZiNcDE61YmWUX7{raye>%5hTr+3a6!E zSejm~P%9J)rLlvXX|?mXm84xkU0m}kF8Wrk*1*v?Z{vpBY)nVBWHOAy&U3D15LL-w zu$KuZ%~sxKAK%+`neB3E&ODK((m9(2Y`YDu`3)lEN(v_AS(ua{Rg_dgQ5q?shBZ=D zK@u361ru4QT++^`UdvoZ0{#~t5=2p?mN)YZ-CnM#4Bu`sW>?8*8QhvJnGrLgH?Cj%?P}w%S1w=r<>!kR&i{1o?3o`=pE`Ns zctiaU$BrI3e5meV?SY#8`>OZusrr8Rce{4(*uHJ+md)R8`ex&X_3PGtUAboUs;^eA zSpMa*FDgD?x@7U9&&n4rm_KiB*__$4N=s(WC@z{_IIZB*srgeT=S_0vPIT~gZUSqw zT9}+q%;U4OXo@88aUXy5;n*>wKNvM~#QVdC4IMIg&_L6G_ukFS=%1cuH0V=Pl9P0a z{j``ytx_uFC;~$=X+qyVy?e#Sy%QTFi3WQ{^@!{q5gr!WEhIQ7FhK0@=i9YQXCH4b zPY+QicQ*itel8N;$v^@i4A);A@NBJF!9F{bfa>+2UE>Axv9FkT#*7MSlBS1uAI^Z~n7RV~s5hAH!d5~Vd&Sd@3Y z%Fm*V-IWwpFX|Sps1MLZi8FTf?hd%S-vUA|#<=;3BcpdkNGd?z#2)_gUfwaD#F~Oo zVsNNemp)7rl6u4~AUs0k%>w;PLc{|a?AKBZ9xC0y+u{Q_u+P&czpisj$?7AXAdx4& zN~U=AjLSGYYh)Sey|Rl>VO+|Bg4zwfa{YxSePOXQ=oXt+6T3Yg%$HY^6_DJqPQGJvWbAQhMVwFtb_~QS04XTr+1(wRi*tY#{Un z8e{NMRt%P13F*TgEn&gw?udux$-077#U9;#v_+2>L>s)qiK0`_#6Vr=sJn+a literal 0 HcmV?d00001 diff --git a/app/test_image/beef.JPEG b/app/test_image/beef.JPEG new file mode 100644 index 0000000000000000000000000000000000000000..ebc97546e154c7efec21d7ad3c18c9decfefde99 GIT binary patch literal 1823 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 literal 0 HcmV?d00001 diff --git a/app/test_image/gluten_friendly.JPEG b/app/test_image/gluten_friendly.JPEG new file mode 100644 index 0000000000000000000000000000000000000000..3f85dde0002d756e91c7f362485e14c671ce5f8c GIT binary patch literal 2301 zcmeHITR;<68lFJtVu=cCXu(xGgx1y;azieOM7abAmZ*!ms1;2}29ioLV=_pjtxb^D z3rO9%t)+kj2sh;x6$r>BNFjhotCU--KmaRLbIzIX`~Lqw z|2H!Mf&Lyeu03E6OveM+Q10U5V#Xm=7C&dC=keULxuPg_^%vSwg+|5APCuAgcCx%f z(^)7jeykrg%o=_yX)i+6S-hOGSWP}sINCpUS(HCFJ!hCPj17!sayvdY zIky{98*_!1dv$$%&H9Cfg%WvL!O^1j(vG`V+e+nS#nD&$n)K5X)9InAj8Ikav8#n> z@o?AhykTA~yQcggGn=1V_f7raod>CV)9RBOviP|br*3HCDn|9A<)2qHWi;z=>3?Z^ zSQ@Jte=vSKuXT2McBE&d?RvY4XUuTsinyRuQKoO!cW659)!lDM(P=N->}lw&IbWN! zBUyK;vG&5vhE!d0aB9h?WjWz_Rf#o4Xz|p<)b&qFuYFYV=>ABvswF)%b8KMz$q3ZM6$B{h>OCKJun=( zbc(wKFbYcrFarASb_GL(Vm=%#eU4_c>49P?$`$jVKqiA=kR8P?zPBjLDEpZT(%Fm$r=FF->2Z*0^|Sdq`~by2NN|%;Lhl zVQzNj+4R)p(|Kf|5tGijNt*Nf6yirlEDJw0xe(kEdxTvro|H|dO+??zzRc1!IGVM}oO7gc! z-(39qtAAbi@}K9wNIaJifA-AjQ=fkpcQRHX|MbKsAAb~cTo!#S3YAKZBCuE#dE`T( zAR-*%^TN2C!-ql-esEy_zL0CKnv0?qXzpb^md;K+A{F=YoSg&5S5@+@53d_H| zVu3X`!vKK84Ayv!2b@gb9@F0vuv`RQU$IUj_zt()3KvN(*48E3U>#R|tmRnBot`h}*3x;DG!hc@y@G2V^eCFzABxfy_o$0-hRl5OJxs!h5b8 z#7s~VPUh@PN4sLZm6zhp5Nub4ZDK4&q7g%FT(2{JdvO3uIp8hF`@f6r<2qmz0F3jN zj}unPEgdzS$7}i&m@S;r4r^q(*`C0R;RG>Xd87a=1x~Bh_ya(Dy{N_x;E}!(tgk3h3@y`-JA~`Vglw>7~A){daKfXPM%I6j>x|PD~@`d zKA}9b@k`v<+_&UwF$R5uUEn)Y`vnBo^YsK=eo2D`W}l*NJqCBvEYdC4&%gryiww5?}yo69uc{PT|Nw)))($Addg~Q!>0Yu;o84I#|5` literal 0 HcmV?d00001 diff --git a/app/test_image/halal.JPEG b/app/test_image/halal.JPEG new file mode 100644 index 0000000000000000000000000000000000000000..ed345b515fdc7df2526462619047781fc9a42d85 GIT binary patch literal 1613 zcma)6eOwb|9KW$4u+5QaCP;D~6k=?5x9!;OWXjkWV9pmLMYQtR-Nwc3ZryG$W+?au zn&C@jm{yinmRS^8nw6ziYWC(^rk43`R*Gh+z2V(t$RB?E^!)MM@A*C7@9*vT{jR9Q zWyQ%9AO&bo2Ckeqb!qp$(@l%_^v&+ruz8n4bC7T!E}pax#Lg~XeT=C&Qo)>zG<9}% z?$61W_Q9Q+a`#x!Ns6TO%^ML8ke+H<1S@GD!`Yzon>IrrL)oB-m>Y2i9CQ^^91-a8 zkXX!*if)k*wrHq79NF zy`F+U;C6Q#=7NT3LIw}-hr?t5Mhyt;_se-j(Lu44z7fVv(ZRC101cPYK|UmSXbGMX zBTKcrwWAo2@^s?@A%TtNNqJzJrTsJ~2Bo0TXhc%v#2A5*9*|_6yeA~zmN;!tD8x_% z<}@N!+-Sy41uka+isGo*ZpCoKX+kl?>afbrWCJ~klEy$uT!*s|&qYnvTq}m5XkjjH zL2%rJ6`}>W1-H0dF>VPL6iLoQ%T8r3bAxNSC6{mrG%4~z8PBt^Rw-fGP*48_5ovtpOTGIG}tEXnz#^5`krONLkx z8t!F+Re7-7i!38SqtbO2+{0E>-J^M9NNFNuv3nGyL-#P#oHW6LG^&cu|Ni~w@4v2I zx%}rJmwvx^q2v6y-+uk&?9XRTpE`Ns__3ou9r^Kx!-o!jf8e|Q`}XeH{p~kjfA!_A zFLv(O{`qI0Zri%$laDul^x+4a-ru<4y?58Y)Bg5bZEwD@?)9~=y}IU=mtR`F>ctmU zKL6aaE0#aAto7-oPd)j>lEsS_wmiPzvHA0wo951$J!@uT!;I2OpR+xnffJ#0mG8jV~QHcFbt^sQX5i6c@P)osI%~{)pkW zykP`xwd7)ElMzK=gFffpq1i*S?zuZN0~!pb54tODU~0;MJNw_!ukY=BZcEnn)@syA zi3z>pRmwO801UpWlJ;aE2auNh&jeJR9Xqn;m1n{BHJ9fdU69FSrpKqzlLzIeZV*$# z`Rf*5*miFH)=V@2&Tmm{X->;trrUeGZNS(*i3>t##Zc{`ld~38_1hU=lre6qxov;1 zRrx@_r1`3q;DPj1MZB6%^jG_8blR-O`nip2pxoD6<+;S>$NG@XW5D*LzAk4#96 z6BLb#B!xz^q!6gr#kJ~k+Wf5z0-}tcu|lJ5O-#s|me%f5wQp^qHpVM8b>6nfOn?I- zOE<0sR9aPndV;z_r%uo&X*-m?Ixe0`E*dqaXwE7Zs<7r4#DT+BkFpm#w$Dz}PQKKN fWE^WAm_7lSy|}WuIW z2jZ$>izin@vnU9zVrK3XRFq(ia$r_$`Iq~YP5nVVrJ!`UCwBySor%G#j zhsV*O^6tT>$dIE=T@T4o8G57xW{jxW`2|nm$+?9^T_SIKcHVyfQDZOY?Ymhht5}#- zY)BWj_6}Za>MX5mH{C7D`k@N$BfeVS@nGaxL+8Ma=KJ2!Ijy}z_aBeVFT5|UZy$g8 zwxxHlXXq)GmH6b@t4CumHhM?F_ehE=n+>Rfm6es5xrNA#B7SDkFD>2qS8MaG))>+R zi5Gr6kXC5B@5t6K;*cTo*HhDXyC3U#@*Fuy3ybe3UQLoj=>wzBmseJ<)U@eS`0-~d z^r?Ja+C|o}^H!hBa!RUclFT>nW;O>LZ2WD&)LV4+dgJrglNF8kL^+pMR#uN+{CWG{ z!(ER?TlQVVwMJ#6G9oSK<4@`4O$LNqg>y??mfreA zFq#mU=n=a02ju)~r_bf*HObi790&o^I|k5tALsm4Ym8I8R7Gyt!420C^k& zBFKq>W{8N~2p;W_m>Y1&Cy;$8l8xga+;@U*GQ3P65^$wVP$u9DC3qPD!Q?Vd5b0tu;n9Wtdt(Bofc%qogltSV_2;#5pqHhEw zg(MM>2qXqLfk8YW2a1t=Krkvtv;Poj7_yEx%6uFftF7z`Qf zNg#XqmDQEyrT2>q z^K-K^)9gDe*oyfg@?>~u@bROE0}uN9dV9L>cm39RucN)~*VdNi zyLWCkH8#}O)z(y3-KzZM=8d0!y8h#}it@6nr6pH>xO}Pj`=Y{&1^>Em{@mF!-+lYd z>96ziPUYrgXJuxjr=3hak#hXlSIJ3<3G$=yM-Imwij~D2jFw8oQ6fkv;71$C!@8`S6hvB{3i%z3b$Rwht$1eAs1h>!dI9C^ECr1aY z;zA+q?f!1NWBazPHe0L_R^Z<@TUu=TE8N^{qp69pks-`L|1TT#bak|~G&R)KR8;`L zYC&DmmjQOlFQW2q323hZAvzZGsR`SBOcAarzE-4E19fZtWUFKy`AKt(kyoL|$S&>U z*wnU5jM zTrU)6P8x#|w+Q>?YU+8qn=Ip5ZBt%*lGAc5{Jt@~)1AImWyA=6DoQnp0`IXaNZP8B zc~h>oWtfFv>$sb5>ISVTu=KhFVsLYCAwby~f=}0lv5m)W+HIV!KV4r(R@DlN2+kg6 zSk#pU@@%EgGqlr;HTN}Tk75jhidob0rh>rjrsq|!!+>r_xn=?f$XD^w`iknOY8@IM zmBNH0D9F(Pj;G;Ilsfs5({M literal 0 HcmV?d00001 diff --git a/app/test_image/milk.webp b/app/test_image/milk.webp new file mode 100644 index 0000000000000000000000000000000000000000..d30958a6fc9da3ee34c9396ff4150511051894f8 GIT binary patch literal 32234 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 literal 0 HcmV?d00001 diff --git a/app/test_image/peanut.JPEG b/app/test_image/peanut.JPEG new file mode 100644 index 0000000000000000000000000000000000000000..4449bca624faec2015734a0fd92620ec12b29f2d GIT binary patch literal 1808 zcmbtUX;>3i6diUE5JC209l|04Sy@5?0U-fF8$>`s5hWx8#E?u(f<)Yq#oAU|Q4wT^ zDuUQ5h=@y7lvb&zR48sJ+FGTWg#ZEpOgf>0{Zaa-@B3!vE$7^O?tORevhYw}62lg- z1zvFgX$3~DR;wn*_niX#95^rlGOxA%iI)=amv06vJ(N4Vkbpo z>}XeoYJ6ByjFQ)fNsgkV71-gnozil&q;&D{jU59Gs}*P0s>X+;hp`1&?^{j&EX5=n{E z`0LxsXXi(|DiMLB-BpvaCj+NfDVpL{V*`rjjYC(3BXQ? zSToUocT)CfxNVneVnmHR9r+{oOQmJ*($XapZ#svr2;_CN;hVYg`fyookXof0I2}3B ze`logsA~M3wA@{GoGd@JT%}Yf&aNBnDj$D!>)oA$vSVb$xr9l1@7RO7q1KGSOKGD$ z#|K+jk|Gev9`HYggW4#L9tqMIA_nsH4;1qmOb#Rhlb{qfkAjk4x{3nXED9>tn~tON zsZc6AEK>kQXGX*@GdWBW3l$gu`ise8E}sjD7@(M&#uJjo6cmF6CqZOnuGz+-z$u7` zLqP>;4nU1hDlC9NZwwC2#QESrA3O%{=|v9sFi?m$ z0V|mtMGO7l3t3T6sUi`djKyYTWMDEpF|Z&7izkst8XE)x8bP3iTX`ae7|jzpPFtWs zLZ*Pt7qMX;sIkaMg40D56r%L+5V-sqvpgYYDjWPRJ{FI`X+oL?(&_&V<#K1x zLQxd-QSZMR7RGGlL)a)t2&W5}5CV79xZ;zk0*E1k1u-z3Hl4-DR9FNHQ(-Ev*pP{iOdp>P@nh43+KHj5k@>_Z~@dU^T!5Iynu5CSRG(@QtXxeYaQTR58YEzEfmopemeX-VXKYCq2?d+^FprzY*~CswNrqU=Bu3)K4GHVx z*R73`_9Tbmf>=I3bpMgxVwB7GMdz`{rSU=C?%5n$!=>3RzzeJj8Z zTODdp1L#_yS2|FW^a~9<^4;e(8yTcR30hiO50XNq~Zf?Q8UMKspyvFJ}(>W0@qqDPt zYbJJSwl)WHD^0BdhSwQy9o<$SvT|L$!@cetPhB_-x9N7DoqbKHg+rKjmI22sTGuc! zt35~0T)Ef2DKDwF*wPK_(7!vn&0M!<`OCd+)khK+#ue=g>TEx(V^_UF+ literal 0 HcmV?d00001 diff --git a/app/test_image/pork.JPEG b/app/test_image/pork.JPEG new file mode 100644 index 0000000000000000000000000000000000000000..cd49df8ba8ad23b442c780525f3c1a27a26fbb0a GIT binary patch literal 1873 zcmaJ>SwIt46rDhjMNknGw5UT+#6pruSQ9}50R$_GTR{aSBm+c9CME*}jLK$Pcf|#) ziUFKdX28{@Kx!GqspuX>B^(ZO%3`F8qJL!#kxw_>Jk}TuJ0d| zvC0&}N_At0oOeo|a!Mhtk@HVWV~W*H9n#oix+gN-Q<*g8*g)$ex!{cE`eWS-#n2m- zUa6KRln=e{Q`g>CZENm3a#bm*ld;Rx4G)yLP104x+OF5qmBoDpZ3?t{@a}U(YPB-E zQI*};cj!v*_GV>HlU}1$*WcGYlk595s=Ra3=%f7=HwW)L?>~L(L&Z&X?Y;iWJM!d{ z2EAcOHK1wl8EETPq*d!)DRs}~iqtB3QiZnry(+g!xuH&(((DUQ>yEc zDnwP8I9MZaq6h2Fg_iuAL6`&%`ayA>I=+RoR?4fX1pd$Pm|ZRab! zdQgF!R&K0UAZN7Q?+iow!Q0QIQAIM&ac$QdWoGTb3^4djGj%0gIgsqhLIo$mItR66i~U zLqEmBW&wmG6cy0P9hpM#`} zKB6Nc=;3@3%Hp%(@ZbOf#wT&P96A&Ng@*cs1o`>+dQm7LR6lQDKc+X67UW3@@e2%O z4s(MMb}A3%qr+Uz7cO%|uF(iQ0TwwJ7IM>IPN)#!fgcN|b4SjFHlp4qE@$Li0!QSM zv1G``YyHRzd<_qV4 zI@i?LP+wPDbGEvw^33T|Cr?zAA1^B{IaYkM=*ZziKOQVBIIw@;-uykgckSGqU$$&(x%CQh)o8*e*q>=+yC(N>lg=A+E;rY1N5aMs|luLSTgJ{88-8Zb9x zNpf-});6=e?HuhaXW3Zi?a3WA*$XHrEcCJ;m7hDs$NgYwfxC}W5t$QjT2?wXZ7ICR zf1y*z+^T~X=B}fs>`e*8nOmGMg#2*P#3Pc~%W*iyRlHfL86L2r+)JM+u}yaHSkJV; zhdMkgz&lLDLll?EVxFxHFxFyGlF5u1>*DJG*ydo$pKp;B7t-1=${ezEj0CrP5!L~b zG#6=5HqHd<4ujTa<e|;Z#OpSbMfv6o|6`$K}sFY2_7b z83|r9!J9e9(xQ9b&M&ZA5VpMwm)(8B%r@M4U|jJ$U_5T0n;_NYv71B2J`)LG$JliM zaO>P@Wy=b3-Mz}hVzIK^WQCh){AwW(&Mdb<%W4$sIN{^D3I3cC@H%iK&9NB|?Qw0f zt_x%IH1A_vD|Vd#@uGowJL&=3ga=(&H%xYgiJ&-DBoI8tiO8_OBRP3#^r9&xarq1| pcbheSdR%*UyWKQXdydoIz}5zJpmmT_*lu`nj;S*kZiNSC{|&MlB6a`( literal 0 HcmV?d00001 diff --git a/app/test_image/sesame.JPEG b/app/test_image/sesame.JPEG new file mode 100644 index 0000000000000000000000000000000000000000..5361c4dea67dd5fce4577167c65021e9f1b887d9 GIT binary patch literal 1978 zcmaJ>dsq`!7N0;M0Wlzg2Bhv}q7|!2W+s!z#6%2vD6S|XUFphpnam6lnLL_IB;o_a zphQ_qDn8J%;`>o?we7mtRt2=HwyyP2tlMe}xGJlz*0n0Gx^zOp`bWRsZ@!sx&;9+* z>z*@{v#eU2NC8rS_6*?mjjprDKl)(X+KZpHoj&q@*Og0cAMV+()VU+H^qsPzqX%~! z-rI2b-0Afdj{0Tp{SB)(2Hv{ab@l$;+cn-dA3nIhXWjCi#}8}$)Y>KUzWwU_*42y8 zpFCE#sQAJCd!ICIdD8Q!p?d!2mHy|?pRHL`eD~JPZMEgA=NDf7;?$O!g-x4k_HA5s zrTy%#y1;?Wp>HmpXEZnxSkgNvKRX9B6D+}f^%;IQL6*=gXrt%aod)RM$HyShP8p!ts%$vh zZK8|qQ_4K_tg`8OWLXJ`Q&7f4Q193I9c~BB5}@C~IK4W*0U{`ujn;8;SgnA-J_uW4 zfQ;b-FznOh^3b40j>-UUvU@XMTD>3{_@?Ik^S zH*0q}!LUWb=JK%yhzs_oEFA9a>=%ZeUU^?ma?<5c_zAZHk;4jyBb-_v+RNtBKZo&) zXm8#EH?7E}y)K`Jq&c{BfXtQe*BuQ2De?u*?ej2wc~Yc;W@rcPWW8KaNMA%;b5SSJwv^EWh_3i+Y8;G#@Vi>v2i*cr%+zflTVdeGy|M|10-1t9! z^zerV|GoeHy}SRpbNkl6yKmmO{;z9YogLqOd-cjUU;p#+SC`tqym;aKxi8NC*{f71H*4C|gCsh0P>Oa-2S{bZfvAim%|8^(`TZODvw!z`-mKi2IWwkbPy6lEtSOVN7PBeSI4NVIK|eu< zYc*;WrbH1~A(xFG_uAO>F|UpuC50s5Z$`e7HX=1eJbYMk($K^q3Gt%Aaf4!Ggo5ZO zeq;m>03=WN+&cpp4{$5|7YCwyTQ<9Uwl&AehE=wsaQcbvbBVjPX@k#nmNoImUyw9j zuSiR*9Ul1HVQH(n`mo}SB;Zi!T1%%x6*Ut`Er`J(7*@v!5;POU;)GOSR(yd#Di219 zl+xtH#7IyqiZ9II6~(BA$MAqSjZ_>XGz59lIXsI{fJX2~E|ehp1c@Hw1z!R6B4JXT zC?+}xU#gL+fk;$2F=`Bm%#Mo{NyjFA9g7Kuj|`5HVof!(W7ppqI|l9XhrrfAR4~1` zqqB8VtZbLlz326774gx0EG?gR%~TzkSlE%@(rpbI1ZY)yqvLoWnjewY5t0lE=8hhv zu10K?z;#Dr9#h}A;_wp>_JQh$u;_KF8gf5|@}h z?aSSWWDXQjgSHp)jjcg`d_pVi?u?C2Q4wq{v31y{p-EFuwkobFj;j#;CwyCb_$U*D)zlaCAxjlup1T6OAbBcF$ZXsIG<8-%kzQn#@ls znAco&aGWt14?|$b(yqawh`<4@7&vnAyQo21w+Kg#ZW}E`Qn#NX=o#bU;`gm+9a2&C cH1$IB0bzx7TAk>YzL7tOY&d5W8v$U#kF+Y}i2wiq literal 0 HcmV?d00001 diff --git a/app/test_image/shellfish.JPEG b/app/test_image/shellfish.JPEG new file mode 100644 index 0000000000000000000000000000000000000000..a8f88329516f710dc505e90e3cef934d45f4fed3 GIT binary patch literal 430 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 Celt%1 literal 0 HcmV?d00001 diff --git a/app/test_image/vegan.JPEG b/app/test_image/vegan.JPEG new file mode 100644 index 0000000000000000000000000000000000000000..8569db3cb1d822587cc6d3d825ae498137ebcb83 GIT binary patch literal 2295 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 IA%O4y1c$!xmjD0& literal 0 HcmV?d00001 diff --git a/app/test_image/vegetarian.JPEG b/app/test_image/vegetarian.JPEG new file mode 100644 index 0000000000000000000000000000000000000000..e4212835c7a10db66e3cad14267904aadc74e551 GIT binary patch literal 1811 zcmaJ>XFyX|7!Alq0XL(q&nMPN7GOvuvI3$KMZr~3gL69IIpe8sG z+^c}QqEbLe0uoRZswgTNRs>|rkiJk+f0W)I@2+#s_kH)CcNZ`5aUnBoFg6&C7_(ow zV`yk7UMW8GC??~{p@Wb1_7C<+6%m=0hxZmCy#qb5#bI)F+`eLAQ&;`1msb*0JNpOw ztF#q8{oQAt%J&tEN;Cy>wY2)flgvt4Y_Tv+EsZM{ovxHg72(a@4T-AVtv%W!<@@6l z;kRF1t^V-%K*^rBA75!Y>gw8SkCi8W8tA?G^77I0gu`XADoy_0qR_$5gDpMUOI0Ve z-HmO%EiYQ0Wj{aL*rh3{FYM~;%&on4=T+8=)~cH|m*N%T{Yr7x^E0LOg;HfiO-q%! zL2=X9k!sU$K%wX3qZOx>uIJmkj~g`KEKex|KRf1Dbp5Owx-6x8J=D0en@HC(T` zsO@e_DU}R-9=K3-Jhe1Bxim`C@m8tHFK<-J%Hk4LyYALz#}tJ=YACu(_v$HglmPCYqzydo*4C@e{}TUNF&NfmkR#f3C=eD6T-$KKWl zZ*JaueGNTr%y(`2koh{gKR{z3477K36Y&_#5C{Q+psj2!6>Pox00h`9D!A5}j;Hgy zpkTId1Rn~BSRTlX2w{?0pxYwARYVbScpL~}03yydu7DzgO_ZWSbeL-|Yyh0oB1;!(W#5CehvfiS#nHrOQqrP6UECkxZk}$lfk4-gtti z6A|w;!ll8?P!7aJM!2kRT-vByoe?-ZG%^k1v%?^k4p$*S>mL^Wyp6)m6`)Rz7)LQLZj~R9d1^DvFC978d0HmG|KOz1+Kh z-no72=8fyua^phu!A3J&^O)fip=wNC}@`0qpg#Gc- zxP7rPd!r>$dm?x5+POm<5iSyjg(3p}b{@>-Yzz6F9lUi5#9{_9HvhKi*Nq$2|FUlF zn$>{;t5*82SWfp_wseW_Vjpjsm#2rj+ajv#LJHZ1w7}WPk%<0KScm!Z=FXWt>*tyF zGr;M}coj*^JYtnF>=#@N}|Tbo5EOU9EOFfzFuoH9N|vU*ZlM%pBc6I;h*UX+cQlk9Zi zlFaxguH0~1s!a}NoNX{RTV`Su<(a$PV1-DyW^&pT@jN^EIJ~L38^)Yuq^GykHe+mz zOy9~e$Y;Hk>4u55)Ij6RnU)&;fLgr}f5gIhle_gPsiD4~{${PBoxU`l3}kIjpC!de z{PZXI`(}gDmJ|Kl&qq39@^9;BI$_w7Gs{z4*MbH>KID5=f9hh>^P4@@DLZFxv??u( z%$sW&CT%dWl8j9;$~377c(^A|MuJS{r_Yvp$E}{6Sncm<)HK)B40~Ss_VhAqy__|9 z?m6jA?s_(JT@=I_iad{%Jg+w2EU7!eW17EoeI%G*d^^KT4kDh_mn}Trx!(`XPnB3? n*gDxf)r&oMA4gLJ)xB?HdrY)}hi3=J&p{n{p(U>5!ZTzCs; literal 0 HcmV?d00001 diff --git a/backend/webscraper/food.py b/backend/webscraper/food.py index c46c69a..ea0e9c0 100644 --- a/backend/webscraper/food.py +++ b/backend/webscraper/food.py @@ -27,4 +27,4 @@ def __str__(self) -> str: def to_dict(self) -> dict: # foodObj = {self.name: self.allergies} - return {"name": self.name, self.name: self.allergies} + return {"name": self.name, "allergies": self.allergies}