From bdb06d802b2450d8e6fefbb3461b406e9955b756 Mon Sep 17 00:00:00 2001 From: Bryce Covert Date: Fri, 12 Apr 2019 10:42:18 -0700 Subject: [PATCH] can edit accounts. --- resources/Fratello.jpg | Bin 0 -> 20812 bytes scratch-sessions/delete_fake_data.clj | 11 ++++ src/clj/auto_ap/graphql.clj | 21 +++++++- src/clj/auto_ap/graphql/accounts.clj | 14 ++++- .../auto_ap/views/pages/admin/accounts.cljs | 9 +++- .../views/pages/admin/accounts/form.cljs | 50 +++++++++++++++--- 6 files changed, 92 insertions(+), 13 deletions(-) create mode 100644 resources/Fratello.jpg create mode 100644 scratch-sessions/delete_fake_data.clj diff --git a/resources/Fratello.jpg b/resources/Fratello.jpg new file mode 100644 index 0000000000000000000000000000000000000000..22e35fb90f94015a3a1abeb30c8971f762bce4a6 GIT binary patch literal 20812 zcmeHvcU)7;w*RIVL8S|VAiei4ML@c=(7O-<1PC>u7YpE#dZdISRZ8dqDWQXk0s;yG zp-59ey7VeVenC(1zI)%j@BV(j_um~p+54Nd)~s2xX6?zW*?V&~cJ>LltfQf=0pQ`` z0a~~};A{q%Ru6U9dcnQ?T)n*6)YRC- zMa86qrPz4&9KcY|b21-*Bgx8(%E^n#v5AYzi{h{}fV1!EUpC@D{m~AN1Q7g=?aqzI zm9sT~`L7lvghc^aRc$>&!r!^;7ad*UaBq1L5l=s1hjV*`!Co+tKnHITF=0^=1?50* z2e3N?&gKYlfqE*kZ!|w=XM;K^vYSikiRyW)L0q9)!M+gVV0{yCusc}JiCtNVTp>_C z5atboz#Z5EVIH1-@_~x%-*wC5@Htt8o$b2_++C5~LeG#*&C3_UCMhf_EGmQ>3x9ET zC2}?eUnggI&@GMMRp7oUvj1*sKtOBn)d;)jk~5I?Xl)Ef@<@?<;L>EP&vfGe`I$W;OhRkHvgHc{Y-+qAtE4%pBKUx3{m%oc)~fz|3(QM>ipkWdCvJq zR{rxAe>Ttw{HLrp!q?-wZ=Jv*5Dy3pXNVt8x!B*>;{8X^{#osB-1aB?FRRWyDX-?` z;pJqyV&>kzmpB2fe;UiTTonEez;*$WS0|{{V!b0pSTiIqTjjS$3gy<7Z`DF zr1mXEb{s|63F;&-;q2rf>j;Jjft?^=AxSw0XCViOq?nMbgQKW}oP@ZPnB>nY41A%u z=yve<|Da0S(+}?835NV(4fNl!=6oFGEzV=W192X&itIAtqPW5)!X|cp{@&~FLYDs% zAzZg`esTDr>4&?&SN^N6sV5W{mg0YSQ(n)@3F;hl%K?rXpYwS~NK{TpOwQzwc}MsU z8*qM>SM!B9z`cA;yu3UV+5bmV*EYY7ZR0`|J?^pV0mXR zUzh{Vcqq)l1tQ|+4RQId=g-KK*H%+A^!0Lvdf@uv2hvn!(^glL7L${f77`c!;f%jz zzsDu6^Egq7?=uIR!jIt6g8Je57<4|F{63u+LwtUG`!TzCK)1S$=o;|7H_xZ2xKG-}3K&-1Q%K{aYUR zw}k%_UH@^{zvY2{OZY$0_5aOXJ0!C zTDPH|Uig;*0OkqzJztzzSX!}>^a1z)89)q(0e}P8&s)z}!{j_q#Vy>}&R1|ha@IeN z`y=0zYhXx7%aD!j59HOL*3tbO@zd z-a)ub#ud)S3+7|PrN**sT95z_2pleCh|A&~e4TKaHq6_>GY9~F^!dCNK>c^C^DmlL9stPh;e7M!Uo^)j08k$V09VHUqH#V2 zfJ>18P}l!cf9TKS<)^IzCL7XAJ5M1)fW`>J0sHY2VxILYq-*-Nso_~}7 z{G{Rkvf57?&f$-^#sQjwZvd^mFmSn_79d!A3lP#=00?ZdaU8rq$L%(m8E}5(nX@kb zh4*$9OQZxCt`ni7HueF(z| z;|S9UiwWxpUlR@y&Jb=Aej}nJVkQzGk|)w8vLJFH3LuImLJ}1cVTd}2hKc5h_KAs! z>4|xWWr($iEs5QTLx|&uvxqB+Ul0!v&k^sDkdQEv2#_d}7?3!Sz)7M>o{*H2JSQ0> znI}0Uy+F!JDo(0FYDMZvdY=?YT1whRI!L-mdQ5hijEhX3%z(^^EQlP?k`>qMW8Yyhw9V_@eejr;8C6GcML$ z9K5)GiR=>BC6!Bdmx3=LFV$S?zx3rY*=6p_YL^`@hhNUP+<1BP@*Wipl^B%)6^ts5 zs+6jmYKfYJnwwgk+KD=nI-mL#^&AZW4F`=H4VdNuO#w{@%{(nJEf1|Wts8ADEtwVXc*?HJa+3&MgvQKf4bI5WybEI&zb8K?5a_Vu0a+Yz9 zbCGe$a=CJ)admMWaPx4Rb3f#+=U(Eu!lTU-%u~iQ$xF$r%P{NiBo3~{UkrG$n=ghYeHmZX3rL^4}) zOo~QIPwJsmyVR+)jI^(Gh4iuvr_3FhOqo$xT3JKcIN3LHL~^Qf5ppeZU*)Cc;quk; z8#jb*xZfzfv82GG08uDVm{Vj|bWqGy{G`ODbVuo_(kJEX$_~nT%Ck2)ZaUp8yt$~t zr{bnkuClHws_LtXQ9V$TR|`{naf{%V=B=1ped^Tert0bH(;Dm=E*fPTo0?LZA(}6= zh_rOI9&3$ivuK00OSCt2WOTxGUh7im8tbO(&fey~?R&dP4_{A5FIjI=pG)6Uzuo{a z&^Aamm@?!s^f7EUA~rHK$}n00iGe~vUB)!V_Qs{g`zER;i6#@Kyru}#cC$-nHfAMe z2j;iTlgvL^h**SK^jb1mLMKv@jdc;?)To^7rmc!fA@j; zgQiH9$h(nqQJPU@(HEnAqema!c$o7G;V;l%`W{IRuf)H4{yOql`EhX)RZ?)$T(VwrT?$)DOv-MmeQGyS5}A`mo`y*K z^xN&<8lG@I`Sr<3x@-DyhH6G-CUfSa%!4eatikM?*%dh~Ik7oMPoYo8ay4`7^0@Pm z`NaAD`3nVR1zjjvR7oLIVQk@Pk!R7TVo>qx5}A^cQs&acGW;?`*>br}`Fr#&bVG$u zMQ$a1W$ZKH8RFSW)t#!5YTfGg8rhnPTCUnm3=Jlx4zDh#ZnNIC{!@cx!$6}>V|&w$ zCQP$%b5YCnmW)=q*2FgQw#c@#=fThSUU>473d@5563_ zHPngK#`X^D4-br(j*N}kjD8w(8e96{@nLJ+fBbmj?j+G<%+%#69a)qC~$OY|DmTIM?M zdhN!|jklW?oAX<~TW8yGJB&L;yOO)@dxm?{`>_4vgP23c!{V>9U%QUXj~0&uPDoCE zJLNlV`lkDB@(gx%b~XX10mOtv#6*O|#6-j-B*diTm&wV=$jE6gUZS|nKzrp111&v0 z6AKqB(^U>;dU`fNHV$qcK7Kw%Rv}R#UQsSyKHhUBc(~s+a#C^{a&j78CVD2`f4iK$ z0H{du>2?(i(sIL=?(Wua}8#(xp(23uBTs6QU0ZPuTen~H>s%Gry>o>#6#SOln zCw1#V(&m=BsS{2a1Fn^y+xemF+y<(1`rjCVM}Y{~HQHdrMVq zwYx%vVzsti{OhdQMCHt`h@j`HZ}k;0yZD42xO#D)$^Nc39<`+fm9^R5GyYEU55hn0 zpe3;}WD`^i9$g`qWt#2Ga>~GmC?Kfp{6O z$XC^Rj=m@}7of5X4J)jWk6s`;IE1uP1X%Rv9jE$Si zhcFE(gB$fE9cfxtO^+)<0b-dW%Yx;OaVb2e>p}CCFY;~GOwjrTTz1G-XBmc#->5oEwO1N&43wA?YwXkps6;=v*wX_w3H# z`mHu-s4zGCBsDXvOV+Y`FNt$77PcAhj4GS>5E!yLkZ^J;7eWA%rgLl0gz$B1h*`qE zGR5oK4XqVx__h`i&c~&@ulepTpmfaOd?WS6btNxlvgNwCD+(X@l&Bju*EbaDD^>d> z$Q`{hdK`rQXx@;er?l=@m-aqI>|vL3?fa25D;))auKsGSkDALN?qN!)GV;q^3eq(n zKY5)p$!@SUGe=c4^i#EUwR49G%a^`8OiOA)k+l07ts{uMXq(@34NHz&MUf7o`8vgr z8>SB&8;7hWPwCxFS~^^ehmAMl*k{uNKQE4dODac@i`JRCkkD~|RQTLzHC3AGK>2=g zjJl36C>!C)XN>%Sjk6Dxb`WwgKxB#N)lX+L2b4d~^w3stH7~Ney3{9;;PYEc_8S7W z$9DmIQn11SC9A^v+Dpx`9^8W`7nGdt{%ilAZ&B1aSyBB;Ayo=cz)&lMJBFKk)YFI)MP<`iJpjz~W)ABB3XrC!1M zYS$y5Iqx%)mFSYOUH!y;ixo`0avv>Q&;6|BF;Z=vbivB>bv_pBIP*(cboDpEWyw;$ zqUdbJxLo~-m(R0cA0~`?uN)w=Gb`r?$_G0+TTVON>UjxC|HU++7McXG0R*#tMx6`D zu=1Ex4$|(r2D?EFHoZT;EI>b|EOXJL*}GA zpvA^rMkz@GHZ~R6>rW-E_7o39k@lCraTku76zR;;fC|R9r@b)I$w;e{iElg{?>Tk~ zt5o}U!a3X{LLFqrsu~$=-EA655DZ=}b80Sw(N=vS-ibmYg{kk>ZZxI34W-&(eKrqc z-DL%*l=EAqd*Gp7G!njjlR+XcCfjA(`|qU2qQ*KqKMcleN`9Wl`JMafXQ#LV+_On{ z0ped?{7JRQS0#X0NN@UB|X<^Z1;);w8CUmbm^j0-a*iv z4iwm@7}gxG^`-Q{QE&0uc7-Uq98%gnR3xQ0w3m@4Cm1Z9dgF%uMN_a$YcJnb0e5*? z&MAJ$PvftA5-1{*Y}nkqNwt%1F%mxe6}O*s<@y1BR@snGT@%tg3h_w+yD@mzVoJ>1 z^wip>=fTFo7DM7;BM2_ zy@Q-J3U%3jUjz&kdDK6eMaT{onPq=8b*T}Q6oML|nBXPF?FyVNi8}B(hLv(w2dN93 zcW?c$hSceEG?9T-NmJ*#oEKkSxWQcA;6_~V>bimmXK4>c8e6YjE~2DYsbgIh5)%1z z?g>x-3rzD|=-r!fe|6_)bQia?cwX?5nHKg_Th*B|sz(BE+1s>7p>+}p954Z1Rkuer zq^_0~_v`ziwbd?~d@86(dugU&+LtS&x{pqkPfE%hH%e-sONQh_sR~wu^>}spz)6y} z{3)iGVK?gdp@ik`x>o1LPaoTY;Qnc6Mny_uL1_LmqvKuRF5cZYY`>nX|JMa?8z6k97V4|(Oq`FHv9!^revs)n zZn;CyZ~WY>rZCmYXEI|iT_AP6(hDP__R6oOjEg~5ExM|YaqEhr`)ISia2nO-$PHxt zwGsLeS_cwAP1*j}=)lf_-E?|$nk-(dUe~o68Gb%NwhYd=B|OGET7N8O2pvc!lluzl zy8ZE^+)c3~b9%KyXV*}$mg?eB4@x-M2Nh&faxx7An*Q@E|Ela zbjZsYmyotV_#~s|T{Oo1^yTaZGb-&&D}%I)JJ2P;Wl9jsYpim%D^e^d2qUO?-0ku! z!7N3G3+{5SJm#L%KMJLiW@5o$I{0_zP5TrI#=9mx??Gu(Kz6r&)xP{k+oBj*zJZuD zSSR#h@i%AXSt^$b-o^Ow`Frq4PLwtD% z3uZB!D*t-gS%$KGbn8y)Snp2*rSZ9Cbes|0fCkBk$Ha7o-Sv1$_D|MBF9_Rj0(bCO zUd>RuV+6*Gsv9%&xpT>65`D=JhY?z1I_arAipy=+M2%t4BMme~a2uD$&O8!grJR$3 z@;s5!eK;Gm_{mnNxD*amFJ2JSTk0rBlAtQ<_;fE8Z!qq;DL3inaRqKo{PY^2fwZd z7tiN}fbIBlP;FaH+>FtB!ADkV40koW)N65^x_|G32+CZeU>?+0dBshU9sg_-W! z)7JQoDLxe)K27Em)vk`tW=bRdcKV$n{`jsCB&e%-MTSMDNGA%V)%57->)QIQ<#a_W z1{3!l_@ue4?eW!vm3DjlGN%14tMR^?2TAw8WQ#jkxqCMhE)?s?26lc)4T*iTB9?{X z;?>V@_x%!IufH^0Y^g6^qE|0{*k6U;ksc2LQ3ZC+Cu2M6>r)kb{d$JnQc$|b5|1MUKNi2*FwQ6*=Uc}r)3S@x~H zjy5xJLQ&Njz^>fZ_bBgW+0iBClb32=tt?hzna=> zI4Avmp}7ed5)u;L{aX&rO;V@2$EXo0H~;-%1^xsnFlSq0i(v4o%x*bKx8vig%T*)O z`kH2RscPk;bcwQNkHW99Vd>&C{NoE&;UZCMdp=3M?hYDR@bQU@7zHwm{9dZ-e z+>Ly+9!>H%O`0C9h?GbZNS&B9bL%NsDSez-S8-C^jh00#g&ae|<{hRC<6Q@P_tGu8 zYOBCdhf+|0fN;Kr^ZsJYBRhUrijImO+wBe(}vnET{*{g{wv zx8_?;)Rk_3citloq3~wq3mPpY$hyJgxyH`D54uKWI^Lc-R9zK)xx@7XwsNJsdL^Y2 zx{2cV-Z#PYocmT#TKpAR>a-J`vVw@YEiAnBqO=*TcuR-XSDGiaMM0i6Hx3qK@2JSd znZxOL>UvbSBDpK1!owwXadkGvK*OXA5#U1y@|_?&g(^eSu)ziEn2>k;bT*lbGsUtq z{{4Q+xwUS{fHd(26fH`R>ygXbve`N3Ou>?p0He?Oduuyc==5Ar0aIoTE)5JS9ljA% zyj3T{>d@JQTwh;^Zz?ht7KhDqeHML;87#3i@y94wO3pL9{aCxQylvcMZ%}aL+u0fn z9X6@&vE0%7tyKlP2OZ4&A`D@aQ~Yp$Z7+?!W2Zr&RiJdZb+BZ(sdUk_PxppTr!M{N z#+hVwgW~d1o4!a>*cMEoD?zEoM?OXzT9ddWgIEtPT}U|XmTv*GJh4i)4IXR}<}FRx z!L;~>q@P|CmJc;)UUz;;#ryp=f!|}7;@(}3syWc?<&@;96yf#jFx}Us;|V_P-TEU^ z!5ckXCidfdWj3bkLJt?B7$wHKOTEoz)Id-i~gT_zau;*n%hEc3nmDZ~KwiT+W zNW^r=a_;yoRs7JAZHJKOI9e}(To2Q%bbE;^CZ=6Gl;VavzvR4r0d!W|MNUGUKlB&d zmx8}+S4!zb=_K`yb=2Q~f|bdUEhXa@>fcS6&=HbzdO87JcEc`S5#;Z#2wPOK9V_B& zd(G9&7Kd9z0*5)^FNYcJ7ZiP;r;<~bV38ml1*61>t(vD}ujrOrgg?H>3q|P(=hj$$ zD^+gkJy%jap5m*5)%|I5R9Q zVjaq1;)&_09E2I&x#&uxN=DVb@)k=UiWi%4d+up8>*Njl&mBrJ_E*73MJ>5&BXQ z%AYz%1_Ql{bxs-?uP7?kkrDN+DV~>{-AbLhGF00z@)2c7>jq@ zC^}@#g71e_bBt67LdQE*MwWa3xDSoB@<6cgqcG}<)jr{s;f!w)w$c+iBPF1Zvc(Ms zqoD@^eyiw}Y=%7D&cJ9R1ME7#aZ?J63I41qbpiK4L#b61iI3TpYlTbi zn=z)IsTQWNa-IZy%UGgh&%Os~0s2Cx4{HL~`_m0gmfA1K#u!~}Ol?Ydd1u;u;xa0eVf=+pz#-&VlwMzHlD=g>5shv`YIu3> zHD(_FuXgX=eo04M8H~jG_3lvG$35pTE?*(S8y)S>!q?YK{C7wW zBIj0BVD45Mm3)&u8L8x{2XaMm}gO~)_u(un@y^O}q zEmLIWLx~ZOP$yR9GZ*yO>3hZE6Xxsxp-2(s+0 zkDRVE@f-UDg@i`3&%gKHl4LU0RZdM)w)7DQBk^223eMz4G4dw|Mo@QiC#^fzgt?1U znBI7z-Yv}VxTlFcWfk$RC)1C(Oi77rs01ORIlN;0QO{8<^n^0t*7C)P;;e}%(>9u* zutxU&#}Ty!B}Rt2%-NsW?eDz9o3UF-CF3$Ha2)UHuB;yw5|~nrx=|{gi3~Mpzf#;-m^MTTCJk^wiF}m0&sR6+b0r)!B%Xz_Afi~L3|dhF^yjaS9|#! zgwFtKv=^P<>cOinA~)fbojO*+;5%O*4kW%f;^5GHn=O{SoNbz6fuHLayjW`TbfK=N zELvIZ)h{yeD1OkX1Vq}eG|MI1;XBB|=fx;h*M#EVW9Bduhq_#G7S6|- z(FaJuR_(0Y3qm?U^AOq_l)mdDv!?v2nT|u+-Siqo4Cay8r>JE7{i7^-XlI^*>=)zZ zy?6X3SpF$14fhuN$Hmy-rYs#J6HlQcp$||7rp)k`qy46aQ8ZVhF70f?+|lh7`u95C zf!ng^se?ZA6t_M@Pa#e0+T>bo$g3Q7(|Jb9ZHfK6nw*t^i~!Jwdo4|qO$&!y0Rj$Q zfRTeutDEs4N4UUvL0eR5Tim?@k)<>up4u_buryqzprc~C z`UL;2qseg7{RL2ws%R#^Obs?s;LSnJAVOfQ#|m9z%DzP**>Lp488fi9hFe=>-zk6v zKWNAjq3NRU!L&h{%X%h>5jGR=F(_5NAwB7;$pb={+rLLL;B@^i4oa(uAuc?0hsu}U zsGEzs&yYGL`!4vodYh&0(2A~MQ#{7vOI-ENwG-ChOuMoO{pMs;WG=>U@f)goR6m}4 ztGEc+QkU-DHS!pG^@h0)bqaD}`|W4y7vgVl>jM0HcVB!>1E=jNnqSLrwy@V%_LWDN zMQjLaroDws7I>lUbDR#DD2Mjn$+j{{2}QfDLZ53lh#M-SocPUa-X<;DGpyD zTdAjpnBiPAx>D`pZil%sJ6B_qk~IT`uPGHNZHT>eZ|_bAp3LLemjVjeGKegu8-oU! zzJAInQ;z5h&2;4O`E=j#@WI~E`ikr*1vQLC#Th`8-ZMYx$GgAZ66YQV+3hHYR4xzO zpwg_wUyi$?OHTA1hCUu*9(wiNTH$>tlQpcVKV9&w!SeHBtBdVuV;zj^7p0FhVc7KA zHrMA5BO4xAP8vxzt+#NGe;LizNs>3$HMSSG=oPu494n1k34|)ig*(@4mdxz#wP5{X zg1Sb`gFE+4VKC%WLq@2ww}j15nb+b;-Sfg+<{RZMtD4aF@Iy;8G_O8rinbLTWz*%~ z^7*51Qv`-JcM1CzwUSykTZ1-no85@&44+dOFxz_G&={{Vn@ftRpY_;V(;I4OMa}TU zl`l@ZeY;&D77(_wxb3rZP(`h&HYAh}b1Ui8E3Zd}tV~6Cbk2z24`Q&*B+Ls7}edPl?gWzbh$PpXkaDW zFwAc`J)w~$tF4m}dZH(y2Qsj)E=fx>_POza!Nv(=9WK=`_wkT70j9qEGvK9X z_=OF1Kb08&oyDVwd(T%&Jl+e>$IS|CXgn-%nH?Jr?Bt)@XUBB-B|3#UZDmgKt#^96 zuOlptit}f9QgaGuuDXnEHY8aG*+Xw*k4E4MuEDf+U2%uF`S@O5^NQTcvGLR5Lz^vy zMNUh`RE(TjF&AOUjLqEhgShOv%4MJ0$=SNbFosRJy)!_!1l!QI`=M~M^vlHFoSZ_f zJA?PCXC)U#BnUC$I0_j~GZE&s?i`Pe<9wRYXJx}cgdJ5L1DzHY=`FeWqTGF!w|kAU z6{NQIkt9P#USEgKfHA39FnN)Qt-3D#ZZ<>9i^}1HgbSxhi4hz0)?pVVP0ZuwF^fx2 zYQN-@x$vCDm+Rz=j^(rQ_bP@Vik~7X^$m{T52jfD)#8#}Dq|D?`3%(b+ze@1nH2d72cC z`>aFWyN#FL$FB4W$bCqhbzMi#7dCdAWf_pI&Ce;R^m7GJ_Kvp=`fbW0Dossl3zv`N zv+aCWB*3ukR8VAIn`dNQd3eyyF=>|VgGMDyp0pmc#Tjr|8c`8(@A0LSl_aAGX|T{%Tx8|9lF52H2bd z1by~=!~8tozTEFWSv+L8h#3hGapUmaudMw{*R+DdnkbTscFCFAe+uog%nCfrzBV;& zJ@%^XnOxUy{(d$HP5TjjQE`zIgGv1|$rAL+t!@(jr2NB7r#+`GUDw~jY6 z$;$-m%^&L_`VB`>-1!>GbBZ4dtCvUzGjsY7T&ar&r+OVZ+MVN9!^DmEYSJ$4k#uHP zT1~fSxD7st*t=4*YQ5ajEU$dP5Nu^~T}o*AxbBHzZKRnP!x^9@Er)hfR_qvT02P!z zr)m)HfBqyDvK<2UQ+u5?kF~REH#)f(&*Wn<6ZSAqJBU)x6`qh;Kjdbd#XsykLmBH& zIV{WTLb)A$d77-Gi5j>G5U}03^W%cY9SJ!J?~CdZ%obEJD)_4_p?0urYoJsaX z6ysy0$C>ux$Vu-q2jSDZxEJK#7Ua`^bRrp`Oz&ND>+3NzU6gGUELX2F2*A>(&db9E zOg{>9tYEr*e88>9G0lgQpIZ$=OZMo-;S;Y%a~iKsflzC1qVY_70ep~eMtSii7SsL4 zC4BXKa)R{=i_g0BCFXLcPo9G6i^y(}CyKCU=^kF$TuIc6K{HA5m1dtl* zp0=FmyAe2br8ij|!y-LRlbH8D;q{?O8Uf90PO!BfleqEvcHp^)mC=-J?g+ zNO9bc+PW2r61*LZ(C&esLLsu75NqtF(7Z-XxIzu)U}GYwY^Vgz=X#{4+if1NPNohs z>Iz7h5AJCX&ML3SwQtuIa9^xSg+4{lb+`^Tm&jw&7wCj#c=n|2j{G#TvXhoLU{^gPN&lyR9&m%Ew7WbS0P6h$M@H2S+*rgoIFp3tKbUn%rs%>nzU3MrXv<>oRZIF#NDW{G>1I#uXhbh`5bYyX*uLQHyGMJVAX3JCP;>;spo6O$+RVv1I8pRl z{jF)FAFMj_GGWCfMY}2Vx1$J~)kW?~>9sD)_8`jmaW|{L?R@Z+(b92qDRAOOO^s|} zI#lv4r0|3Ai2v%09_0<*rU-4bR!lxZV7EoRnL5^Mt$U+n7v@49o*2O-qR^mHej3-> zp2_!8^>UnJGv~9%yK{^I+9yUA`|dR9@6+Xzl(ev?|6G)B|W*U5(u z_AL#0DKY!4ys?%G6qK_?l6N`MDZ&ZUOFU4&&>SfsE5@mkf=AVQ@q0@IWxn%nTYAo~T|7~BFG^D3yhA9}E%5AolDHg)O zGUCI0yZzunUToeT^(N1iflNOIALVfTlI}Fw6kxVal%U_l&`?)P6|m+ zj5cSIZa2p&?mYyGOXSs^^NH-S@4wa6nCGmZ4)Q(*aF^*p&VVi2Z%@$r{YE9A`Z5OM zYGmjD7$g{Qlz7k2EbSprf_P3tF%;f%^+|W@huFDQG5MHTOql;Hs?{o+7R4O=E=YuZ zsC=UAhCG6c^c6hmt$71l1Nkj2K0rqs6(Mes#24w)2G8N+@ zSKVu^eT6VL^Kk3`6J*}M2d#nSwM+IK@B-gAgT&1`Apw`b% zIfGwm)Fmii_uM)I_^ujW9DYD4JtCqM?{!oVTqfXDwX_>y7Wb>IUSQ{VquwrV+V@qTkE@Hdc1Zu1 zCvpPt;ADe1`}pDkP=Cg@qP@w|*qljS|KTscef%7kTH31VBDe6-5XBo}yd#iaSb~+x zH-(zIV>6J@QXd1c{${}^iL9EE zvsN(4C)g+k1dK%6-1Oek4Dv>#mnmW!&6Nc zAGqbE-I0m4kkvalC5vc_0`ZBSfMGvG&W&ct5Q#kXbWn(yMs%mIIst9WW}YA zyT+pHJ5LZ}`|4h%buA?bpBe5M!MW5gGQ0eIo2cwd2ISQ9<#kf=U82kDzhMPeN0Mtz z4%7upy0XK$n)L^a3sFJtWTv3?&FKrY&`w3j3|o?f#XCM>xE@nsRPI0_n{kH9S@9}RdFm!`5$1~|}CQVrSadL~W&I1 z8lOB&K)1^E=~7}Q-vPrirpvl+bV1jwv4*3?1a8$c~oCe29$Ob zX}NBu`wha3$Tsp`Hen?qqN@ zja7DG4DunoD#tWzsdBf+WQ|`Cyq)usUNKzQO1=G6knRTmQRoz@Y<-P*-xaTzoojE7 zl)$^-O{HI*a1#+8K&*N%k^Soay{E$h9xbKyQgOH^-BPD?*4lf@vrM+Px`>ACTTlij z4Uwgt;udo&>Y7h?k1&|hs>WPC_da4&Bj64s_ld-Du{bt&iA9>o7Juw z?c9fnJ*Z>GJJ0g3hTxvMV0oOFR+Chjcc)Vyh@TFLoqO_GMzi|@|;rw7&kCv3QTtVuntLmyowh1ZHS z5N^f2xVL4FlOmKLtMvr%@d@AP*OPN3AQ`?utakPHXVR!J)cZ6QxGrkK(_L<7xUvZOol^!bM zD{sv|jwvsSu*;i@TZ~%g?-^e<4b@4qw9$MsF5DqgfN-_3Gmp0?Pcqb#Q93~$>Py^D zfiN(9C`!4&3g(pKnksOxTakp-^O@!qK+$cP3V*_l6FYF&8E^EMO@85 z>uHQcx?A^&Jt!d@x18AybyHNaH?K|2$u0JRE(mpR^?O_mM-E*b%I8n;PAWe1d1?N7 z$yP*79}D&&Popfxtj;l?s+VTcazys$8J4(e3RGRMX1f%BGM89;Y=HCKk3x*w|0Bh} zdGpc}b(vndg{;C!!_nnYxBzcw4bmoXy)UMp#3MV*rN4p63Y)5>-3`v+m`GlTSEiK8 zoX@%QhZfvJyEsTdWBl+D*i2!&C5FDy_lrpJ;GWr1N$`o%qIwC-d-rj_zP4vswvOZ8 z@!GtDHpPoax6xa0elO97FRw*K+#Ut{`KeCvYxgGbq)m)@4KSAAq84Bz{PjijX3n$G zm7_R8SiTXqphhrw@RJqM&6GC_*$3_yO{ zH7gzcZ1l}^9QnZg;TiCoeN*rA$7)~I&H(5juNt3YQ>fqPH*fcpxqj_?==1UGt5d8! zmEKpe{2AAJs@|ZAj{?WVjo0-}IRL6(e|OIdC&IhG!+(5I@){7$R*0+3e%1E>;-BoA# zrHTiOlY5L~0;ObFZa_h`3urX8*D=>2U0Y99R}ZrrZ)Jwnt8Wvhl(5&zDF@zd7IpKW zu~X0fw!r=raZHL zj>^62w_C`Yb4|>O1U9*TyC-t>^>raxx*E@SkD;a}`;H+#nO`|b%-=7M4y_K=N0Cbv zv|7bnanJG5YOC}cLYShgV=xe@S?A1go2|u7fuM@gM||>^EDf8`?#^qghw(7Klw`dE zYjlNafS`JLh}OH`-cUMy{kX1BW^S^-AoQ7ILg9)$GIz<2_4C0-f3~P8M!2aCB~XTd z`m|j%oGfVG?=BpIAcn7=URyw2((DY?uFsl&8%mB%wDmGIZ#qFMuq4#PD^AqJp}HNG zE3$)acUNzu8jJe0M=N~e)`)$oF+LqxVM;!F8EI=yQQyzpri&kAQ*eJ{Ho0=BuhMq$ z!vP0)$i9F6oAvR)BHDPW#4I!@>`itW67eGv35HX;ty z2hFWzWWFiZdyTd)CgJLrG=~H<{l5%*)i=^}Izo{v({XuqJA#|foPWA6{o$hBC(g?# zq}D$U#s5mZiFRr})9f12QRaI}3jmLTb^UUSv6^69c%r--NP-&jwvz zHV+Dl@Rz2U`R^4XX^RM_DYou57255hw1&&f4a`P%Ca2^y#eD2RqSKGCCgIVg`8g2F zaH6jTBbOe5BAdIoYz?nvU_&djP)8raNnY1_qR9MMC>TWZ2A1YmfKv4qjud^I%u;s4}h9=j3j)n&e#D9+vSg zu6T_HC6!zT_Dzv)>Rh~AT~!Qd`ADb%+;PZ9ZlPI~f$3c^MxqUr;IpY|fTGQ34j~d4 O0RGkE%>cpKhyMd|+zIFa literal 0 HcmV?d00001 diff --git a/scratch-sessions/delete_fake_data.clj b/scratch-sessions/delete_fake_data.clj new file mode 100644 index 00000000..eb5f8d7c --- /dev/null +++ b/scratch-sessions/delete_fake_data.clj @@ -0,0 +1,11 @@ +(in-ns 'auto-ap.datomic) +(doseq [client (->> + (d/query {:query {:find '[?c] + :in '[$] + :where ['[_ :client/code ?c]]} + :args [(d/db (d/connect uri))]}) + (map first) + (filter #(clojure.string/starts-with? % "ANOT" )))] + @(d/transact (d/connect uri) + [[:db/retractEntity [:client/code client]]]) + ) diff --git a/src/clj/auto_ap/graphql.clj b/src/clj/auto_ap/graphql.clj index 7ab8c784..3fa7b905 100644 --- a/src/clj/auto_ap/graphql.clj +++ b/src/clj/auto_ap/graphql.clj @@ -420,13 +420,26 @@ :edit_transaction {:fields {:id {:type :id} :vendor_id {:type :id} - :account_id {:type :id}}}} + :account_id {:type :id}}} + + :edit_account + {:fields {:id {:type :id} + :type {:type :account_type} + :numeric_code {:type 'Int} + :account_set {:type 'String} + :name {:type 'String}}}} :enums {:payment_type {:values [{:enum-value :check} {:enum-value :cash} {:enum-value :debit}]} :bank_account_type {:values [{:enum-value :check} - {:enum-value :cash}]}} + {:enum-value :cash}]} + :account_type {:values [{:enum-value :dividend} + {:enum-value :expense} + {:enum-value :asset} + {:enum-value :liability} + {:enum-value :equities} + {:enum-value :revenue}]}} :mutations {:reject_invoices {:type '(list :id) :args {:invoices {:type '(list :id)}} @@ -472,6 +485,9 @@ :edit_invoice {:type :invoice :args {:invoice {:type :edit_invoice}} :resolve :mutation/edit-invoice} + :upsert_account {:type :account + :args {:account {:type :edit_account}} + :resolve :mutation/upsert-account} :edit_transaction {:type :transaction :args {:transaction {:type :edit_transaction}} :resolve :mutation/edit-transaction} @@ -647,6 +663,7 @@ :mutation/edit-transaction gq-transactions/edit-transaction :mutation/edit-client gq-clients/edit-client :mutation/upsert-vendor gq-vendors/upsert-vendor + :mutation/upsert-account gq-accounts/upsert-account :mutation/void-invoice gq-invoices/void-invoice :mutation/unvoid-invoice gq-invoices/unvoid-invoice :mutation/void-payment gq-checks/void-check diff --git a/src/clj/auto_ap/graphql/accounts.clj b/src/clj/auto_ap/graphql/accounts.clj index bb4f51b8..0c9d4e91 100644 --- a/src/clj/auto_ap/graphql/accounts.clj +++ b/src/clj/auto_ap/graphql/accounts.clj @@ -2,8 +2,20 @@ (:require [datomic.api :as d] [auto-ap.datomic.accounts :as d-accounts] [auto-ap.graphql.utils :refer [->graphql <-graphql] ] - [auto-ap.datomic :refer [uri merge-query]])) + [auto-ap.datomic :refer [uri merge-query remove-nils]])) (defn get-accounts [context args value] (->graphql (d-accounts/get-accounts (<-graphql args)))) +(defn upsert-account [context args value] + @(d/transact (d/connect uri) + [(remove-nils + {:db/id (:id (:account args)) + :account/name (:name (:account args)) + :account/type (keyword "account-type" (name (:type (:account args)))) + :account/account-set (:account_set (:account args)) + :account/numeric-code (if-not (:id (:account args)) + (:numeric_code (:account args))) + })]) + (:account args)) + diff --git a/src/cljs/auto_ap/views/pages/admin/accounts.cljs b/src/cljs/auto_ap/views/pages/admin/accounts.cljs index 9187e737..152551d0 100644 --- a/src/cljs/auto_ap/views/pages/admin/accounts.cljs +++ b/src/cljs/auto_ap/views/pages/admin/accounts.cljs @@ -1,6 +1,7 @@ (ns auto-ap.views.pages.admin.accounts (:require [auto-ap.forms :as forms] [auto-ap.subs :as subs] + [auto-ap.utils :refer [replace-by]] [auto-ap.views.components.admin.side-bar :refer [admin-side-bar]] [auto-ap.views.utils :refer [dispatch-event]] [auto-ap.views.components.layouts @@ -9,7 +10,11 @@ [auto-ap.views.pages.admin.accounts.form :as account-form] [re-frame.core :as re-frame])) - +(re-frame/reg-event-db + ::edit-completed + (fn [db [_ edit-account]] + (-> db + (update :accounts replace-by :id edit-account)))) (defn accounts-table [{:keys [accounts]} ] @@ -46,4 +51,4 @@ (let [{:keys [active?]} @(re-frame/subscribe [::forms/form ::account-form/form])] [side-bar-layout {:side-bar [admin-side-bar {}] :main [admin-accounts-content] - :right-side-bar [appearing-side-bar {:visible? active?} [account-form/form]]}])) + :right-side-bar [appearing-side-bar {:visible? active?} [account-form/form {:edit-completed [::edit-completed]}]]}])) diff --git a/src/cljs/auto_ap/views/pages/admin/accounts/form.cljs b/src/cljs/auto_ap/views/pages/admin/accounts/form.cljs index 89f3a4b9..0d1fbad2 100644 --- a/src/cljs/auto_ap/views/pages/admin/accounts/form.cljs +++ b/src/cljs/auto_ap/views/pages/admin/accounts/form.cljs @@ -1,21 +1,50 @@ (ns auto-ap.views.pages.admin.accounts.form (:require [auto-ap.forms :as forms] - [auto-ap.subs :as subs] - [auto-ap.views.components.admin.side-bar :refer [admin-side-bar]] + [clojure.string :as str] [auto-ap.views.utils :refer [bind-field dispatch-event]] - [auto-ap.views.components.layouts - :refer - [appearing-side-bar side-bar-layout]] [re-frame.core :as re-frame])) (def types [:dividend :expense :asset :liability :equities :revenue]) + +(re-frame/reg-sub + ::can-submit + (fn [db] + true)) + (re-frame/reg-event-db ::editing (fn [db [_ which]] (-> db (forms/start-form ::form which)))) -(defn form [] +(re-frame/reg-event-fx + ::edited + (fn [{:keys [db]} [_ edit-completed {:keys [upsert-account]}]] + {:db (-> db + (forms/stop-form ::form)) + :dispatch (conj edit-completed upsert-account)})) + +(re-frame/reg-event-fx + ::saving + (fn [{:keys [db]} [_ edit-completed]] + (when @(re-frame/subscribe [::can-submit]) + (let [{{:keys [id type name numeric-code account-set]} :data :as data} @(re-frame/subscribe [::forms/form ::form])] + {:db (forms/loading db ::form ) + :graphql + {:token (-> db :user) + :query-obj {:venia/operation {:operation/type :mutation + :operation/name "UpsertAccount"} + :venia/queries [{:query/data [:upsert-account + {:account {:id id + :type (keyword type) + :numeric-code numeric-code + :name name + :account-set account-set}} + [:id :type :name :account-set :numeric-code]]}]} + :on-success [::edited edit-completed] + :on-error [::forms/save-error ::form]}})))) + +(defn form [{:keys [edit-completed]}] (let [{error :error account :data } @(re-frame/subscribe [::forms/form ::form]) change-event [::forms/change ::form]] @@ -28,6 +57,9 @@ [bind-field [:input.input {:type "text" :field :numeric-code + :disabled (if (:id account) + "disabled" + "") #_:spec #_:entity/name :event change-event :subscription account}]]]] @@ -52,7 +84,9 @@ :spec (set types) :event change-event :subscription account} - (map (fn [l] [:option {:value l} (name l)]) types)]]]]] + (map (fn [l] + + [:option {:value (name l)} (str/capitalize (name l))]) types)]]]]] (when error [:div.notification.is-warning.animated.fadeInUp @@ -62,5 +96,5 @@ [:submit.button.is-large.is-primary {#_:disabled #_(if (s/valid? :entity/client @(re-frame/subscribe [::new-client-request])) "" "disabled") - :on-click (dispatch-event [::account-saving]) + :on-click (dispatch-event [::saving edit-completed]) :class (str @(re-frame/subscribe [::forms/loading-class ::form]) (when error " animated shake"))} "Save"]]]))