From 41966c28ade0b25010598e4240201215ce7f6406 Mon Sep 17 00:00:00 2001 From: Snow Xue Bai Date: Thu, 19 Jan 2023 16:34:58 -0800 Subject: [PATCH 1/2] review fields clears after submitting button, delete button would delete review and database and viewport, edit button still in progress --- client/components/FocusedShop.jsx | 44 +++++++++++++++----- client/components/Review.jsx | 53 ++++++++++++++++++++++--- client/components/Shop.jsx | 6 +-- client/components/ShopList.jsx | 3 +- client/public/edit.jpeg | Bin 0 -> 118054 bytes client/public/edit.svg | 14 +++++++ client/public/trash.svg | 10 +++++ client/stylesheets/review.css | 38 +++++++++++++++--- server/controllers/coffeeController.js | 28 +++---------- 9 files changed, 148 insertions(+), 48 deletions(-) create mode 100644 client/public/edit.jpeg create mode 100644 client/public/edit.svg create mode 100644 client/public/trash.svg diff --git a/client/components/FocusedShop.jsx b/client/components/FocusedShop.jsx index d993cec..e612eb8 100644 --- a/client/components/FocusedShop.jsx +++ b/client/components/FocusedShop.jsx @@ -5,9 +5,9 @@ import '../stylesheets/focusedshop.css'; export default function FocusedShop(props) { const [reviews, setReviews] = useState([]); - const { drinks, food, shopname, outlets, parking, sound, space, wifi, _id, setIsFocused, fetchShopMatches, currentUser } = props; + const { drinks, food, shopname, outlets, parking, sound, space, wifi, shopId, setIsFocused, fetchShopMatches, currentUser } = props; const replacedName = shopname.replaceAll('"', '\''); - console.log("id ", _id) + console.log("id??????? ", shopId) const [ addReview, setAddReview ] = useState({ drinks: 0, food: 0, @@ -16,13 +16,31 @@ export default function FocusedShop(props) { sound: 0, space:0, wifi:0, - shopId: _id, - username: currentUser + shopId: shopId, + username: currentUser, + comment: '' }); + const resetReview = { + drinks: 0, + food: 0, + outlets: 0, + parking: 0, + sound: 0, + space:0, + wifi:0, + shopId: shopId, + username: currentUser, + comment: '' + } + + const changeReviewState = (e) => { + setAddReview(Object.assign({}, {...addReview}, {comment: e.target.value})); + + } useEffect(() => { - const query = `?shopId=${_id}`; + const query = `?shopId=${shopId}`; fetch(`/api/coffee/reviews/${query}`) .then(res => res.json()) .then(res => { @@ -30,15 +48,14 @@ export default function FocusedShop(props) { }) }, []); - const handleAddReviewClick = () => { - console.log(currentUser) const requestOptions = { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(addReview) }; - const query = `?shopId=${_id}`; + + const query = `?shopId=${shopId}`; fetch(`/api/coffee/addreview/${query}`, requestOptions) .then(res => res.json()) .then(res => { @@ -47,6 +64,8 @@ export default function FocusedShop(props) { fetchShopMatches(); }) .catch(e => console.log(e)); + setAddReview(Object.assign({}, {...addReview}, {...resetReview})); + document.getElementById('commentInput').value = ''; } return ( @@ -55,7 +74,7 @@ export default function FocusedShop(props) {
setIsFocused()} className="exit-focus">X
{ reviews.map(review => { - const { drinks, food, username, outlets, parking, sound, space, wifi} = review; + const { _id, drinks, food, username, outlets, parking, sound, space, wifi, comment} = review; return })}
@@ -138,11 +160,11 @@ export default function FocusedShop(props) { setAddReview(Object.assign({}, {...addReview}, {wifi: 2}))} className={addReview.wifi >= 2 ? 'fa fa-star checked' : 'fa fa-star star'}> setAddReview(Object.assign({}, {...addReview}, {wifi: 3}))} className={addReview.wifi >= 3 ? 'fa fa-star checked' : 'fa fa-star star'}> setAddReview(Object.assign({}, {...addReview}, {wifi: 4}))} className={addReview.wifi >= 4 ? 'fa fa-star checked' : 'fa fa-star star'}> - setAddReview(Object.assign({}, {...addReview}, {wifi: 5}))}className={addReview.wifi >= 5 ? 'fa fa-star checked' : 'fa fa-star star'}> + setAddReview(Object.assign({}, {...addReview}, {wifi: 5}))} className={addReview.wifi >= 5 ? 'fa fa-star checked' : 'fa fa-star star'}>
- + ) + else return (
+ {comment} +
); + } + const handleDelete = (e) => { + // fetch delete to backend + e.preventDefault(); + console.log('delete clicked!') + console.log('id: ', _id) + const body = {drinks, food, outlets, parking, sound, space, wifi, username, comment, _id}; + fetch(`/api/coffee/deletereview/?shopId=${shopId}`, { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(body) + }) + .then(data => { + e.target.parentElement.parentElement.parentElement.remove(); + }) + .catch(err => { + console.log('Something wrong with delete request', err); + }) + + // update the comment in state + // console.log(e.target.parentElement.parentElement); + } return (
+
- {Object.keys(props).map(prop => { + {Object.keys({ drinks, food, outlets, parking, sound, space, wifi, username }).map(prop => { if(!['currentUser'].includes(prop)) return (
{prop}: {props[prop]}
); })}
- {username === props.currentUser &&
} + {commentArea()} +
+ {username === props.currentUser && +
+ {setEditable(true)}}> + {handleDelete(e)}} /> +
} +
+
) } diff --git a/client/components/Shop.jsx b/client/components/Shop.jsx index 8169ac2..9c3e6c4 100644 --- a/client/components/Shop.jsx +++ b/client/components/Shop.jsx @@ -5,7 +5,7 @@ import '../stylesheets/shop.css' import FocusedShop from './FocusedShop'; export default function Shop(props) { - const { drinks, food, shopname, outlets, parking, sound, space, wifi, _id, fetchShopMatches, currentUser } = props; + const { drinks, food, shopname, outlets, parking, sound, space, wifi, shopId, fetchShopMatches, currentUser } = props; console.log(shopname); const replacedName = shopname.replaceAll('"', '\''); console.log('CurrentUser in Shop: ' + currentUser) @@ -35,8 +35,8 @@ export default function Shop(props) { sound={sound} space={space} wifi={wifi} - _id={_id} - key={`focusedShop${_id}`} + shopId={shopId} + key={`focusedShop${shopId}`} setIsFocused={setIsFocused} fetchShopMatches={fetchShopMatches} currentUser={currentUser} diff --git a/client/components/ShopList.jsx b/client/components/ShopList.jsx index 94d7ef2..ffed0df 100644 --- a/client/components/ShopList.jsx +++ b/client/components/ShopList.jsx @@ -34,6 +34,7 @@ const ShopList = props => { {matches.map((shop) => { //after backend updates db, should rename to shopname const { drinks, food, name:shopname, outlets, parking, sound, space, wifi, _id } = shop; + return { sound={sound} space={space} wifi={wifi} - _id={_id} + shopId={_id} key={`shop${_id}`} fetchShopMatches={fetchShopMatches} currentUser = {username} diff --git a/client/public/edit.jpeg b/client/public/edit.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..7848efcc5f7b419ea67251b7b297b83bf7ab9120 GIT binary patch literal 118054 zcmeFa3p`Y7+dsaXlB7{iMNCDh#O#XfBvT1VnvRH=&Q57|A>%X)9UMv%6~$%}LXpa; z9A=zVl4BIb%*ZLH88jAV*8FZAo?Si9v)|`^-{13p-~aEk>$9dk%$obK?)$p0>wA5# z?-srhG9lURrsk%QhzJCUfWMHi4KfDr{(FC>zvRF74d8BJF*J9k7)flKn8*@Hbgqcl zToGY8ga!SS`10M**FPenV&W1rBxg#^k_I2hk%dG>#Kc6!#Uv!e#lffj!S5mQxf1gh zuiiXEZueoyC8y=r1V$vxRNwNbL}5=oM`P`gGeJ_b6qV*LP+q!BbNPyux_ayMe_d~2 zyw$|iY@7M^z5DiCS=$`2J$mf;2}dVq7k3ZOvtDFxpL6FgTnr8g4U4>X{YF&u&08^d z5|fherlh9bdz_V>lbiSCX?|&0c|~Q_v*#}w8k=4>x4e1V%3^nZ=<4q2?fb|b86Eq? z8%HK4r^h7%iT!QLz6|WAam@we5)~I06PKJGmx!nrxWwj)ODtYJW8UW7l7~;rEm;#d zQ+`WC!lM!?^|gCA3P;Y=&r;OTWi91S5AE~F{9i)_qla60*nPy0B2tk2;Bc-tOh z-8?>FyGt_e!zArxL(rM^8_nGNEt5ar2KmpOzRQ%5#;;i_|5w|8&G}zz?XNxdKWkf7 zD5XwPdrTmo72MwELMU|iN4RUuM+mhfYw|S{(LggHBnGY})^T}zKjB|R25eNJs$7|L z!1bkcwkR2<*C66VZ=N9@%^`|b%&GH$&0QH8vj99ePf z;NB`c_XB=H=Uiu<6!xvz6@2FyJhIeB)sOR@&?JNmpfLhMFcXMU(HT^9YjS60C;gV- zCfq;zYRVB6ouClk!fo#v$l1{zyTvc;v)iGuQ--HD^wHi1qYT60T$qWA?h-@`irR!wFlmJlnkg%UZl?*M z;>AMfxd&PL?)^`XQESg$50Rd8#hYZ|9Ku2&RCQGdeaOd9H)+7f)qWL1)OsQG>_)HW zXqhK|FTYo;9?#l{9h-$ml<^buqW^3fYkzOKgM4ko1NweW#eQmS%wV}#?N3c!hf96% zz4987`J?o=LMVVvjOGz}<0MqIFonO!7!67hLQt>} zT3XN4iOFoPp0IC8sFRGxh(Mds*M`7Ys~HQS$X=t3P=w$*xf8{IUKa^1wK7ct!suIIJk{9F8a zmV4Z$JCSr7WBO0m%n0qfWnvbP@4~Rdb$K}iZ&D*0ii=22?c>(+y)mf8ZDdT;jJLa! ziU_8cNHEb*e|qT$Y?MRgKwFy^uu1ZV*{%Dbu}tGT0fw9( zS~UA>AmxZ>0DG$0xq3`GThUwI(m4oH0Gfk9)2cR(A+xF52|^%<7tG;*@Wuai$@+Z;`Xj zuifJ*g8W^Q3H3z7W7Dx@+WLj@iBCV>772XL{Irppu?&;I5BJBIK;At8fnxigRjsp! z2ZxI06pmIU1tuTrjBTg!`W(EbBhF1&dl>I`U-N7757#0l943^R0|F-mL)AM#l7fy;K8SmU0r^Crc(UdNR|+i)Cb+LqicrV zX{7(!i=VA+|E3IEMioKa&7TCVu}O#Bn%q3?LbqRR)wr5JEeV~s&pWLC_$iInlW1j#y9%xi|W`V}}i@*XLXkKrVi z-Fs!ss`1OF>gqvH*mP?yZcuA#EAsN0ACcSHi4EKFbd(T6S&CF27+u=}^DbtcW^5ck z5rBW!R_w)Fsduowb*fOs2c=P(vQ`q&3oXuVV#?sc`M59#p(m2vyWcP7T0LVD*g(9D%E{3+8%` zK4(09E`%(zfp_1HC64#=wcu<|%mi8pTDc{JkbFX32V6VYfr{6B`Gz!qdKC)0;W^8& zs7{ewvF(Kb*p&|I{bwYJ`YCZz=SKA@h%{J{$%`MHwo1Vz;`%K znGu8#tsl>qIwyoKCI0R0tm(Iz98I*o3Ewk0DuhHqH`%>Ey%iHQg$phcCf!o@3L)Gt zlR}7L&YQwc2(qUq2A-anSsmYZx}G;RJRvBU9uNb`hlG$fNyJ4Fa(PP60!#a8Fd8p} z+A@vN`bHttGYKY2^blyapD)G8##LGLmw*svEzI>`v>F8Sg^&Zx+#!Vc_7F_3;$5ME zaW=z&N#FiP{L%yvx=wU#dhK6xo=%72`Xz6XBrj*jVX z$d7ItfO~kLT~RQ1?EZQ~iBubrd)<>S-H$hSV<&xqpCkJwHoJBnLfW4ju{5tKTibna1Bn^6PG;fN_iyYs8=f&O zUSqIrfsJU=+!$a6$RrW}_q%w@o}K%++UwaTaKMh{3ZZky8O$77wqpf>>Z8w>6GFTs zB$SQ0WQ)60h-15%G2!sSqp7v&NYxfD=DdeCgC1^npFz=JcxAGu zySJnN-7065YSobteBmnE-ia7!QjP9?=nQ!y;b{MsYhU4GA@gY z94+1yc<;l}SRDp$+#z@xf!@^c@N~^EVag+O!!)#g8B5D}emKjO+sU_aXcFyq}rH5c1nQl(#nA8ZKNI45kPa~kNrVgBsHC)L^v zX!Z{-j}HJF48>CNS0O_8QrJxWDcR)<>7zSz9}y`eFqpao&`PYa=-Vz|Tt?_}3jO$%Y< z;wnp=eT$CO8>)87m=!C}%%vDrdN5{K+_8IS8vuSA~rUTNc$* zPB-8Nhv;Y?86{+pqYu1ZdgJ*jTXP)A(ea46#v_eu@!2A1*L^Q1{?gY4G?SQh=nmIL zKhe$hd&L*Vt~v_*L%wFAHaDdc6Zjy3&LLJ1L)zyR z+^97w-4gR0C$7%2-fP<5ou?BOx>GMbW}A`+K;aLJ*W-LVz4 zR^|M=C0Vi`Ps==cwscpjNof~kmZ#Rf1)_;VwC!=ijwUqz&mlQ85- zl}fMas^Br?5yc6bZT(;yM(@1EuUz?hb;J8&R+#rT2Bh99j;6fbc zBhgIE+$~vs4$C<48E*IbMi*+CyRB_|R_p9bdZJwu-eBx`s^?@~;^|FlssHPja8LY3 z4H+%Th3#X&0p31Z_+=9>_MxVt9@e$cm#tV2oaiqQXyF(#1`gBm)KB=4$&GM-!?hoA zq2&;F*ix(Cm!F~a>i)luy46X>W$yljeMJw>G*lCX&I#_3dr(7gJTI;D^AS;>TF$NF zQvfJ>8#5gud~E@MZT~9fwn)u=`{zIgK&+dB1rh{QWE$)u&lJV*(mH9#$TWDW7Hs0p z;`WMD2NJ8W+)02_QoqAvZ;MqG>1JjOk7Q@+M{Z+vWV+{a_E5}j)P;3T}5K6d_F|pyAW;r z%T14A@xCQCyXT~^R}9t^J70`*hV`-^T2FMsB__a)V#93=-atW%A(oXn-+}UqCPGSj zl6Q`kQYJm&@!rm^k>=qPugA@np25iQe)vd9**>{4E@2x{&UqXszjwLhxcd}{ZAyyq zoSn2cdo~g`b0y11xv}iZ-%sRSVi8J6kI0!e!MnnVCmj~I)O6)tDAae8FPS&c;ZmDs zdZpGenfP4(D)oapj|~ovCouE25XwH#%*RcwwkRBh8|7k@rq; zuVkKb^Jsg%WL2h7Xwm^oX<1&h?2Ai_&^?avuD6n(JdLrt6q@9HBHmf;KysAnsu6Sb zC@-%g2jXsKt=5RNG})w<$R%{bmBcGX8gwqTk`%^}MOPyC_eQ^Ba53e$`TZ#F^$=~9 zSuFgZqvN20Ww~i!scDMK%2d(9{IKQFoqx|IHXe-1+(Y0D@+c}jcS@%^*-ZaU;ap6) z5K<+F@s^&o$D1`6DIt#=R%pI`QRbiFVrzPNK0p3ciY$CRMhMyXpxWSZz9J%;57Lqm zrB1WKu1^S$~KfOder18(BIi8K4rV2tA3fy z@7Zet1(ibRyEFsj-TDc;o8RB-Gg`u2G!x&Nas}>u29N{Es@wDMkEsjcDgYIK02sf) zXsy~<13i!NqT%~x{m;`3BO*Pz_nZ99Ml+|u?U``hKG1!T3iyyO84$2Y2)V?s2QWV{ zu+Ke2dOfV;v1$R^&=-c_q`^)j#6Ry&$k4ZO`((Qi(%L?H??07s5b1IK+>M0(+P`c0 z=SIb*F^Io4^e^Weo=N`R@Yw(r$)U1fNSi_26<|D#`2S>$BokUjvxJZYKn8*){XpI$ z=m4?|zDUE+wjqgAhY*Iv6Vfa`KFlM(9#wl=Eo^o?F-)njB_7{zox((0HRw+llCAo=KxVefZDRNC_JB5k#5p%GE&Qn_`ZyAb) z#@rMh6``@=Q2GY0%)1sD?@SkcxxPugq{y`;cMy_!hk$mwH)>`3{`gyW?b_P5o;z)N zBPjwsb0-X1{`Jxtb48^i5ySUN zzE3rhF*bAFp=j{f)TVC|jlb%0b`Mi3IoEseF2Cze0KT;rm2w5&Wi9v}&%B2hJxO2T zr}Dbdl=~`FCWBf*Ja1d`Qkp#++`ic9YRy94i>VwOru})orBbQvrVJ7Ka9O(s=hLSrExId~MiOMm{beV}ZTmUVmvkSp zWz4p{c6-e{QgSLi*=aa?VldN<8HaD~M5RFND&dPrgV&9SR0^MfIJkLah8Rc`MbWrk zEX(eD_t|)e9J9@Rk*~A1m7Nfp<8msJkl>ojw%G7&YgDa<7cV-h4x-#7kKeuVsR*^Y z(X+qz9r>MCBR&fwpm=wj1OYt}S3QNB@&$h4oc6sxEl#mlEz=oHqH)WAkf{Pt8t}Hi zw(>)Y45y~AI#xSSCWMIbUTt`eQuPR0jkXU8p|ZTInDt-C8$OzUlEndM@}0sz%i`=3 z`9=+~j?9FC25x{cIMl)4;QhndjM?y+H=@v+SZu70E=x%j zLeYzX-%a!Y1e4E6smR|qe}@J_KAPW>PSc^m53u5GQ9Ail%10QGSBQoW*Bh#(Jo3x=CYgem#Xdbz(vV9J6n&t0RrH1G33}j|X zk{t>8uM3UYRC$+X1GRH^`l3!}x9GPBHt)X7D4nlh3L-c-9Mwzd*J z5X}%0SfapC1ocqrX`H>8iXY=;v*Jft_<_76m&<;OIl-p%n}p0V=XL!ASwFL;!{ioX zvtxuwlfjuPHEJSenY4|L&f)0Y`Fz~%IkZX#J+4}olc9uUl`Cbr7<7by zIMM#&WM!J~Z{6k(NTlK8F>G(uH<9+w7L*1+3NLq?K=S{_OJP!92#JHxF36L=2fRj6 zUaQF>3QT+a-W<+_^k#GkQq)=PYp&7gC&A&p;V9>n#JFpvLg*;_LWzEpu~=3j1azj;?#^Mc3nu5eF)gGQmh zwr|{E*0=;-=>@j!jxIqe9Bbrm$muG zP^4=*94MRdv=dnDWX7ar`Q^Z*tU8ar+tNyE&&9+CcGBAL zRm!tF%N!PrvYG%WdVZ3UIQyzC(phD7b-V3`^VJ6t-?DM-*{$jIt48m=(JH(Ib^x$x zL1X-l;Po(Hzlo0Fs}|K2dQP1{dQ4WZXfk@`Uirk*BHSL+aKqD`WbF@Yw99|HrO6oz zR5xCi;_G=XH0`&>IV7Wi=?4#2JD+JP?!=fj=$4*dtY zxX_&Hl!7Kb?JXn58jm+TZIfRSp<0x!1+H0FOBSA9k~-SD{I+P=PZzyN5Q=vjrZOHX zRgq@%{RFha{W`(yjf(8$IYo2&?$XNC^f{wDsHtRPg^#VpJQwAi39?SlWmMn)o~$#V zqy2y#c6?%17(k2w9F1t;`3llZNxu9rb00&_NYN$N2Ujkm*kPKDWN^Z!_T#!UGiQ29xNPr!w z3bnV%iJRk>d&VhxYhEj(tmE_(7RCf$DBORyVwHJnpK{Q$W-Bed^mhB#Ne|yuEWCsk z0GM?<9$DE@j6qhW3<&P>cOi#UZ4sDlb(zJ!AbP0qtQy;a-eW>Ka; zKKIq6V*XV#g|7Sw_bQUNd^0zIa`!7?BlA0$2x=W8ig>)Ho&{(h93@NZ{^R@ypL1V7fI}Y8XXp9Og^xyw6ZM(&#QF65g^m-QbDKULSnR63qw2<2As+L1061~|J+$@8c9`#WJphYGo8 zX-k~Yg$?4V`N5%v7OCf*JTfrbFT5O&c8@3xNjTsb`Rf}&1pXNQ3JoB#RoIynkd?_A zKd-|-&`DM7FqVFyz^XUYPnwv%-;Z$bq^rOB=7vKjp3;k+sLzbww_?@sLIRq>;Fwbp zjgArwvXoYg7^<+O{Wnx}DEkrJj(c%~JLP#Z^YcP;Y}lp-YN5J)ybN54&%W->$$d^o z^mTS7q^3uox&vW;0~5XpO!#8T47fy-B3j0z&M-OJi3vAalhsHvTFXC5BW%+nD!Q(# z&px-UVfJ0SI9#c+N%`pAYj;=OJAvx2b`IJ3DsleI_9+_2fq~#iWi(_Nwyc_Qu45+7gQ1GPbuetuQ7WUT zhBE056nST_)$RSCX?d9I9Ai1+Q#v)sAY8>Ql(c-o07= zbgCF-rQcp8kekQWyo74;_i}e;bP__;HZ%_#Ze~;ET)ob;yBOR}@n0Ny;CPhPkqFa* zLpgcWlZv_ZCT^sKzmix{`Y}3}Ondf|h zGzV!bldF-Bp&-LH&hl+7T7dozwo`GZ4v6QTfK z@rYD1e;;z#7Zc3)O|*M!!#{wS!|-f??!s(q%dE;RAsu@-UHnJYMi(Ab%rfzH+OM-D zn|`Ic0o!IEgl5;iImdg43{Q#p`E#NN#W->mNLBcE~ zbBDE^Kf%0dF?RVaWmlE#+@_Pqf_TkR*92s+U#|mbc^GV5bXLX`-nm1bGM`w+>IelP z+=E!IFKb4M*C{^>CShL44X|IWO#LlNCx1_P;Gud(VfDc_gA$M2*7Hj19zm2;>+f?J zT0ejg&=*j3|CfcI-MWAJK&X?f8w0-Z4;hHU;pyx{k=);KMuXduqF)FLCQGJK9zX>& zG1|BQ&t18Zz^7A*lVeFgL7=0#UwIk-YM7N+Y_CVmh#o1(GzNS3C$QrO=oRFSet+;_ zQC1Lp=%Z7{V8)#&Hk<8e!wQk^D{Y}n|ro%94{n2ecq&#aTI?1 zj+|L8rBKw&xToNq zVCGFcXBVzDlGohA3?8_}O{w5{ozXBZcPH!b;dGpHYu&O%kXK33q?&PxqPAqMeE0ED z!M*k23)AF9IG+CYQwz`vMmA=!i`!Pxku^Nf&kQ%KXkW{9NLZ+(6goSC441ZUIbms0 z9>1b_0i`OjH-G;fOHcRH?kjcaHn}^aqdcca5_Z>=O9in7d z*1nyugP6E0K4n)Y8|@2EaWPt5l#7-(5RV$_?{UtxExEE!i=>-c{VUoDA0oXmZuDg?n5abhrzVr)xUMu@y0~?_Kj>zk8MNrrn`%HFUMj zSfX(EmH;dc_yTz5Wri4o8I2cR<)_4)SY>FzO{`cK)xwxh`Q>2WTzVcm?&u+Sz-=Yl zyx9#`GPxn@l10Pqk@6wzF8b($t{J%3Kcdn;s-W~I_(y2^dyuwp@M~?-e+mZs!wK&d z`wt;vV4QnCv)Ae*?|jb{|1%(rwm#G3TO++7NcvMW91!CHFYaex`rm1&TSkGIlz0uy zB}!IDrII;A!z|5GayCOAeM2{@TNYbN!A71=b7sis`u2VZ>Zqcu4m@;asasbP2MyM} z<8S43d1ULVC6T7+&Hf2L@HGIXFPTeGflGGMRS8_VVyjl`AlNliq&Hd?QLn6^JU`l5 zwC=TPRXT&qaSD7ZB&So= ztExkmPfB-ir7!0aLxz)^^xW+B(r?_2cka1y<=N}l*e*`&jw!V&^i!MaC&&t0XElI<<*x%)20n_dD#%>X?U|oqXdOqhhIrxK=qR zudSTSJYQ&+ENP>+QDuLg^@Xz3Cy#Gd_#f8G87!2m;&#c4ptUf^f`Moa7n6_`ZA`RA}<_>FXD-bKnrw3e<#+sswGSz_$N=DPaMGZ&jbtbHnj4GD1n^SffB zn&<*7S8t;k|0#wzId!K<=5rPs#O~q?<1u^ROg0>v#6D}O{}Raqcjuq8QM6u-049o) zSg#Mdj=}7~AuIbSRUKI`X^#mdwR4wJ2PLOWdzH?{@Dfw(ufIms{1z8Py2`ljyYwvL z#G}`R4(jkOs*Cr8R5wo-a$l(YsL#i;?m6SlGRz(=k-X6 z{qE1#ls4Xt6VrPTd-9cvKkvRzbF1g&l~j!uuU!=jPYv9IE2ntFf=qM?r5&5&RY_>Q z#&&zx=qiNd`1{>cZJcY@R=cqn(l&RT=?a|6-!E4jepHvOVy7}c@$$-oidDn;&PiU- zgu<=3TkmhZznQgm-piL&t6o+C-bSRk#k8bnLD>38Oz!K{Q ziDMH~nZN8IhfzU7mPd!OkhIR&vN_4l9QBfDeMLNmuiMOS?Hr*0!qqram5P*3Bt<`e z`miyvVa)aP!iZa+j^8wgBsn!xYbXF5$bkp1v9EK22dX(rY(k~X{u6m&lbxj$Te39~_0u9}vNJ1-OIVd4Tn zAp08uf3XmIT(g{^ykwiAS&)@QhEiFs`#m}N%bpt^&3?N?>%0R@$6f%1H zCiXlrXAUX{^n^X?}Xca_?lXiTm~6 zXibu%IF1D>GmS&q`srM3AgKWuN7-m&|7s0OcXzHddv3kQIr8}h8jtHx)jp#+HUsZ2 zYe(Jp%}}sfVi6i*g}tjL2JT%8m*D6sWiIhbf>3lu)y6yG76R+ib(2Gh%XdNgO8I3D zwZD}uc)xbTv1`9yqqTipF2;m|i4V;NEL|l&6%rql26&6}6w^e_IngD1CII5&)Gl9> zxWWC=+ULDm4Gh+K#*xfP-Ql+#z=Q!_CVs-qq2=%SR&x%arNl>882%Bjfgvy?)-JLf zm7mZOOnZ~ZGky-}OAd%clMt#==io900r&g9V}MhBgUb}rXS6Zb4v4|2N0fxnb_3()hx;Re|#^`NiIKuq3sQC2# zzQpecXJ5j-fc595q$m|Ocy4G%){}7|bYU}dCw?T@K@C3A@fM?ruJ&ar?G-}0)M7e= zCz^Rz{tG3irLIY2q69n}yQw8`eWsr%NZ6S%iRkVYcV_Jyn5SQ)Ol`v-C%qkkSG9Um zNTpcOb??DL?#MI1`roJB&U||R2eSTk5jKqj9;LNF*=t}JbRI6I@e^Ps0}|%{=mGZ%K(O(z^{;@69LBv#g=}MV!&g3 z2e)~*Pxk|IB75=d1TltK1AFpbo*%M;RdDmBp_c&`WWpqzt!Gw`+dDq4KYV=+@6c56 z(F6BqZCz(Ful&-5eOG=7Q`od$WFI7&It!W)LBFPa-B|xd-sO)#_&3tp|4QcR1b~@> zz{V?)HBttzmgquDE{639&^!sP9mPKTtI2CCPnRj&rEx_|=U=|Wgw=FUE9U3kx+)`g z;3%(1ajBAqDdE6uLNOuK;TOc1>s6}U5=dE$$k`Uw8CtU9d|ugUO-WC! zuwA!UV^^MH^en~h%E|Z1S@f(Zl>+m-c`@r%1bz1>0N5Nf1((c0=Y!ttKo^#A)mg7| zBbb=h@sgPR{bb|HKG%hcc-d@$fkGr!1nEm0X?3+r)LKS;pgJC-{WgSVRPsPu12~LJ z!?YUczwj3!R1Svicp2o=>^OHbn6wazX!Fn*Mh}92Y zH9EH_D@OXhvqq59`@-gcS3Q3XHcZnFpU^yQ| zM8NBQL?p$JFr7&v1I#gaU~CG189Nh4V#StIM7SDtBCBnv(ME}^xGn7U9mXy5#KVRZ zR_}P&ZlWtS8AoK@nv$io(Nu-dAuKh1zTh?;LSo#M%JbDT;-B8BSyjUtRv{m8X2$O2 zq=cB4&x~epfOQWfa`p}f#1Jb87nL6Nsu|U1 zq@Sc~`z@t2!eCjx5mz^YO@1i8$Az+x9vv%JXIhR<0lty%)rl)&Fk1wF$hwxC5TzK_uZFyDA&g&&Llv>?9r7XNs& zp(bZ73tvvUOj*yJ=Zwxpjx#%Ck+yQBJ*`QHb!#!s(aJYU)i*Nt>Q<9JY&y>$-4?R` z@Fr~OIA0aG9ul*or18NF&d%ZB$?^zbo(D27VO5PP+_MkbmaL*OF*7^Tcj%Y!o*d(D ze4YN*D!#?!$?}ZZJ32}}`I}FQz4Y zV9Q2ZvRzp&#dSkf3P>5}ww|CKoqJ?Y>x*A1Xztjk-oIlLX1*aJ8Z`dgSY9;PNtu2& zd3Ah|60gLu|3CdIE!wggNB1FE&1|O>&yM@-|oV((sZc+IX|vm|qV^?t9WS zG?4zfD{~vTUma{hMG7GNmDm{lYTEMKMV{ah6_)&vbWn@pI>Hu*%6T04WAZtBZOEaQw{=Zq_`@nMZQfR<36?jD0%F^F6Fp zy^41HTb}3tR|F$}jKiOmz=QPfAJR6vf2zE{Uic?utxbmAH$JCsd%v%}|52i0y6E6f zBpNnJQokm`96TMutHP`N*G~Nc^eKAcc(r_q5kBKFAZ-`GoWU+UOB6e%fJelEzC?iG z;MbJ#p9)Vv-zVCBth?XC{pTbtXf)D$M|?{UJ2uqyHx) zwCg_s3(#oJbONQN?$dvyK5<>7*AsXOU-gW>m%gz0ld1e5_R86MnpNijT*4ovFMiTy z=$$TE`46-iu0!88#b4aMKX~_FxqbiRTMq>;J~N-j`OPbk!HjJeEkg7;yL#Jy5j^s9 zPO23IC;8viCT>G^-#xfE46lSVNQ5p?dTEmz$m;vO)_;|oyVpFM${lS)jxiDW6~h80 zlk!=t_bH{dm!$3>`n*z(5mk(wRi@>ob|aa;y)h%=NOWcUj3Ap22fUuhJm}r^Y}{bS z$f`6I8_U_Z#U@q$;D7vYs+_>qbnq3&(V5|#9(0x)=fyZ%vaH%oskkGjBQV<;6UcYr z^|_@WBQKum_A!a7mLzPPUUI|4L#O;|sZ$;n&m*^Fy;Zq%0AC&4sZ=r?iibcgFoPvo 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νLQr*nLgq|Y3H}FnKIT~(SUjiJ7SGXV@D_t2UJIBDPK}w;I9>eIa`eRPuUd?B zF^B`0xQFNFW&9`-SxV+9y=`db9X(NpoO94ntLl1Ngs(9~d5y>17F)LmiV zdlK5=)mO~e@>Z@15WcTb# z3nf0@cW7ul4pzf(l^HAwSSC2Z-GCsw8wrgQ{_!gQfjoG?ikI;<>SWsO_l~6Jpo2o( zvI1Qf{8hF(2a|YwVzRHOMx^Xq`z6MfEu*%7)C^BCg)2e{A+ebA_@1oK*7XSdB?3nu zRIr4Ar#QlWh-XTYz%!l_u?OR;IzJGFMbrn;4&?qQeq>DcjV63FXwSn=J$HI247o% zqGge%XV|dmR zL?+28rKs#&vw&`2&mQedG)C5;KWfL_uSG`QCOkBTg4c_2l?kjN@Ur*8Bj9E0fF^yd zl{&oU+}|v+J|e`LVV`D>WEn4>$p$%%!3`XMSRP(`_n&AlzN~MaEm#n$9>tS42d@o$ zN#+?|FBy(Pg9rT~48W4VcA3aJInRR&$pFP1q7T53ybgw>G0F?iF&&5@aOzsY<%j=x znZmx%YJwbGB+QYh;4Q}ZR7?QSvsll0#&Nw5sQcuG59dz3=<6{Q@A388@6TF^IWcTm%@_#UvzT4u!{d_;WL3I6z6D=BQ_pS{+JH}CLs zP$)VD1??M{HE)~*N$-dXW)T?6$%TKpwY&kJk+d)EwGbZ>l3*x&EyTrr^(wi$NVS7^ zJmF_AcQ7cWzZ%-iIr<}C33zXWO%eDAmA@R(4*o$azJ=d!;rBlieq%@Rkfj*BenSyq z0*oA0;$-~VmaNLR-93Y;x2vlYri>}{2*avsasJ7zg5H-+1609|mKK7B>^>r-{qf!C zds>YZ)_QX0k%lN28pka=3FLU4voidhd8eNF*5eBY{y|9;mlmPfurDM zfTD38SEsPlGvI9;QVzET>rM{66<Fv%`DIk2z}+BZ`xP zYF8-;PYbepH2djI!ua4YqF8ST|97&so zs5=o+xw#AG&X7F+8$2NYlV`!>&BDJwhWq^q9RECk{$F;vek}Y`+b8S2s^x#Gx@rL% zE$2T~U9Cg>Vt1wf-)pF)Pc&mRFi1&2n>jx9g6+mz@BxSJ#`pA*;dAc@Ujfd{DpdZN zoGi!)Ktg^|?Eg;2_GeJ!Aphr|a027N&wK%LdIbs=Kz-P7VV=ATabAAKNO)tq1nPd= zDtzPXIp?u2`$dr0Z~F79zn+#w_)|X}Cci%a=W;S&X*JdS%N@Sdv1R@76XYA&oYxU( zK1Bqn^m$s3f9U@IE2q%l;P~6X117qE11Gz01JCK(z?)xl@@>W=bccV%5#ax=h2%dy z@csm`W|$}8_a-2YnfbDx0CwE6i0LnM|CQ|O?_YNMy>;ouw-1m@&MP!b1C>e(zvsxO zL^7q-Kn|QvFwll8j#|q%d-FCUp8lq)uAFi?kIUeAwqgbHW9(vCMvYt}HhZsddh4E_ z@1?7kJ%(xsGCucNME$KPpWeW?r}C|@e5TcX8$sXV3f!_l%Vq}oBI>lQfOoGik^%C9 HAG`ktg!jmd literal 0 HcmV?d00001 diff --git a/client/public/edit.svg b/client/public/edit.svg new file mode 100644 index 0000000..9294758 --- /dev/null +++ b/client/public/edit.svg @@ -0,0 +1,14 @@ + + + + diff --git a/client/public/trash.svg b/client/public/trash.svg new file mode 100644 index 0000000..ee25c84 --- /dev/null +++ b/client/public/trash.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/client/stylesheets/review.css b/client/stylesheets/review.css index 5ea8503..eb50a04 100644 --- a/client/stylesheets/review.css +++ b/client/stylesheets/review.css @@ -4,22 +4,48 @@ } .review { - background-color: rgb(52, 52, 52); - border: 1px solid white; + color: white; - margin-bottom: 10px; display: grid; + width: 80%; grid-template-columns: 1fr 1fr 1fr 1fr; - grid-template-columns: 1fr 1fr 1fr 1fr; + /* grid-template-columns: 2fr 2fr 2fr 1fr; */ + /* grid-template-areas: + "stars1 stars2 stars3 button1" + "stars4 stars5 stars6 button0" + "footer footer footer footer"; */ height: 100px; - font-size: 1.6em; + font-size: 1.5em; + float: left; + +} +.structure-container { + background-color: rgb(52, 52, 52); + overflow-y: scroll; + border: 1px solid white; + + width: 100%; + margin-bottom: 10px; + padding: 10px; } - .review-grid-item { display: flex; align-items: center; justify-content: flex-start; } +#comment { + color: white; + font-size: 1.4em; + float: left; +} +#buttonsContainer { + float: right; + width: 5%; + margin-top: 1em; + margin-right: 5em; + align-self: center; + /* border: 1px solid white; */ +} diff --git a/server/controllers/coffeeController.js b/server/controllers/coffeeController.js index d911ad9..d2598c0 100644 --- a/server/controllers/coffeeController.js +++ b/server/controllers/coffeeController.js @@ -21,7 +21,6 @@ const coffeeController = {}; //controller for searching for coffeeshops by selected criteria coffeeController.searchShopsByCriteria = (req, res, next) => { - console.log('searchShopsByCriteria'); const { quality_meals, quality_drinks, space, sound, outlets, parking, wifi } = req.query; const value1 = [quality_meals, quality_drinks, space, sound, outlets, parking, wifi]; const selectShopsByCriteria = `SELECT * FROM shops @@ -36,9 +35,7 @@ coffeeController.searchShopsByCriteria = (req, res, next) => { db.query(selectShopsByCriteria, value1) .then(response => { // console.log('response ',response) - console.log('response rows', response.rows) res.locals.readShops = response.rows; - console.log(response.rows); return next(); }) .catch(err => { @@ -52,13 +49,11 @@ coffeeController.searchShopsByCriteria = (req, res, next) => { //controller for searching for coffee shop by name //after searching by name, what renders, and what's the next click? coffeeController.searchShopsByName = (req, res, next) => { - console.log('searchShopsByNames invoked'); const { name } = req.query; const query = `SELECT name from shops WHERE shop_name=${name}`; db.query(query) .then(response => { - console.log('got the coffee shop you typed requested!'); res.locals.readShops = response.rows; return next(); }) @@ -75,12 +70,10 @@ coffeeController.searchShopsByName = (req, res, next) => { //and that one review will have update/delete buttons? coffeeController.readReviews = (req, res, next) => { const { shopId } = req.query; - console.log('readReviews executed'); Reviews.find({shopId}) .then((response) => { res.locals.reviews = response; /// correct response obj? - console.log('Got reviews!!'); return next(); }) .catch((err) => { @@ -128,13 +121,16 @@ coffeeController.addReview = (req, res, next) => { // } //instead of param queries, send JSON data with review ID and shop ID coffeeController.delReview = (req, res, next) => { + console.log('deleting review in coffeeController') const { _id } = req.body; - const { shopId } = req.query; - console.log("shopId: ", _id) + console.log('coffeeController ID ', _id) + // const {username} = req.body; + // console.log('delete review receives username',username) + // const { shopId } = req.query; + // console.log("shopId: ", _id) //delete review Reviews.findOneAndDelete({_id: _id}) .then(response => { - console.log('review deleted!') res.locals.deleted = response; console.log('deleted object ', response) res.locals.task = 'delete'; @@ -181,14 +177,11 @@ coffeeController.delReview = (req, res, next) => { coffeeController.updateReview = (req, res, next) => { - console.log('updating reviews..') // Reviews.find() //store old reviews const { _id, food, drinks, space, sound, outlets, parking, wifi, comment } = req.body; Reviews.findOneAndUpdate({ _id: _id }, { food: food, drinks: drinks, space: space, sound: sound, outlets: outlets, parking: parking, wifi: wifi, comment: comment }) .then(response => { - console.log('Review updated') res.locals.original = response; - console.log('updated original ', res.locals.original) res.locals.task = 'update'; return next(); }) @@ -213,7 +206,6 @@ coffeeController.updateReview = (req, res, next) => { //thisError occurred while proxying request localhost:8080 controller has to include recalculating averages, updating values in the spots table coffeeController.updateAve = async (req, res, next) => { - console.log('updateAve invoked'); // const { shopId, food, drinks, space, sound, outlets, parking, wifi } = req.body; const text = `SELECT * from shops WHERE _id = $1`; @@ -221,19 +213,15 @@ coffeeController.updateAve = async (req, res, next) => { const newAveValues = {}; // { name: starbucks, food_avg: 2, drinks_avg: 3} const queryResponse = await db.query(text, value); // [{ name: starbucks, food_avg: 2, drinks_avg: 3, reviewCount: 120}] - console.log('req.query ', req.query) const queryRows = queryResponse.rows[0]; - console.log('queryReponse:', queryRows); let reviews = queryRows.reviewcount; if (res.locals.task === 'delete') { - console.log('deleted average') for (const [key, value] of Object.entries(queryRows)) { if(!['reviewcount', '_id', 'name'].includes(key)) { newAveValues[key] = (value * queryRows.reviewcount - req.body[key]) / (queryRows.reviewcount - 1) //res.locals.deleted[key] } - // console.log('mapped ave values ', newAveValues) } reviews = queryRows.reviewcount - 1; } else if (res.locals.task === 'add') { @@ -243,7 +231,6 @@ coffeeController.updateAve = async (req, res, next) => { } } reviews = queryRows.reviewcount + 1; - console.log('total reviews ', reviews) } else if (res.locals.task === 'update') { for (const [key, value] of Object.entries(queryRows)) { if (!['reviewcount', '_id', 'name'].includes(key)) { @@ -254,14 +241,11 @@ coffeeController.updateAve = async (req, res, next) => { } - console.log('newAveValues: ', newAveValues); const query = 'UPDATE shops SET food=$2, drinks=$3, space=$4, sound=$5, outlets=$6, parking=$7, wifi=$8, reviewcount=$9 WHERE _id=$1;'; const values = [req.query.shopId, newAveValues.food, newAveValues.drinks, newAveValues.space, newAveValues.sound, newAveValues.outlets, newAveValues.parking, newAveValues.wifi, reviews]; - // console.log('values array: ', values); db.query(query, values) .then(response => { - console.log('add new ave response ', response) next() }) .catch(err => { From c4a35001f15da12f1d7b61863ff076584276a567 Mon Sep 17 00:00:00 2001 From: Snow Xue Bai Date: Thu, 19 Jan 2023 16:57:25 -0800 Subject: [PATCH 2/2] merged with latest and greatest --- client/public/save.svg | 1 + server/controllers/coffeeController.js | 44 +++++++++++++++++++++----- 2 files changed, 37 insertions(+), 8 deletions(-) create mode 100644 client/public/save.svg diff --git a/client/public/save.svg b/client/public/save.svg new file mode 100644 index 0000000..7d76e62 --- /dev/null +++ b/client/public/save.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/server/controllers/coffeeController.js b/server/controllers/coffeeController.js index 829f16b..0ed2962 100644 --- a/server/controllers/coffeeController.js +++ b/server/controllers/coffeeController.js @@ -22,16 +22,44 @@ const coffeeController = {}; //controller for searching for coffeeshops by selected criteria coffeeController.searchShopsByCriteria = (req, res, next) => { console.log('searchShopsByCriteria'); - const { quality_meals, quality_drinks, space, sound, outlets, parking, wifi } = req.query; + const { quality_meals, quality_drinks, space, sound, outlets, parking, wifi, shapname } = req.query; + const value1 = [quality_meals, quality_drinks, space, sound, outlets, parking, wifi]; const selectShopsByCriteria = `SELECT * FROM shops - WHERE food >= $1 - AND drinks >= $2 - AND space >= $3 - AND sound >= $4 - AND outlets >= $5 - AND parking >= $6 - AND wifi >= $7`; + WHERE food >= $1 + AND drinks >= $2 + AND space >= $3 + AND sound >= $4 + AND outlets >= $5 + AND parking >= $6 + AND wifi >= $7`; + + // let value1; + // let selectShopsByCriteria; + + // if (!shopname) { + // value1 = [quality_meals, quality_drinks, space, sound, outlets, parking, wifi]; + // selectShopsByCriteria = `SELECT * FROM shops + // WHERE food >= $1 + // AND drinks >= $2 + // AND space >= $3 + // AND sound >= $4 + // AND outlets >= $5 + // AND parking >= $6 + // AND wifi >= $7`; + // } else { + // value1 = [quality_meals, quality_drinks, space, sound, outlets, parking, wifi, shopname]; + // selectShopsByCriteria = `SELECT * FROM shops + // WHERE food >= $1 + // AND drinks >= $2 + // AND space >= $3 + // AND sound >= $4 + // AND outlets >= $5 + // AND parking >= $6 + // AND wifi >= $7 + // AND name = $8`; + // } + // const test = 'SELECT * FROM spots' db.query(selectShopsByCriteria, value1) .then(response => {