From 5f8007e26dbbc1979946d18bd14f96af1e3ce522 Mon Sep 17 00:00:00 2001 From: Shubhendra Singh Chauhan Date: Fri, 6 Oct 2023 11:44:30 +0530 Subject: [PATCH 01/67] [docs] SAML (#7577) * added saml doc * added saml in 2.19 * minor changes * minor updates --- docs/docs/user-authentication/sso/saml.md | 79 ++++++++++++++++++ docs/sidebars.js | 1 + docs/static/img/sso/saml/auth.png | Bin 0 -> 196284 bytes docs/static/img/sso/saml/config.png | Bin 0 -> 441322 bytes docs/static/img/sso/saml/enable.png | Bin 0 -> 72001 bytes docs/static/img/sso/saml/login.png | Bin 0 -> 178630 bytes docs/static/img/sso/saml/url.png | Bin 0 -> 376032 bytes docs/static/img/sso/saml/workspaceset.png | Bin 0 -> 104342 bytes .../user-authentication/sso/saml.md | 79 ++++++++++++++++++ .../version-2.19.0-sidebars.json | 5 +- 10 files changed, 162 insertions(+), 2 deletions(-) create mode 100644 docs/docs/user-authentication/sso/saml.md create mode 100644 docs/static/img/sso/saml/auth.png create mode 100644 docs/static/img/sso/saml/config.png create mode 100644 docs/static/img/sso/saml/enable.png create mode 100644 docs/static/img/sso/saml/login.png create mode 100644 docs/static/img/sso/saml/url.png create mode 100644 docs/static/img/sso/saml/workspaceset.png create mode 100644 docs/versioned_docs/version-2.19.0/user-authentication/sso/saml.md diff --git a/docs/docs/user-authentication/sso/saml.md b/docs/docs/user-authentication/sso/saml.md new file mode 100644 index 0000000000..f412c69009 --- /dev/null +++ b/docs/docs/user-authentication/sso/saml.md @@ -0,0 +1,79 @@ +--- +id: saml +title: SAML +--- + +ToolJet supports SAML authentication for your workspace. The supported SAML providers are: Okta, Active Directory Federation Services, Azure AD, Auth0 and other SAML SSO providers. + +### Configuring SAML + +To enable SAML authentication, you need to configure the following workspace settings: + +1. Go to **Workspace Settings** > **SSO** > **SAML**. + +
+ + SSO :SAMP + +
+ +2. By default, SAML is disabled. Toggle it on to enable SAML authentication. + +
+ + SSO :SAMP + +
+ +3. Enter the following configuration details: + + - **SAML Provider Name**: Enter the name of your SAML provider. This name will be displayed on the login page. + - **Identity provider metadata**: Upload the data from the metadata file provided by your SAML provider. This file contains the SAML configuration details. + - **Group Attribute**: Enter the name of the attribute that contains the group information of the user. This attribute is used to map the user to the appropriate group. + - **Redirect URL**: Copy the redirect URL provided and paste it in the SAML provider's configuration page. + + :::tip Downloading the metadata from your identity provider + Generally, the metadata is available in the form of an XML file which can be downloaded from your identity provider's dashboard. + + Copy the metadata from the XML file and paste it into the ToolJet's SAML SSO configuration settings. Please ensure that the metadata is pasted in the correct format, as it contains essential configuration details from the identity provider necessary for authentication. + + Additionally, you can often find this data by navigating to https://<your-identity-provider>/federationmetadata/2007-06/federationmetadata.xml + ::: + +
+ + SSO :SAMP + +
+ +4. Once configured, click **Save Changes**. + +### Logging in with SAML + +1. Go to the **[General Settings](/docs/user-authentication/general-settings)** and copy the **Login URL** provided. Furthermore, you have the flexibility to choose whether to turn on 'Enable Signups,' allowing users to signup without an invite. Through SSO authentication, we check if the user already exists; if so, they can sign in seamlessly. Otherwise, an error will be displayed. Conversely, with this option disabled, only invited users can log in, provided SSO authentication is successful. + +
+ + SSO :SAML + +
+ +2. The **Login URL** obtained can be used to access the workspace. Please note that ToolJet supports SAML login at the workspace level, ensuring users are logged in specifically to the selected workspace. + + As a result, users can now log in to your workspace using the provided Login URL. The login page will prominently feature the name of the SAML provider configured in your workspace settings. + +
+ + SSO :SAMP + +
+ +3. Click on **Sign in with `SAML Name`** button and you will be redirected to the SAML provider's login page. + +
+ + SSO :SAMP + +
+ +4. Enter your credentials and click **Login**. If the user is signing in for the first time, they will be redirected to the ToolJet's onboarding page. \ No newline at end of file diff --git a/docs/sidebars.js b/docs/sidebars.js index 230f897487..ab94cdd29f 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -271,6 +271,7 @@ const sidebars = { ], }, 'user-authentication/sso/ldap', + 'user-authentication/sso/saml', ], }, ], diff --git a/docs/static/img/sso/saml/auth.png b/docs/static/img/sso/saml/auth.png new file mode 100644 index 0000000000000000000000000000000000000000..3d5de1903a31dc5a6c3ef6bae8ad440c46d9f1f8 GIT binary patch literal 196284 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

qp4)83N|a1_ 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
oj^xmAR0X3oKkjx;qF*$x8YUmqL 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 E1Exui1^@s6 literal 0 HcmV?d00001 diff --git a/docs/static/img/sso/saml/config.png b/docs/static/img/sso/saml/config.png new file mode 100644 index 0000000000000000000000000000000000000000..bf4e827b520be55cdd5d52e7c7a6ef1b29b1f8d0 GIT binary patch literal 441322 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

@BnokQ(V!I*h#c(5uD(=QLsc>NVc=G`T*M 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

mgRCZj|=C`xC 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�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¨8Y3t;KUsUw2 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 aK5@^O@qnzB(H{o>la`Pd&%1Hw!T$ji8mrO( literal 0 HcmV?d00001 diff --git a/docs/static/img/sso/saml/enable.png b/docs/static/img/sso/saml/enable.png new file mode 100644 index 0000000000000000000000000000000000000000..a00dc81bb3a68f3cf4dd71e770fe91d5dcc59aff GIT binary patch literal 72001 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%0ADa#4$duzSP(M$+v1|>{;Y{u~6gW?y{ z-X86Vv9$Oi2Z#wA(_}X0X>V88$-|v&`)$9ou(V?LFYjJg+vz8NE>z=vdo=w_kqXmZ zlPCRy?77J#v#Bi18c>|x@KZvYHsT5xxxkG8o;fms3f$|zOXeRUFz~=md9-9}+^{a& zmB8ug2jYcub;J|%6|yNj?JpWVKE4{14PlWzU(7`v zF@vx00mDLaJFKGP4P=NMPq(1@bf-!a1tz>&<)Gvtgip>drJ*K#O;$Uq+yoi^zSq zU-izgNHk^pPzZw+bIG3?snGEr@&O-##=x{SCi~Z7f`@0LgPjmosDYeAK?@)eFBxZ( zl?2#90vxuQp1pA>u~ynAr%$PTOip9CA`26Zo(Jj&g+UoIN$g>BSoSY7Sc1W0g2>W? z9mTDh9{=kbft)=Bs^Gdo;!C6!QGNEd&FWUX>u7n(U}7X?`s)6@ z{@0Wvz+3i=%qfu?Hk}Im2a9moou2 zDdt8~J&(YCQ*2>|T-x284OavlD>vf1%h~Bkt)t<$SMTUWn+%4#)XUexzfIOk@z&~l z!z@P`1XR&;G0x)DNq@NT%UyoW?kp*t z%1SMe1vW+2R%PYX?1+{Rh93UIbo;Toz11C&MD5ze7h*nyY;0`wvSsEwi+O1ena&TR z0;=2dbG`V^bzd22RG^~EKS1w#DAbY6voSA@+ooH zVseh5hD7&twUB9llF7bzSZ$$w#%p!b%?$y+$Ks*flgyMk%ykoK-)A9_u4az<*`Nl1 z!xYmtT!b7gN#*5X^;QY`ssMCwBhYhTsf#8VM1LmHEI^{euOh#t<28`9w#(I^xyCgk zaY1y-NBR>qKbe3S;Adp9-s`>)oopaT)UieGkm#mQf~PIWw(R{xj)A?iztCHPZ9wNS zW7i-sfT%qJci`TbQ2ogrS;}Ax+3(b`kz=5W1*6M1>Xm}NVgWdm)UKCHffqMkR%(7f%;ZkIZ~?%=7Z5ml3VIRD^FDoURrzC z&ih|t0LFxApL{Vpub9Ao3B76qnuMTryaIOwzOPdG$sN>SAtcNn#$D_yNpc|KG#Wc# z7A{=Xt`xsjq$l@}IZqFsyNR?5{-M`_Hl?$hfSlVvXc952ilN*8Ara#FU<{Ja%IJ_| zkf#BoQ|wHHX5mT~J$UK*745Wt+=6_F2!ZLvql~1%%p3YoFn~Llfj*3W^VT}{-**T~ z0*O?_3pIws?2^AC7+s9yNCPB;@;2b54wPSxkOKLS0aDF!{)+sa#1LA2)JYex`mgST zJ8lM87yjf9MW79$2cFP{Ajc3R2^E!hq{(szp qe8@}AzKciw|6~gZR$|+qp%$KP?%dV<=5z`CBOxODxJ3BL)BgdB;@H6e literal 0 HcmV?d00001 diff --git a/docs/static/img/sso/saml/login.png b/docs/static/img/sso/saml/login.png new file mode 100644 index 0000000000000000000000000000000000000000..e89e514512e4dfa899f1fb8c8fe35d8e8eb14bbf GIT binary patch literal 178630 zcmeFacT`jBwmu9fiXwudARR?PKtM!#S839FFM>!1>AmSzq@z-#qaeLV??j~u2uKY* zO7D@D03qaCaUcENyEn_T5BK}yjyp2O8DnSQN;22`K65_LGvB##f>o4cNKR6p#KXfQ zk(0fn2KX7;HN`; zmqSzE4*DR^yx2;eHG}2>pH@yr&Y9fuv#uOzc~uXZPu{d>Q-FU?afVmVO;mS_@TBep z-Jea`sDsamcKE}R=0s7;rQH$j$Tpy?9IQ83>AxGrBLRABJ^#mnP{tMK2IRjrr+JS$DQ ztWFSl7D!7F#Nc1!V}hyd@J$s?F#8~y=hGS6*RC0tqH5%WAnq*~e{=%m%~-YPa)yl2 zRn?gkO!Mi5(d#^O()zfd&MXe#^n@l}OQen;zc0@wG+QnURie1qdn4?-c2ES&4v~vY%jJ_ZC=u!Ut8W z9LN9J$IiAp)b9&y%*9?1mH+Zh+&wX{n*|hbp!s<+Mh^C(Aaby8uO~>YL84}6AznTM zX?5t5()L6n@7>(t$Z(Kb{PAtso7}J_qWBYI|nzWwPXAl(2S~xeK-zCU*iq;aQ1^5w|1SD~oP(NW5>^To!0&b=c@Y>zTjdXP{yU1v3ASg?&FUJ8^@WLX#` z?z-QnPyo4N{p6javUZK>o&$2nWcllnu_YF8jt-|ZU?x-faI_NL> z{)O22%h!YPtfIHGNBU(*eTv3hzX}&1+&}DOMUNK2h89O^LKg|5yGZq&rbJQ57`s08 zDKCQ|XR*yW23DvM#yfPDIO=0WqX{TP!cPJ#I{#sm4`e}}k?E}BS@myc--y2-&_8>M zvwE|{>7ko_&)d8!oYtk7NX!;X`>0#jwVEzQt_B7drNp{G{?vON^KrKA=WOVpIe-I zGG8j|tXwx1&$aKOW)!_Htc_T%-`d{yh7^|hdgUr8+llU@#(9Kgyi$*M4vE#5+a{(^ z3rsO!7ADqbJ76{QH9#7EX*gD`X)Kz6iBA@G`3NoW>P~a-dz>On)=LN$2wvcsqeo?# zzE;P8q2q#*Nk5)d$E%B5Gbj`8-jHgh&go^mIQKkMY9f+d;CL zCZ!f|j0_(-#kiRdx>A$r@XY0V;ILC04XkdS`wV{Xb=2aV7E&sY4-*nW>sQukUU(6- z_*@GG@~C8j-w_I$-%A(*7)9(Zs4t1e7J! zq$q-vBcf|(=g%^RQ!{jOrR~X}&$g}~a2@DQsqaQtA}y@y zw%#ur7>Dlg=Pt;)+|Hnyi`%qbh3 zddgp(j9Of-Sfdj{%&WdPWc0q$?xG28QX{7!mdOBd^8} zolRZcdn6-MAe;5sf_Z*u6cA4hl`E7(^i3v_)xt;wy{Mkw;#)3b7u02fj6z41@rDGE znyw4qT;170mnRKqGv<&dCW7iOPJ+gxvM;xHd#giK0LA%;Zy|H{U?*&f@o0AqNmkstp1CGni|upve}i55RluV~R4^DqSNw zMb2n9>|_PZcw%pjV)R-FX(v1a-Uk9iW+H=9N1rMc+^kR8#YBOW_K%ijdO$(4<&twK>S%`I%48;T$5&mn3qZI;5shZ|ZUG zp}#JVy|Gy$$aFkvP(V3-3yc>6-V*`2cINxoU9d$t#d5t1FDGH_$}MVbAB|4qHvC?J z$ymuVeQ6Rooul0I?D7LVMr-YN>LYe4GprA)rHFKPGeQr2=;DC01D>;4=f*40NcglZ*G z7dGATdl@f+7d)*JASCmdpqGl=o=4U_}0JQ+PAQ3QLq zdLoWaaBuz%%y6&9n3EKZ^1rsn$tIC|=}n>dXjWw`AS6QV8G?+VTUC)@Xkfe^21Idz z0}5IWnNEaJ|G=f0L_hN_y(N4#R}cBA6u;wol*h+Q{b9Fcc^0)}6B=%oxr9U3cjY_A zEHJM3atx1TR4mzfkIP~%==t2U?w_ko1&@IfC|p&SML`ABg{#-^2K=OPdB`(Ml|Ra2 z2{IP1|57s5o5${;Pvx+Au>#P0z z%YP?WA^NU<^k%5lNLTj9q{S>NY4vmE8zbX0js81pPt3QD$tnhFmQTzfs$4G;<&J6_ zYVi6SCi-@ETdvcbyEsq)5sCw7Ssfr_I?P%1ty1sVYV74cFM`YR`lQJxo&HC}1pNPs8bqSApdcru?rlr=wOL^FP6h#^F21zVy$dnB!U{h9GdlyKF~*7YnozAX11a^Dv5!lged$J;6mHYShJt7}Abt+Qqp}>Y z4Wz+98pe6uHlW|!^gN^HhhD?u4Sh3+*Q@b&0yLiRmO2Mf6y(_r^_Imi#t$fOjZMtI z4SA58s+wvnn(jWH-nIQTbwYE0wJ+6ZsH@Z4{uqhi(l9ULD z{uZ789PD$?1}g7wAUil1{C#4UGovew-LyRWY?O`vr_HqL0`!-kvjBk({>X*(r}0IK zwi8aIyG<$19fB4qWn*R{-~d3ccO(MNeYC#{@&!7hKw}#NTMtCbv|}6Frzd&!mDsfny`(+YhPh-b z-H1W04zQbFq$C3Rr8-3qxUnA)ey?-1VLOH)rrQT-(0l)A&;zY)*s2n0<(laT=E58%&Bg9@bq6KgS&o@VH$6eNp?n*TR)KT!lZF!G2SJaO8&L zbr8D_T7Pho1}ABLQ&K?w2`6cAk_NP-fEXy8q`^rVoTLG1SRFvyI5me;a|gfzgpvQu zES#Fdskz?*PFgQ{y1Pf)lbhA$t%m{@%s?FMq+QIh>lqsks9VXA@iR zkNunl_%HeLUsMcE)Z#?#e}Th4z-w+q+&X8Q0cVm3 zcn>`IyKgdHJ8ZiGP&?BjDX!@;fj80ka;kG7^l85+}bT|L!r4-_+vo zz_h%VZhPt>Lni|L+&`D1{|z-3O9?=7|UJz+?Tj8RbKU9tb?rBjNtyaCw4D@xO5IFEIc91un&Zzdi@ADlWx;TYW*b zF)qaqQ{8YZekex4vG{M4A^1PxSo|=I5P%cv|3*|Fys9{%ei%lO_`fOCHG9dSKW72J z3)C;1;e7dFR9GO+m;XZ0fARw7%MYW%aK8Lt2l?NcHV33J&X*so7eKA$k2S>k@&lms z4*-bs<%dyWIA4AkM!>`Q@_(Rh|E^4MzWgwZfb-?QXG}01g7f8vVTAvqzWg85E1VZU zjPk;H@xxUooEJZg^1^xXe_(|UNMoEAKaBFidGQ0F^bY`t^Wuk5UN|p)7)HQ(@xS}* zfASZc7e5Rm;Joc$S=Wb zveY55)s^w66sycugSe%;NEF(uej*ZSk?B9{>05TlUxQN7I(js!yus@^4N<_pM zLr@cYnA!!1u=bDuJT={FR_8_qU9U z0U9Ug^$r_8I{|^L`Ap{LL;kK*+BsnR?&2HDA2NJ%DG9us{IO`kL;j{#^dn&VSkr6{ z8-6|(Ju!(l4*PpzYGlCn5xQ_3HvIDddPt`Oh~0j>~$W|GsTcMrdP+}@d6SnKPCNQWoz znx^m4+<9{Hypx*#^L38vW-Xt$?~P!jn(xM#rXQn`9$?dKM+PQG{J(VnOOg04j*ovi zlHf0Y{pFb6-6i^*EX=j)o8~a)vsBORjL5%YQD|7ImE>tXCxH6=GW~8$d)^;UZa-kT zZoB=dsto1Iy_M(?H$1fZ{qa;y9#^n`zpilYBQ5e@4(qQk+Ft?Ho2vHu6exR1k!N11vOHVm5U$(f{Q`{xK*yOde&opQ_ z$3W3b`PK3J-KyiU_t9c8&QeMq z@@!>xyp#CY6ylpGwY4}yf66$wo_Ut8!mf zmdN+|O4tRu5xSbiGyzsn5VW5lVk~gdUVRV35NX>4=>6B@UkQ3^tr71R z-D-6Uk{NB(lPMK-3un`0o6EO1oebaG(C% z$CDW#-xKhjjfF9wtlhBs2ne16-w^vC8_TMy^dmj)4Ly59*=Axf*(qB&?xI;X0g*bE z*T)sV*)~^I=gMw?u0n2NLPKlP52K zl(9&5_uQlr$ktFw^`Pl}j2xrwM2wZ|ph*R$vpp=vwljF$tVS*yc@-KLdkq=vAN4}i zuouEzwR;~A6zZ~zc_3qSybE|cVBeCT9kz}{X{41k%E*(t4L`AH_OwXVnjTHqT!FefgHsEp_#-eU^SVuO4<JZA`Kw|O@=5QGIfu}67KbxfctgM(i(XNgV;xh^(6nMr!Tl8YAuJTCG@ILvl59GYk{$Kcs!QJ+Uzpq8a7OTnyWw0i%@QduDV;TM$Rj|rqE=! ztL!qrGZydfUIQxHS>uSFpCJ9qT1Z$C?X534taVG*X4sC;emyez8fD+v;emx;;hZr& z`q*iHKW6<54 zYpei8;@Ev8^1etWo?43r1qi~h@W=rC)4B&})^-pX45Vw1xgn3pX(H?^yiYA+R3-)< zbni2rwt}*@_YqY?+sH>SV&Mz3mcCv2*@fy7zUsm` zI>$ac0JT)x?3J{LMe${25Zm(PZ=9Xzk3f1ely=>KD_9GDyS{w=L9nU2u6_t4` zx$uwj5cq9Wjhd9EVh8k{wA*FD%3sza&0+HBOk=tklkFSx!MX`(Ao6c zBf=+LM%7L+*#^~W6J0Sx)b+xvXbUbJhfAAZb367<=g)Rr4!G$svGa*m`N+CJM{^Z6= zXyyjYy^$N`gE{If6(df4mc`vh!2fDn2lefYW^c(k&vk|FY|Ndv*2qzt$yR&oq=hW; zaLla<<_)g&yF&aBjjV-Fwc&TS%o+P=e!u1`;-?%ATL2M1?@tmOr*~5b^K>^*i!aPdCet=@^NWAUe)mhJK#;;wZGeNtj)`K_ z9NRCC3$MS;GOM+#WOZAyHGB%W!6roOezzF4TA|)og+eT86AhiKeHcM}d4jVHUC8lL zi=z!st=q`Gd8>Yv4RIoJ#pBMHhh1g1QN35O4eJ5b{!fXWPYu-kycSVmuolTDowN-( zi`K7{Pp=q4+)KyJR4_p|3M)&lede=NPpX!w=Vp!&-p|j6osL%QhCUTLKk5J#NaT1@ z*x6z}^h~vvmIqy1kLf=uegoc@&*fJwdBs0B_ze6B~Y`VCY0ArstJ%@AhtUmoOje zpx}DBr#TU$p)b0?aVZ%&v-gaIra$sqw>Z^OzIsJNob&0|j9}$4N=pKdmE$=fNT4PI zXD{6Ju%z`Lsb(duZ?zY0E=4m$w8yZ=P$elm=4%%G5;Ygp3Q=CwOFFB&V(0uF-w`&> zPq{>Y!*SRQnQWR!mteuG&ld^>QXNb1gL=;4wiPj-MtV;(`mVRlIcmi9t-B50iCSrE zKuQBPczy8pJuu*=EfWKMKD4k40mv0m>Veq0o`|+VmhpBAPGwY0_V!D@Et9(YP?A|P z5g|jXHXYnj&wo*meoQPKjg@Bgh%sJ1^ju3%+J~pA?&z%_j&X$_))Hro<`+xac2r2Z zDVVNjk?Lpa0(Uc#wjtJ!4(|8_m1zyIczUi{hM9)cYMgCX%)^^mUfxB~>R8kS{mw1g zfrb88yPcJuq8pu}h0msh8DgOHA)s_(t`CSfTUaVsLP{7NMc9pVVwrMe#86rIVwc!P z23AD&6>_W)#vio{p_WJx_xHQ$Fu-hQdG(BlP}WkLquN}0`h!ktRyiZOod*WaXgltE zldV<@(vV#r+xmeAR?zbmjL99`bR#WO=v3W%Hj~#_==~LLjyP>tsz8ivb&Blsi=|h# zcN5{J>vP6U7O9HCq+$u@ZU;dU)(pB4aPrQ?mDsi27dko#_!;*R`nDBTwBxT8_e$?Q z&aS*ypKV-ZuTiMM+OWNz_iAq^j(ew+m3wyu)8yacAI04h_p+rh+99od8xLGrcmiqE z&R#SL0?stslXW+j%LQ^ftf)v*iQc$Cmg@vov)xqR-kk|UM7O+gkxZO$-wb=V{V*C9z%YXQGuvZjvBhew2K{iR$P1@)s!ic?Q47_d&^zG7mR`Oc%@@AA;T zh{#4#QN~=&yx0nuetN5PoO)MyYNoPsZG~p&Y!6`Yte`Q|k9tora`<=oB1f2%#NRqg z%Ce6eav4-z-xXQEp9EW3467)X$ zp}Mv9ui2V;51uPIcal^#bGT=mo~;v@2k1X8Qx~c{SK{))xm)N8XKl94pgU^G0n%Dc z=@$8c>y*4O%-ew^Qju@?>PpQEy>}%?qf(Yfg%J+JB1>k z(M8J6l~jEVPL2#t5#{Wt+3%$paS;%cZr~O&4_~EBrLjnLRV&_|cG_qslkl2P(SOr< zuOQSXpNi)}3!m^Z9bn7u>Y5Ej`4w+OD29x+N`q7&iL||wK#hXcy50b}Ld7=lTTxiZ z>DFYmWue-ec4uo>dvCgp+(Qld)!LcXZw<1#b=neV{Mbd8J`VR*SAJN$OOlyTS-7yn z!t<3X_Iw5&Hv?LaZEiWByk{x-tbd?U%~5l6cqcda!tzJkZbI1pQw?IhF~Zy7R+&hZ z@7+*9f68EF)FCT5L$7qtU0uQJ<={6upB$-Z7u)7&4?(@IDrr?@jWcp?mU3)iP3B>> zAOT~HcOlqjk}2hC6-Zh#>IdR?i%@1IdEToSRV#D=U|KfhUNmG@NoN*0?iNuF)#J(9 zB4&@}v{diM>uo3)ee1*1qX;#kXK@j%8Ja_FRl>|(7Pu?vT5RTZV?|-CW|0eLu<1{t z)E!W)*#4BR9CC&UCaag{)~UBPFzudh+8iRdpgnf!EtSNGX{q8=GSv9$>Y0;>?gU=p ziV44>Xa`9lOHAyVPU`f%nxs>2h`{bpg_#gI&73Z$O8CX-|NTXD{`)^jS)}G(*0l6H zG<3>OHR(H?7B6#MhLw2c7w;~5E(Z#q=yD|MB5PK{4xE%dz{ zq~4sqU5qrUwHRPemS56BwUCp-k~KRuLR-Tz*Y)UK?zelv8+O!e5#3J(mvobE0XJ3i zE!W<0J-C&^V$U2g;pvcCHJOkiw{&IV&DO9?y7Qp&MG(jVpu`@KrPjKf1-T+hI}m2^ z`I$`-goA#0l&i>BNj%3n$>(FSs(&Mi(+G>)OGXa{(RTFm8lIo0&Loa8kZ^(KnsSs3{WtZ$71Bb%uqCTw zNu-ql%FS6jodi(iSlt=cKci>JL|@S7w~Fok76%s#1`7Rj(_&p{QHWTiSbUilwmC7J zl^TUbS|y^6ZQoY`m2aJ?U+1vo#=ZYI@&%`Ni39vm<-LMa#=u^9S@aVZH_s-{hTTIf zi<>rfCS>IEZ@qMPMu^6hemD=>z_^QT*Yp>?#{q}=j(xOCm= z*$A&qb8;o(*=2MbP?g{LMvD_drlS7Z$%mM+xW&l}x; z>_ceB=TPU}{$=1(TuQ`B#dzi?XRdn3xcbu}ZK=v~dP_aW;m;oH!{aoIe5y03-zdZO z9Vf16GaEWJYK~7%lSg(g((dRPOc2N>D+>u9gIvGH3eEo3-Bb}yGZU(A2$H1|X<=A$ z=?UfG11Visi3x%wdMVW*5y%$*3m8xM;|qd|1z062MPGl_VOw|Xnz3Z!5mI61mO5e1 zg?KO6FwaP(XvQZCqdG^R{ZKq19j-n|#g}2cTxa$&-)pAh$^hBzp!%~i?t)AUXYn(n zZo(m=m-r^K{j`ukf>*BcH;Iypyl{!fQxlR*1rfM`n(7jGRs(hJS| zbXd4#H%a(&hp;ZMh(BFgoX|6MogQGlmBdlK^ZXB0dYzM;TjU&@-_AYo?V90N*tfmA z+`E?+?YfWJ+0NE2l?L!K^TPVsJtk?XR;8@VhL-}$o-s4vXRJcUXx+z9CTiaJ8Tk#q z*T7=Q3k$&OWpf@leHTQkX^92G8!#7lw;0a3PoN$Gtq1mW{KS<8=Tn}!4$?MpM$tuS ziZwM@55{jy_rmqM<<1dA)mlW=4#N9IO6|XtBYU`fuH?}uiiM<~#y;n0REb}b-A_UI zw|cmKnK2-mMaLYZ4B`cTCiFwEAgdN)y(cG*^AJ;zF!YMMjX2hRrnz&cCQSt{>?Mt2 zI^CB0z;q3J43)?~!DJq=I20k%L|0$fS%a7)Nr&w#)Al2VqEQZzg#>}sc{g3;r?`Iw zO2lZ6t{MT^!J|acFR()#(^LjdKW70x*vNw{AyNL-D9%?U9x}C!q!B2111tMSpJR4E zk1g6gcgMVKX#M8#bvu)E_Bx6n&77U5!?41;rV`8cYul=-wQdFZOLKi!hOaNI?mW$_ zX>Mc5JZ)g^`{k1T_TrL*8Ol(fdE8easKRlMLo`Ig5HCm8mJhUl`fmqt+6eztNivHM zRWCi<_?Ot!ekzIdlA9!!}E@fE3Az& z!MEz|t8UcLLND5Nex#TNB9|bL4ZVLfDrEE12&gUix1%waDS<|tAMM!e5Y`t&D>y`4 zpdGzAa>K0M=eXVKBKo0$-&QzPr}M5{vKg!%`HX~rjByc~M>CMCiEXmAMv5y&IzZ53 z%!(;MdTf~}pl3(Rw)pI-9K)!#ZUG%Q!Icpp+|jr1Qh;zZ{-@z)P;Bpo<`nm(9M3Rt zL2^KwRq00VE9jn;Of2Q9y0k0CeSIpPf=i*U$7*(2S84>g+tGce@hOdYz5CkJ7Y}v) z1b`ZJ3F!a(+1i1fvL3yw1CZ<=AIgFMYsvqv+kU3h4RXtOx_!~Flh|tw$qbdn#Y#=j zr~)AfI?qYhrYk+;myYc8D4e`TyS5i#S<_h2%&K~cvxD?%K$+|vyd0g#!cGwS4v;v3 zt%-v~{+4m1 zc#=zJFljUL05bw%7N75blSEa92|KKuu_-L}V(#cGWVMQG z!eX{i3XgSV$_gKZgc#qw0OV%DWy*V}z=+I5H?S7&Ex=j3*phMWU$mOSt#5VIj@ftJ zbGZTjfvWqJ^*wCoE5A?q*|?j1!b`8v(CDY3c)gc=@iUUd+CxBd+4CH*LQI9dpj*&G zSO{5&nD<-~l_NHASzT~k+p%~smX`5|kC>7(jN2hHv_bh)SXPR!*woHR{VJe0knUM( zn7*~ofo-jx%hM|9yfRbb;txQPnn2dmGvoXfFr=*mgMHD*HLifvYzfaZ+f$L^Q$-LA z))tjEMY`+`$4Ns1AHP7<@9eHR`ea2=b!!69&a3Px_I-7!W>3&_Cf+6dU&No0Ch$^)xn^^v%`OYvv zI>AJY=eKgoBf%hY71-R27Zgyi3!={i7B%ei0li-9z4eYF?)4dqH%8-I^0w=Q#1u`j zqpMWnim54Ob4*AWeGq*=+f@8IUD*PrKT4o{N$N>g-~HMa$Cft3$@haC*!DP8x4~KB zjTN;aDj>ETAc3053y*`LD~cG1&ERS-*ce88{QFUO1LaDjnBar16wQYv9DJiUpNc}c z1`W)%&I&I45uAEw1ASU~*rxxxh3RNZ_>B~nRLMkl%!Xu{P}%L*rDYDzvSY5JTdLJg zZ^JA&+MevV$hn;cHv0yF?3JC2B`J`qLUaymR0O;bV2ur@t5M5}Vpz}r_?XDKfjsSQ zRF1L``jN-t@Z3v;E-(YK?eZ~Ewb-;d%%aWW%LB+`A#Ahk-N$RAw)IkBw0xFtNf@pi z>&lWZ={O^ycbO?5dabhP2`J84vF*}zLQ7?kfVC(B0S1tX1bmY|yheOMwm^S{hID+C z9oz7#EdJ$0cYkK+z^R>+BYVKPesQy#_c@^s-K-QcZ9_jlE$7(HNkHfd1p(R?^Na-B zLYAR8SVc<9#-1w2l!79jC(uPQdM48QUz|0qaB+?Kb%hKa138PLk}lBm++FKRyqyl9 zS$9jxy#d>I1p3V{G&`FnvDE}%w>MvWm-=(a8&j7kNoee&UB_RHL~+GwY!Lq$T~3w( z188(rKy=OL%ThrSHkv6=7`{TTZP3RvMP4qr9UuT-?!$HkJ3N%{5eEUsGD;#_d)Tp_ z5h3*M82RyKi1LVQ2iGUrQIe-8xo~Xe* z8-Qlh#jt7Jtu0b(4k;egvuRn(gGTT|4VVTE(%t%tw7Ia_cW5(}B>mQtlU6nvdf3$# zB?KflQ2myA%Hu&6lkBP_P+`tC4TgYR5KS0}Epzd6Mikh?``)VKWn(Oh&>~8jenWA- zF_U`W@NeslSNQ;Nn4rsTHv4(ov|XDUQI9nHJUVs5YpQ4R;@J<$+D}hE>*PmSJfCgX z{_ZaDaMON4WpFbJ{IGRP9lHav&q~l;gQS)UpKn-23 zmSNWL{KXkSt}+4v0CKg&OM?T0AuEl?nl96S2`pPo zt^o50dM7wP5P_6N6LX4ffVQThOF2U@VVJb0R)xBOxqWXhsXk^5n;RTZ&e#?eaEep* zW4fqYZ;W8nzVGTW@vVpX)h&xw@-u)Q#{ZM7-ujAgfOx1qFhXs!h2r@7Pift*9X(z9{=qA<-zKh z=h_%?<7DQjSL<|l)^s!T=$l9}4;k7qFG%$0`ih#4GeDDU1hT_oJ%b?40N`PVD*yrL zt?z=-oI#9-5%>X7kicv6Ihne8iK6wg_}Ysyv+>(3nAz{+q69F-vkHx`WC7F zROHNlNsa}7ECDS{+VgB0vNdx9&mCIM$fUk2bC-xFpbDq4qpMvVyPUu`%sHs}!}ON__2m`jN@%*NuIHzRpcwhcbI&t)RMK0b)s= zF+KqAg~el#;z{-?5nBSxR_i>m(|g#H|B2mb>2KKPvM56Aa;5@0_Y2}DNg2s3{Yy2n zdb>cj#{^LMFV}^FCP5M#yRb9Z!&DzwQ6C5y;S+eCt=gCnb8O}nB`)woEU-ue&EJ`v zjS};s#U6J1T2x?0J_vN3;z7(1V}9fa$aHwuo`Ts$VCmXcqHfv{ZjVjZ3jIn zGw8&qFw*%DVC*XCD<&=laP77w16|mO>|3Z6pwL|aa{6q%6ggN~3&0CpX9ZG63_bul zK^Z7=GR()j=6peuNS$iS<4%Mt$Amw2U2DOqR@IP8!&3BkZ7qj@;P@E@nJmstQt zF&&d$FYiL%2_h@8Xl#!II#fF~%2^k|;CoksQS&QHkKd$s`VT*2^5Pj}f0rHT^~wNk zzPvAfGIYbts|_nP|3B=LfuCk~)l!3)oUnmMmz851p~Z~jBaHFx>mXF~&Um5HNFH=c zTRKjO?(TgG&~`TVuClOqRi~W=dg!oz_51tVk*!bSj1x;5Lm$%vhj3O2t*n=%BX^W( zU7Ctnz3Y&J--qtM4F8{}7TJZ3t}20do!qSKMZn>t$i&?0kX7r7lh_Ar*+r9zpV2mk zvYW5aCE8MQLB5F3q0fW%afrxt%7F*dvLxDXu-stSt}8f%zm>jNo%1 zgY79@!=?2dp1axQ5@Pj^szXGuMT#%?F%h22>3Zo#etZ?<5AuF@8vpOh7^BM3Krvrb zt7n`+{8|@wgo}jVo@{Fg8cMQM$l%JaBc7|BSMhQGPL)+le*D^ovN+Ic!%zdmeCk*S zwbs*`iap-BvFg5fB6$*c(4x(w9@NTV(fi^A5u+y`IJ~9EWRE_HSn!dqyE$2YX}Jp? zYnZ?nj2{W3%qubyhJ{oW5!rSsKsPdh*l+p!=K_C;IuiK2C^ABSwT^3odc*#7uDQ`0z(Y8$#MxhiajMpPZROhxf$sxAp6Y-EPEV1~9F;>ivBx*D zFLji_WC*a@|8B^dj1ib)z*05@vnx!|@-bVhKrdgb+`8C??YDP_rIzY`jZo0t`rW$& zfZhPW78aC?0-!qqhJrso*9qXyXnDo*1A+3}ul^BmG!L*jPHwLwZvSTKe)CU^xZB6= zJ`Vi9&ry)v#N|G&^x-Q1|4QNu>^=7im_F9X*WqT<$W}=(yFcdr?cWfBNIV3$C6IymNhS&e%T````?=7n~1tncGczqP`V1b0D{ZYnF;=e7y`Q zfhPmmW2$-VgceF!9T!L{o01@NO^V}O5z>hc2@6_FMA6yr>pVA1VN4jqFQxK96+H`| z8s*C%5019Kct52~8hm_LRP*{e`w{vGHqG4Vw`-lC6C--qE+E4C)Pbfu@CBu8-G_N# z>M@+dmj#bIF4pck6tx^zRGbKcD;dfyVV*suYylch-vw7)%!`C4`?x63 z1_hN9UXFb;l;`TWIme-CuN%$25;qdZ4(JreCu7~ z1Ev*k09(;M)_(Uu?Hz6NLn1mCRdF)=@m-k_B$v!ci8H=1YFoW?V~L*XyRC@G*LYc< z2?)}z*lR_Py&USzpcLj@RQKAXMZd64z-=4KcZJVkl5)CLIq6)d`!M%uhkE1St$}P? z>@j<%x4z$^I%nM_v3Q_C4q5eET`2CRugw%03yUv()5vPkx-5>-D_NakK{Z+DX>u@J z^%Qu5r$(<517zG z3_g2pFZgM%3~p9!Ck>fp(Z%*)2U*kIR`kqgS7>=2bVlUHu*;NN=f%vcKm0ZzYPNiw zq2>8;2C^)7v6?&HHd+Y4gSAg2pXXa!$IrlmG!oXs19an(HUp5Ne2lxIsJ$Dh#EftK z=z;56k)i4byQ25)EI^NZeLOh$Kqgh0B=Fx`v!H$WIhfFQ$w7sG74GTUpRMZqMDQ3X z&6&yxSmjqZX1qbs#U94YQo4^ogx%_M4|%Tw$GTs%Q0Me!vr@BK&#<@}e&fN<=wAey!Xhz)U_IZ@z{Ks1 z%94YBe`iMPYq~OXE7f=*s{l+YEA>JFa-4lZ7dW_N&}7#RrmM6uxE4uO`ar6Hn)eMb z1-zz$$(rm5ydB$LJ014Y6yuxlHXqZP>Mu3G7Ng!EnxS)qqQny@P(bUAq1X!;JmgHy zcARcAoC2u@9q!jETq5kbfu#&O@W;>873beFoaML}zXUL|2vGjbUrX zf~t4TqH~|gTBAtoyKiErwyAOR-Sg?v<<`Tt`Xzj86(s|?TEPRk5BQPG;``4AfJY7A zda#d9;`NI2Ta)?kp|$s}ue9pebPlA$L@UoNI`!3)HWM>RQ(RcC?mN9UTMIwGS1kgZ zSzXg1E8X8N)e%>Z^G|a+|Ko9w&q|-QYPFuH3^!#qbw3)gF|QO~b7;b1|3Ubo)b4PN zhkro=@5u%z51LH?p6Wld$$4YNj_zRj6-|QeJv%CA9+(>vMubK*8%hSQ8-|3UUIs31 z%f-%p`KbEc*;gK`{*Y_1JXG_O{f`*z;W{kqSZkJg!_{r6xhCl8aGGXs2492kvv2E> zLpfjJZZOB7q4m_nb9*~oVv#M;MGfJK{Dllzw4>Z9UXD6-qN|U$ANEc^>L!PL_V538 zTq^WItvT;T9Pm77rTDh&hZG(m2J%GSG0V37?kqn#chSA=7u~a;lWBm=WNQhdVSw!O zF1Hdu(9hZM$pm8zvi1>maM7J@lXQ}$^Lw5fiqtI&7%}T7dg(1; z;ols>B2F+UvR#+ooUq>LH0@4KYUB>au!g z=RN$yTL!WGe)X0YP_e4uEz(b1T zk|@eupj7(Ym=n{7doXV1hDk97_0G=1@S zlV;_Z;k%8D^vJOEQTh^vn5ORFsjiyrukh0_h?GX25l4y-;t9|}rIon*M;mADTE#2K zLrK~)hmB}=?!B!Z?#%&JLR3-pJDXmW&t(`CYas-+|Hzevp--%0!l&=N60)7fY;s3i zTKetD^HaO_bLXi~dZ)nxUTrT#57m8ZarBx?kIQ+!?MJh{_vM1{ej}EQ zIS|3giFo9`Vj)4AARx(B%utTGUFuc+x2 za)N7HH`Qad(x%Lu*7M=gEm2AaL}&4o>DQ>&Yu^A23Hpz3LBkE*hxj7wye-@PZO)1x zN%8i)A4V_C$*i<*+lKU_=(hxNAR}_0?0r_=v-NcP{$;!S57M~3#2SwYzT;&f z{&w|JPn9b{I$rPCumfHvE0@C#RA919QQK0hUCe(~=VO7PD@3{r@Q zFQcq$?55@id{w_PuElIiZ42*;R7{gxeX=6|hXm(}*WDinx!vf&A;+E-f3!o@X5CQv z0^-T4+#mUz)vK|Oy1k6tzTLPNU=bAlY;+Z#xPH1w5MpCn(S{*)zCuCjYpyZo(fybZ zb!@YtT%`y);pHvIm=0gzZ)w@0BrH8^EDw`0%?v_`)1@lxIJM1Lq&_sDo$!KWIE#vy zsEDjXEQ;P$wq8RYdv`}5!@WCCJDb;Io858AHv70Vfln$=0?*gC;0XC?&!z^aKcXd8cVjmLxbq9X(+zXGMxLjL244oYiplRSYH zm`nkgK+@)Lw7}LRyE;Mc;4Q2!)yiZQQd0h5a8_Jq7ujGJ&%a_Yu~FeMmF!5! zB;t!%S^F%{1gOO;VoUv7Zyu@WTv8dF8(ex3F*cJVKNVU8VI?A_K=^P?Y_|f9UVNEk zmG2Nk;GrfZ8Ty7>ozAt!#$?orKI1;kQtWjkT#ls2>77kKbbnS_8NCySu#4^AhNSvM z1TiR^cokD>Ybxj+;ZqaVvuG@Zf!C0 zx6&#NJgt_$7ZngAuB6lw7p_)M+dd(AwH@z0T%EGUb8-Q)xDZ5R3kUTeyKS^1v|sObuz@f$}X)rXtr`h8(%K-)f)SU9N=E z_Y^FZe9LNvxHNb~-PT*7sa<|&r;)F6k=aK?Fom{mzJM{fsG$-@MgxUiPmkvzVZ0J@ zUS$Yyc0nVKUbm4XGg(VC(c>HC!Kd7s#M*nZTYszbf&6kx!@zcIl=iWz)#zUxkss8t%c%8l#? zR|?P};OfMy0t275$DJ%LPXMeZC4!vym49?a{`jl2sjk+rimwG4z>kt>hb3O;-e>T3 zr>~re#^CSiBVH}*zVM}faJ{0fAtLz}(fPKsAOWBQ%P=aQC^kkzX*kxLu95s)lf($eeApFYgce@RWo z&tUH0cv6pF zm2;a)pcj+ZV@eSY2)zhMlV)fELJ<{FT2Q1&3sM9^lirDffKsJ|&?6uq zEdc_Akhbs4j5F`vZ=SQ?^Wl6t^DRGv$v<~lbFBqEOS|T2Z>ai|29LMde*G%{<++sey`mo#P~U(i6Si+ zy!iUK!c=;pHHtk>U4q->Zm1bfp}hQ}%`UO9hk_wrO-ZkqIHyPEV5mtR@ z(y>Hw?#pA_k8%ozCp39s?Gv)gD3@~Cwga_it?v{)m}CSIXp+l@7%NC+)6pJ$8syCA zgGL{_2PI{9@8gr?g94WO=<~vzbok1VeBL`#YaxUNp71oot=AW_jS<^Ky{R5=4MBhH zUdf;1W84&Q7kq~Uh$eMwFV`mb3$^-G>wGdUM4`kD@%6%ugn<_YnTfzUy4C3e67I+4 zKp&h|zL{BK`uu#!ozhWjn@?xiF2N?-MxkZP02utIS)4u;idX%1Skq z^ceAxhER|9(OKdTf+Dp^ZuoMs${Wbt@Z|)Nu7;slPeaX03^i3?Vk{Bvb z?t6_tP?JC4{p9Sku#(=hIHyl$;br zSHUKc{NcV*1t_24(4s86i>H&lrP&VdFjm&T2Yh_9Mv)6HHiO7Mym0?Lc`dwhNYpW5 zD0nbmjd(IEGY<_qH<(ly5ju$cSxTZDE#f@DZMMm473+g5Z6ox$}FU)MC9z z@E!Q_m))}{SmWB<7}UGEy!>r`N1t=M;2n2&TrkCw-~WE^a$`~(dhunGseOLEpx^J( z{K2L}CFb*|PKCvAAQlGD&s+3XUNE|ZRF*S6Ngu`oaW&j5uh7q3Dxhjf?6FE>-3k=! z6*_MfthO(zMpdXVU-6Bh()_~&xFP$gY+pIHSkK)EAFS1R{aHlBH5=h64_Z&OhP<^3 z?sw7`fA*#*KDlgt+-rbc6kJC1?BNhA^umi-E`2k>0-2PfG0|z&V<^xHH|gVXpoyBi z9M~GcU8$2%wM*aTcHZ>m?b=d~%NO%s_OAxd5BZMx*-xWqY6RyUS9+97y=o(FE?C%T zW}NlbH!*!ncrDVNz;)?vEeFrOZalAwIJbu(_tV$F>DejsAKOo8G%f;Mfs8S>y=ClY zxFoIyQAg(c=5lvkV^7IB`)SL(>KRd&MpoD6x^hTkq09BtF+cKv9%;U0BDWd-?yV1m zOEchGen{)c-hGZ<+8-X-H1>8FpY153k&Ue)<9ZfSX#Q=`G}~%{>Y_OFsZHOB;3dU! z7c%Nz?L~YI;lpu7TkkDLlzN=_=(m_-{gm~B65G}@vju!P*a4S%{y@K>3lJmaVmnh| znR;XPM~C)r7Lp5&y5HB3amso8?uHdsI$wl<~ z!%Yd8#RXgMTi^#3_UlS3Le_{f#xESp4=OyPJHk3iYI(%ZBe0w7ozcrU30`?u6KCoC z0HZN!d#~j$4oF36294;(E+HH(6y%(fp<8UzO2{-V4}NCQv%*)R8*tvmbNWSiTN8X) ze_^y8IU-?huv1(M{dgMEQzG8bOoEbT5D^ow;bQF>3!mBz+g5QGWYC(uWYzcI$h}?7 zyZcE%Z)NMVuH}QB=cU~a8t7j3mU>7S+yH4No(pDj>-xkt(_{NN|F{La&q@(eAL4^=~GOKfs9SP@W-(;p&{K$wso4<}RN&fYw z&1}LNXdBIJeE*X(W_KS_3SkI zZJXLD*0=L)ri|zuq^7rQQQUvW#{mPeKn>Hg^wgvGB9z2b(!{NDI*fhPwwz%1wnob4 zt*ay5En_-h5F-qy?|sFa=IjH$01y?q;%kg(NIIHwm8g!ullyM(kL()O;Pq;rqfwQ7%}Zsye;Z8|4Q8V@bJT5+3i z8MTK*^uG{aTOQqdw#-;Dua3wXtA^eIS|rE{{uUl-+3*nrVF&r`p-A$=MRfzDMF#sKsR4cPLU zh3(w0)_nh*Si@EJ)s@MuPs@fngfVL(z1U61 zigou>=nk`^QiIf8$g=H*hTre-FG?`Oz%PwJ6mP197#0up zv^&V}Z$Azt>>WXJS(n`0C1yNv1~OE$oXN3xkLa@ZdKl!=&Zgq&s^NQC%9aXpD5;09 zI2^Mh48V@-uhd`>=<_e#l-&j8YC3+^ZtcnPXpk#zS{qv4aLWpB@4qSan#Lf?G(` zmyR@N$VbM z`gz|Hz{9D_sV)Y)0J|#FL=}G)mag`*v5q zmkgR$1UV+-lG4msL>g9-w;&*7$ytb*=OJo|CB+7iq)chfv|hd4*&w*6O44A@ z24bWNc=a*RF*QOld?R`LL4RL(t9m{D6^$`ekB|P4 zm=E~Z%I z6j;P3Tf}C)!`%SMusTSFi$Z*t4J;pXgb@qb84U&q#7gyeVMowwkWwDtS5g-ATSh{f z(wmjTg=(w|Yns=|Sl~sp1w3u)jtzbvn|Vb&uBT23Ja9ryz980M;EwEYY(aw2SfdfN zYh2B2rd7Pb=uw4@lWrg2hiVPc zg%qq_vw3)iwp+;6Ia>KC>8hYZhUT^kq@#0q6=E#V7Z55XC%6vs$#+?W{FTs+FnU3l zw_LH3fa%FOdu!`Ux81tk;B39{L9=a3!?oXBimL8M@qUruws`PCyo9lRzPDBDRPm?q zL3X|z`1-TQTL=IXza5_(WS&e1iNZti#j;y-V>5MYM^S}}CW_(UAj%>yhS?p%Ygu|c z8+{bxBXCWHWu^DmJRAs-H{pyf*0f|Vh`(9y$d6tC;V{`lcu#F^@jR2XOt4bP-=bmT z0*O{WZk0qGF1_N08jq&m^ongP1(lIV=3TeHUvOU*-vhTB{$BRwi%*M8#9Il7<>$=b z0;CIHpsWuNVD4L<`0=MpMSPFp@erlY0*)JkU`t7t294t9a2_;kZ{?N3Li4{OBxwqx z;a5#<;`j6Su8dPwXG%w&@?Bw+*SAKN=tLduSxoDe zZ69xVw1!LuixgasQ%Npr(2o)v6yc`l*LBMLBFr^eAXYK(cHkHCn!zXMXorF;GdQUi zobDEi)UxHx2tah*OtA&3IlT`D2_JRCF$-R6y-USML5iBE>*jbZ3qVW;Z*`-q+S5~4 z9HkE!`*n|k1$*<-Vzao}>v8}os$#NEFpNaYVWu5&)+)M+^{|HR#gBnu6#(T?_f@Kq z9Q5wVZ*Pq;cTW#Ntki5eKzlyhb7A`Lm{@*~D!$h4KIUPtV%YN?22~|@5#!Z87S}Cf z8}&SRg|a+qPHP004CsC;M(#0O`0n>L7&;tEF@n=7fUd2-lvU7-#u}2*bhJd53ah<) zyOoRuC(T5T5H+LR>aOCR(mnOu5s5fYc?Aj3MwY6$mD^u1b+0wCE!8^3d*KiYKib^KvOr^fl77bpviujE7xlv+w2t&}4w|A!22 zo|(as_n8Z_eBYt^z1Y0v@!qBlZSH`YrO{4e3zl0mc?VrGGamW04KySexoan3dlRu~d3JxBr2vQYJI%DJ`gfy!K8aTR zK=$?7<@yAOmU!ScM*qqj)GUerx;Ie!!`uYo#WUSg|_vp?GQoxA{Xn5n>BBvV&eAL zM)OJ;Ne@@j5~QXZ3_^;p8>O`J7`(lLwn=OSV+vl$2|O^Wb}H@LH^N}rO+dljhMFQ< zI7elaE5tZ_vf;uL91D5wXp&Ncmy!Kj+g;9|xUe6kLeL6Jl&>`f<=W~#O6(Fps|9w- z&2HsO)8?3lCl@)Oygl)WrIpe&< zgE)2Rt65HCvx9}!03fBMm202O44r=!^c3qGD7P8XxA@Mk+`*Dl0Uxh!!=7@49W7(-7?2Qk1sfdi->%QCnfC7d+2X}d4y+R=J$fy(mVn~$7zQ|Z3RU!H;aTyN9AX$( zum13SS)_E{vA4J2wJUHSE{oH2lt{kAyhHGQ<=<%K+eXcL@Bx7R&cV&AvV z+?~oUY)>NTVIZRw<7)274`A}S(8Pn!&vZ)1S;H7piLE#xzu)^?$R14;DSjoX@xD-{YLdY9-&tUiuk(Kp>X$-R~rP(Ehfa5GO$ZT^;6-s<>TC z)}U{clTp(7dkjaby^rmS)t}An;~{+x|LnOpJEQGz?#3s4iuX7agR}kIhVG;z3l7B7 zHEg;*X`gIKJkxa85^fP&3DPNT()8|Y@e@KRZq)gjckTJ{_)3cmsiJCz>4a^gPjdUK zd;>c|i?SoFUrqUY!+8nFPdDvg%0-Uc8LEWA89R!ULc!9QeN{z))I-Aot;Hjn0dD;% zeYKR@k+YQLCIg`4u2IH7oba?MtkRxE*;PuRR?ol16o*8s;Ddzw(YgE+vbarF+PR2i#p~lo~kK>t{BIN%0?TCVzAv6w|R&xCJf=<}QMdJZjUq)wfM?HU; z^-i%%oTWt2K1-j0A}H|*JkuI6PzKLiy>63wN*Divje7t-UDcO3XDuBll&gJ(22VH3 z_r$8iX*|1(AS7&>mXJqf8>~mvb9#po1UkeoLwJVy{)*>JQ$SSJo*pb8KsS87@O{fI z({0Hp{?;`sFFOk`kHyGF45DX#|8pC(_27(cmrk{#n~XALW4rU|lJO#JHoCeEqA-~p z7ESTi$nRhetDLy}pO6JIv(8H&)hl4hHheF0#BT%H+h$6W`ApK`wDu@ncxw8JHp@bHMqg(%DhS=|A04|!N3~qcOy?ZNjNk z%WjTS<70HZ*cYvafe&81A@FBiWq_~CriPi9dyd~w|KRmph?GwApO-T z=OJ%KJbEWG7uY-79j$LY4^gGxYqIUrmXLp5dU>b)5r?$N;H1Xta9p3umtM}k+#U=> zM7t!qo;Z12ekXaEci|#gH(ccJs1haZ8F!2wcIS8-76za58Y*-Op*ow! ziU?2$l{YIUgAz^3pfi4i7S5SEbCD}``@Pyz4+tNu_jHX)d7wu(gM>{B`Y&2Tw;q0& zRh4-9%AsAoJ7$-DYvV{+Yg=D6+*CN0vJu?h_;}2?YTjTGw#_Hp#8y@KHW>2wQ2{Aq4m60nz?S?WA zXUrhLA`_nN7o<3Dji#%(2>~l(idXg_OJ5hbzayOtQsW90{2-OzlWW2%$WGr|soaPssJ<42Zcb$I{-2VsIkrK*Em-?=-BO4cz|{(>t1yg zFC^kmM1H51eSCLXodd3PK@tDXw{#^z$~J5^A-WfxdgLe`E?V4Bx?Hz#{X^M`JmaS8 zcCJr3>WXtOLXDQ1v^_UAvgBsAau~i+0m`IZ{id5$BJ@p*@xb|@5tjwZT!TTq1MTHy z_MO?eSIsxa+)DkyU+KRP&r(|};aSHd>$jqa^+*%3FQl7zu^^T}v}Q&yki@|dXy@T9 zL#!_O(2ZTb)kMm?(Dh>Huagsc5k=;%`o%YNID^pV)^Jb@1aavCb_kB=ZxoqM?Pt-QA##1cJvStxb`19UpK6sMXp?hM-lW&}4o7}BlYUHnJJl-YS=e)jUu zwc=u8{JxW*>~^tgahX%YkMaG%dv$Um$KLBqoqj5@HL)|yjJ^HF?#w1Nz38@^ufoDX z`p1=va(S!S!W}Xqx-aHqmTT%{JcW=&_;Q%p`!MK-;5LGb z??e+Nl)Dyo>2FP*fSIeOCei7qF@5ZbCMMnDX=wPeeP3Rm?d&o3y><&>R$#EenA=*S zc#c(ok8Nrn>~1vfyqF{`xcaDVew)Vra|3t5Vf}Q#ofpZ;L7Qolkbuy|sgl}+6$xql zAEioF8nu&IvysC;*hy{hTn#hT6onmYLLd~k9|l%tqV{P|6~?Iu7!{+8A))QfP3`=i zw;MKlRA$xTghqUXiFaSwuO6t5!A6o6`Bwu7R_9`;O;B&l)kr%3Y7lP?2YaW!0E+ zjG`YpFy~eCRlBx{^pMrM>B~5VKPBzB;&gh=1ZyU zNKW&d4Ev+(%4PA?>VZ)_ap&~z>_lq@Y)ccaEWLm^B`==$RNv%a*0f9QFAeGo-HKJf zb0cX1sYlFR%kHGXz5+m_ZP=V3%5w=}o zBxUP{3>)OhQ|pi-X5>@n?P|Pq7N)j(J*sZ2Es*VnMfgU>PJX-KVVA<8!cp1&y`XL# zEs9l8`+_6C+baDy9oY)t-0mHt!VJSiTAt6ehFsopY2Hat-SJ49i?5q+KC}=v>KeSD zj`6VsIdT-bN=Y)s4nn%2%-E`r%bIzf>*)4!p*!(l_oLs$QoUD-U~O@X0BNDy9a8da z!!h^A&J^gsLS=r70bo_#WQ@6+AT8XQTLvwgpK8D^;)5TS=C*QrqaD0Jll`_X8(;hy z)v}?wHf-YeA#6H1#RIVh!zE6PJ?$t$wjlUXpWK;)SZK>xyynQsvrkl8fhfvx}(?oJu&0r zRSasR%uMDTVf=f!a(g&3txmURcl)0A5D18fI}V-3&hrW2V z0Knj>b&y+5Z`%Z;&W#_t7F)Q3#mu;Ohgji4X5wcjVGCYT5YrBbm}JBCWKyZXs8*bP zV!rpvu?&8{1un9-bJ#)soZKu931zmD(I~#uUG){n9aX*I`o7N7&&-w>$k$GgvGkRrJ`TE8X zo1D=h(g=_BRd#LaSr?;`hD7V)D(R6W>szmn5JFa=)Zwq~Cc&@mZD+Yam&D?Q>uN5q zx|lgD_vq*!u@B`lahctrCz*@TprHijRE?R?b16`(WLMO;&8c>z*34;c1Xr?TBF!9g z$MST!H|}k3-E4wsUB?&q)>8d1t1SqPXoNZqr04;kO}sD;v*M>Qt!LOsXF|52f$QW% zV3&U@^^7}HdT$1Y8I`kC2{P70(sd;3zGwD%hn*# zGPkw-3B@6d$tjUX7rp26XcD*vlPD}Dsn`l=y8e{l{+#8v3g5N` zP|E45sRWi9w4t?9Utr%q)y%(XFYB~YpiVp0>0=<*n~<`nbd?KWOi088wjyVDg<<6d zN1gU*H2mO1h)FA#69UYb3bzSV_K-&@h8axY>Sy{3iX-_5H4^6UgRqEVFZ;5c`e|J7 z+@9-T3|-QHP|55P0CbDmnPqX7PcLd3ie}7AeGhRqmCM4U$VG1znYU_7ND4(tS2+Rn z0n@yLK zo8DCb*Y}>emBJdZiU5Uw@#I_kS%y=;ie9}tS7-{QXH2cF#`O;7n}f*c)a|{ zE}7WoyJE)@R7NXCPu1}cRc(iEBzXWD&?0sy7~DiAz&0z=xNRHR_C1o)79k;Njpo+Z zbCh^!sHf0V!LnSdnc)OhHS@Fgf1q&LvITEXh5OCo;--PQiGkr5qUx0C$nC`tMr0Vb z#n}YQ`}rpBuXAP)-Pj0$>e1%Q#MWu<5qfBQden1p2%~xBBILksxPcg(*%A5MwZ6b$ z?j$)EBdS~1=ExDo`usuL@@R!5WTH6`CEr{svFoZCv;Dxv9hH-4cCL!vd8W@h=gelX z<)-~^f)4$xJDL#cS_dbrW1WV)b9T=85LvQsz}jm8Acd?67@&7(e|F2&Bd-VRjc>kIm)^NoCPmONO=B3j=dIA1tw&Y*; z^RN5)pPiKdGo1d{{ru~G{&he9x}X1xtNlOC#=jZQzvu~=+ zak%K5_ZvXo9Pn4789J0ROsICc9p@=u{LfU1jO(HM4s*y<+@`v(wc0M^@LtPm<(Bf? z)y)zuTpa@{7BqQ$F)P_F%@=#(G^oF;Gd%CVXuR+bdE_jCU9#SL2EfH}{;)?5tOdQ0 zK*?#Goz-3GBJS}(Q!WP5HaA?;JEiIkB`d!Xn1zFweFu5Fh+Ya8|3OlfLWM%8vQ41O znzW8#OqciO-pfri$-GloyVw!S(xac%VuP0W?{Dl8Ppk zvlTWvoS(|tsgHN~TRQA^m?rzlMlb}=9u32qoaU9P5*7L9*Z!9$?uuh}>wc?BI>svI zzaeZ)bE>sZjEFZjImG_=Uxbo%zk-${FmDu@$=)AWUCzy7rrKRPz(JGITLbr5tY4S$ z9*+jHZXknp0E3t-u&g}(#g<5cBhw)g64w=H`SZnYli2&?+?z5Y$*pL79_oIOq zFW+|_#YJt)g1%mC1lVfLf0}~M;(h^w(1^8;kJZ2NUU7YgA0d(T?4H&Ay{M(X6Zv-Zo*cOI+~{qZ27x84)16!!er=lSvTiFIJuVMEj9xoiJy z@{e!Mc*3Uo%(OYhW8ts82|aRTwZ8g^{FpwA`!vWDE)J-JzWwJq{{4{|$9@8z#9r?j z{r4^hlj`>Wc!+oL|AV(N{lK!y0%innWYCTqsl>+el25E5QO9-)K7W{iro86qY39EDF zKl;uyp8Q0`OTFo?GGy_kn}%RALAraYGmFs}qHN4hYL+%X_2VhQFT?+M{bNi1SkXBj zu+siP;ax0d6>0v$;rDC#69ruVk1aa=`&XF9FK$&itZr;BxM=^Ox}z!fGx(%qz9YOp zJ_-CXA5K;^+_NQ2v$LdfFZjRil0+vNS@q|*)LgdcW5^yF?d{H9a6RQ&(;tNu6) znrdL;J1UpYag^03T?C($^R9E~`j3P46;=ZO@%q2+U8p}8v+HbyJ4s}r!E(EKkKjki zsqSj;zqUy8mtVFg%rB+5<+J$G#e8O^Y(jB>#YCIi?95LJv#k1O8aNt0v6scC{M@y~ zG-*4BUJL#AEe$=wy(;YRi%0M;QnW^rh;i+xL%{{9lWaHtoGO}vM?TIC676wZ5t`!iAOvb`K zQCVF4SMMI~m%ZsnoG0dBxz)8hc{G!IJ@$0|xqobXfVmK0@xT5@=7LK0Tk!csC}%b? zVAlfW#ChBG{X$yh5Th729+Qm8@xz-wla;&m0Ciw{v4Ek)?Dih27{!KwN@0?$odbO{ zjN9xiU~6wjwxwh= z^eQ;gtxnG7LO(6?s%yKv26QK&T51x`^f$*7KHp%b+K;O@O2xD`)Of39%al#O1G#IEIFb`j<`>*PbjE3UQ1M+riwVdV(2MK=lZ;AS5DyhoUa7vF}e( z@^T2Ij_{Ofw(MgP^t!j!9GC7LyqY1%yfO&+PQ$;A!#}_MRUWu9&)pmBSsz%zkA(ucOlEyTepd+o&&Xi3EMi23p(zrvO>&Tmw z^iw&3_5icmO`IPi;LgR|hksSA?P)_g|22xCcw0CP*j>*LEpR-zg(7Z4^DTF@raAUl)q-}yz{fJB> zov{6_T&7G;x@kDG)SZZHpW}1;l~O&v!V?~*pRrIkMi)e=5nThf`$YWF7wBN#B3C!o z?9>)@$=3%J8^7ndB|KFKsDkRd3kCS9of$IE^^b;oVWMYd(ys}2R-3+?+9Uhzkzi?; z{!Pp=#beRF46t7g}~38S1k;-b)ybN!s@;YVC){fRF5*QYyXU5@*gaIJPHL z7=%(T7I!j_z_bNH`@2~TiF+T&^qgcrubZyUtxpk)@Xag*oWFvuT8VX_lKuT6m7q_- zMVT`fDXn`rBx60yWncCA;u4@6CyBwk@|$|<-|8f(1N)ixl>#Xi^o8x zXIq8yK)Dy3P~{a*kyF@v{k%ihvqnx8`L{ttw_5+=$wFrfwe4mzLZ|iE*EEtyduc8* zPU!7Cm_^$OR39%aFS83zKyi;{AAJ1Io7>22UOLe(bd(vw-|4Jpybzgw^dY3c07=wU zQ?J5#mh+A^{iXLIQK^(M>khSO-;&!B2yDebmv97`5CW#307him;#v>|7x1U5W29ik zG-xhRpbSjXfKB88mIb&_&J(?Kz}n$I_ww5zA#4m$EqBzivZ-)u%!Nm3vR^ z$>CN{-r1~Boc?xxoy%mg>>yupwfhDEYQ|*Om=b@GUnn7{cjrKRSn1IHf+737LLJn* z^_`H(h(s&oag8qO$pjG9FPD$?_~02g`RJqmjQ*vbg&VKpiqwUAZhU$=r>j>Zd$1F%v=JL zMfu59z0%>#$Uk_LV9L5#@i`r)DA4?&{nsAvJGf2*EgYSNkNT4fiu8+>^)0Iw@!^8c zgD=Z;D!7%6pObYT1bPrOj9YMbL&#?9{MTJfDzfC4cQzMX>hyC8vfpF3C;~4vGyup~*v zbUU)Yck02%R5LGL(l@W21diXcAKU?&O9}PgDi#K29-TZj{n;@c@h9JJgv6t_5H1w_ zOy+GMmzYy*jD4cTxu=#&@=Wd!HOU8%T^4l+O&Ur@rp~P8;-<;dkjf=-(e+P+5_9>M6fHBQ!mWWuzgkQPbX=UpeNJ zuwAdu+jU97K4Jj%0^J5^vzXa*zrVCzh*;;QxkcHHN9DGCT0EbT1tw4@>`Haa`FcTv zr5(qvq{Au#!=)DW>W=CB=5BS+S}(#ay09)G=nm6*_n{rDhh1k5q6B{M_dlc4#m}ix z`X$KdvA;TA-55ZWn@GKn}1Dwis)Begzs`j_+CpWaKGTGSz_W?Bqwn=_v@F=qYME) zy7Po~iDmGL4s^+qG~0^|0SYdFMHBCmD1H!7WVW?2mh5~?0u`_HurRl^>zbkyL9Hwi z#Y+L%{KuMKNUu0_<;?wa6iF2`c7QrrL|nNu)_~9`HwNv{_2f18CRe9%DC05|*v&*0 zw0&fB7JNR7$uTO}9CdEE;Es2yT+)Shz1bhXq(IKno6a-n=|YYL7j$OGma#ntEi^$lRpl{4&RZTqK7X9>ha@FwaH36eWU+tp%=+(9eLuW3`WttG0-F)dwnnVnC2)LQVj)?O++jb=<)Scb$-V5 zT-%jDgy1#_`C`mFp8CKjj#p^J$wx?`0ou2 z*J(u#-zVxg&cB*lG}-T?u2k^krAo}o7kMFi{?Zi`JL;GbgiHV`!{JBku*&0j6?eW| z0r(ZkcklO*tGL?LcfRbk`fJS2T#iMOelJo2R1xK@(t;}ve zgv~~9kg$8)9)qH7I3H^ZPjV9PJWR85V!9?~rCi>tzv;md+S6#2JyRS%dI2Kpg#s^x zEP__)8Q{|*fJ)kIuMaT9LQ$xihd{39odqO)iQx+^Y`7HX***FfznAPqvVv&=YUWhV zH3r!=`V3EMu&ryk=?I*Pojl65H$)+tmtR7%+BIh>SNM+2w%Zj3(RQK|i-M*D&GsAo zfv)6Ty||q;z7W?Y-?T|iF20=mrWC=x(@m-8yMZRD&hlB?L>UM&9bg?QX@9Zh~McMgpJH?ww8JNa(u#q?u& zBLU?)b{((s|6oR$+p!<7oXEAOTeOzC>>cr;6wP!Mw+{|U!W)PEvGPtoRHCXJ0ITaA zu%aPzV>$12Y+BRPY5Q93dR2|xQzK3yN`Wp&qNRc~?(JFc^T6*_N);ZbjGHjspNi11 ztj5N^r3;8RK|L`txq)01e!5p!uEll^N{O1VJA3pNJAo-83FHN~S3NE9=(P?Lzc*px z2feNmLf5`|$$abmp(({HqX1}P+e^CzIx24vDw&<=%kO6AfD(%l0uU~0s>Fbf=wIYR zGFnBj#+u*vYttGKTe#ZGA@dpOG2lu1-d}1NKVx)27;<3Et!iptA7j~l?Jx4ceETq9 z&(6H&v6AND1vZ;F*0O$?Sb`~+z1W3rxwSV>K;9i!kCJwfTgytR%+`j1?<8Cu*J>{oIiCJm=cF%h8!dXmu-7 z3<=$nkm7nQ2%f6HuJ`Ht4l@Im|L<|lLP zC{6>O)yssL-eoSpybxoICcUBARlb!lUZ=_J&h`$WdyH1pfF}G7$fnXgv{C7-wR}%; zWk-j^)tS>BkNmjYB5OrZsN06JhH>T=t>TwO1cFSK%a?R3C(VCku$3$Q6pu(9g@_e- z+y(kZI1an5enNKcX$`#!+0Lt!VO&@~lnnA$4?B|YwYicP2beaRu4d`C2I!s=`!=7y zF}64=)1)kmbG=STXL3qAAel_vnHO7?@9xL%(k~h-`C!4lS`U+cT+jdCK^jmH1|S!g z&fC4L-t)Q%@_4VCqdxbKT>p^SjtrKbOrr)@cI%(cYDbC*ndL_=QUTLuNl-c97L(9c zc_cgIBBHpx&05|9Z84VoNEM;FS)vGk|22>@bI65ff5m8{1;ef`P2ealP$dNa0czaN z%*<$((B&;kbyU`wc_Ostub5t^FMXQmg9xaLqzI;&PG9l_0B;)F3`ySy%#?E zrv{!&V>MIIspospo!YNPK50M(6yFX5iZ4Yb`JWLQ^y7cqW~oL}yS1#UkO|5pr@%I> zc>Ey*h(W!k>+oY|s8qRu;o7C_xFXWHlCEOrR~7%@^Zx*gUlk6o3eR~o<1;mWQC;hGoSFD6GP0wxX)?^!0q3-|~W^ z-PccjvyXORbk<*5so7?24t1j~3}WXiZ+Kjt$Is7=86BwaN|uw@Qdwk-)DuLN3U)%i zB6WJtJlVL!YkBGU_1G`3crP7nj1<0l@!}oB*k?aGeLtgrDO^VQr|e%YJ~I@1p?f9v z{?DkhG_#pgzlX~w{vfbo7{dbp%c(&Lc z0jQ^I{Vb2jfFwg{3kcSvk#g@@;;MwhkUJ9z4KfxjB#iIEitjzWHT6OWAv5f{C^|z`M8_``g zwrsIRIYFplEeND^%%CIE;5-u_&A6*{sZ&WP!3aOmN$waTh1*2IZQ4 z+n{=Dfy1-nx#&e8#6XwVQ}Hkal)#SxF6M&5$22?0dP%#ZCBJ%koKkqd&I*+M2B!CR z+_=Xgbl<%v`t;Yxr0CNg6NcM)Cq;N?UltIuv)=;o6Vq&6HGhweilpturM01Nu$c+5 zf$5dc1dPohrW`)*xez9yn)Ch9fZp>D=7CWCFE4X$+9f_l^o*b4@;mN7Dq}lPQY1tK zBTLs9e&>oC)~dQTFQ&L1$?8#-A}SkS7nNHrypz~wcQn1Tt9GXu*Nz=B7cqt}r4}2O z;|IT4TudKKQbX{kbFF_;c<4Q=Q{7rbqDmRetP9`lmb;clUfQN1rF)+MDU`LsTDK zm($hMw#@Ut)W04YeL^$f>s&#WrMrgX+5%<~3B6x5k35_c+$g zJtT8*x4C!#IUBf(euIk7{RTO5PN z!0_G2T}wdyw6!RNwocYbv-KubCNh-=%kbryyZYec0u2}{6U}S3naE! z_WRWzqJ^3JnqkgrU`*&EP<~~fK9|H|V?!}wU|$Oi#>_g|BDmC*rymAoc_1ej?Dbu; zgLgI;;{9dB1d`6ftf=`)<(dfDc*GI%W6Rhca&=gKhL;^VjFNaN(h$%1_=?9(vC=cSzBDpE7tVn`Kd$46XbF&Kv7{{=9yYkoWO?vMhst;7IDt!zIPcm;YR$}%04ab)!OP$@7?uS6kgsNGoz=D zC+`2)%zyq$v-GFH!{sJr`1;>MF^APNg-TsV$`tQzKQ|41lAJsBjeR|P&Kf%428Bl- zg)Dl})?}}>y=mF{RQGCWGXKNDgCD-t!HR|T?yo%E7t1YeaqKc;JJ_KFr?T<>d%Y1t z5x&85F;)uQWJ+Cw<+dH|ZTQvE!VkLBXsBs79&OzAE(_6{T4!i2EMh#71IC9{GhbJ^#(&#mf)H(}^> zo5t3?(XSuv5D||_g1q@h^R~!%=!wJuU8+qgd<63vYi#+z*R_IPXX-u+j=+56QM->y zS-cw}zQi1!tGLO=b6$E%lt+GmRlOJ_pNKY9>019fyp*YvGW1#rJLw6hl8d3Qu@cHq z(L}e!eG(iww6BS|?PGDc&O)ytnUEtY?kb9%Z+v?VcnD4SvhV%*c2-tE5!7#Esocob zXz4=cY@C4z|BBz&JEkPm0tgICm0BKca=lc(u~34IejX7K(KQRap#I~8deY*EntRi? zM^1g2S`Nj#^sQFp^A58G;@z$U-egg-5RPSz4Y#_rk461g_{;G-nDl)R+Pwjn z;P|DR?yAebHWN1>vX!m3TDyR9>TB?yY|~MC=uHU; z?r5LJ-c}*$CRG6|bGp|!j5GSw)|d!!=aDRyDOvx*KWO75rL{C%;FZ6nb%rB#*d?n> zC#5S1!=+hA`p|AW2*ElI>9F-mtIoVC6r7ZG547-Yk$NpV=3c3lN?BS)qq%6iCp@t= zH9HAo1BoG9Em?MqiSWS_W<-MO#_sE9Y@ zANaeN|4&k_dDn+y`?tA8ZoRF5J=d)p88VIQ0jYs=N~Q{nla*esYTx;oP?}b5jDX$x zpx7EHEPejTPXDn%Zv40}IWZSoDEYgg%JOOpP?kT4H5VDJC_e0o%6nGjHg*M%Ux0@ySR8ioHOZO`-vMQl=yK`* z#okxOMU}P>gNm-$N+@k1jYu~ZT@unEsia8fh^`2dN=c)Xv~)8DAvw}9FepgJ&_fOL z-lKv%yGM7Q{eO6C{orqyGv}Q9zV55Dl*QJvViP;K)}kj;1iHs5Xu~FBA|_LVI%nS> z@rfy-q@s17zoYFoeF)5hnZI1HTM`6$thG6p0~&=rT&8a143FqV&vvA!A!Nk>nVD_W z%j4&WU7nhYp*5Pe9i84+>rpmM!Kzu{2g8jn6;F(?@4D6iV-px^Ul|#R8s2!AUGcd6 zcS10lZlK#Dc#%38|9KCaK1?eb%mqW*40`9O-PS4dZt3bf zit&S;TUZ9{+>e&l_S%R&AUiYt3FkhGH(nYSE+nDYx$ft$%MU!^?k!610%H*l+Zerj zm&8wda(89!eME&`#7D^1(+s(QG@p9*Lv@|>^a2NO@_xFJMf=l+3>&+f5)EenpZ>rY zGR2YRYy<4WdYh>CK(rv3oIQK%a#V@Ym+`qJLQ3P243<~(BZ9$0#d}H)dYSOlE!#FlY0b z(Gf_=9?q5X*U$jig~fL@h(gnZPtHl|DLl%|qU6q%=S!)qQ-JevY+hWO&v>n$bzSLJ zCZ%{BId#{RqBZEhvJua>_6d8_DXKT+PSOmfYqG{@qUpl@{FhPW6k?h^y5_O-Aq`db zyH<%;`l7N!Z2pt{zR7s5FmM)zbz0$2YF9L1lM%rm?yG`H>iK3Dl`rIK->v4J3xtWp zbsbW^@Sds|^D!d_aKfZ3JSm%-@9=_Rz7%Gr$i#BDpH?DS;i_3ZP)&5%Puj}$;l@sA z@Qh+d$a9+Ft&LDJr)ci=NpTDXE9BMmdn{GAB$$T_WUc;g)LinV-f4Djzx~MOO!x)R zkjpB@1FpUdTWNdlv{Gk!$vlp0;}xGiV#+kl;a1AV=XXw4gK$o3T3Guno0UyhQ{6ZZ z)R@!6YWReE4Ue|t^orZ&2416$m^>0t!Pc99C&szrRT@*kW>0or4GY|x#arAqw@^ASGO@A4CExulkb4Z4*-0vw?XF4jHmzZ>77F>aAOp${fPHTuDe5xlcV&N z$47M?jAMd5Zr+?o1)BbHpYdaXlP>1+6Ay|m|BAEp zm1~+eyVFew7-^AiaX$NK++U*LB{MpLwaX9pRnJLK>!#GW(PXV2Ag|E_ozG~T7Uu+B z6tr)&+m_;VuMW<-V|?<54)Ig2k7-WUQkBA7oTiT= z<-((Bu?s@CvP`?P^2XeQX0+9IW<6} z1keR(y&>nYr972mwkKIWipCIK>G+6uva3vCtv6)6jac`h4`E`YWL$GBHK!<+MI?@w zSCh;7n6RszuT_lTb@1F)Ou0zd=0YI7XBLtb+mol`G&A+Q{YG{3Mdne_3$tl z={>zZb?ky0`orGLJ4*M6z%)j3v_ce(s;X*Bx&%f&U84VucItSd{IST5&35&2BdJBL zbhV70TmGs_22AQJbAAd2Bc^fH?;ah%o0*FfD9g}(SSZOj{hoUDH>0RaRI8E2=e?oFe8z7ZN&MC#AROj zPoGo>27`v=>!aV@YdMut!^=C6q3g4y(>DU|#T}evq{$ zeS63fqDg`n|8GDF@!O@2w>wSh3{41s9&3-=JVOi5q#p%~<7V>JQ(yz-HI(1deJQR2gsD+1f?#@tyB^_T z^3s^)&kT`pSGp=76*cCf>N77tw)x+C!H;DKSA3s^h!PczjaorFjU>Tp@&1S@ep>@n z`D#m+jaH)d` z;9EO-D7sa&Ak?d3DSW-&b>Vf|6-jx~dAIM@$NyLYpZQJp8?4c4rFpY0YJ;2+U%ART zc>uVof<7+@gb9fOqP?d;_ASIdo}C4hRyS^+It|(xR-QZ&3#+_ryq}iayXo9lx(vDv zc-M)3kEpGj-JJ+P2CQA<7W(TDFpx~X&u&1Uhfd0$yz)R2kD}B2jy$P!cL{GLYyY0Q z9^wh$Yy9!td8qq~!J6OE5+I@8TaQP)`hF>SOXU=~K*lx^KSrPoGPb33^b~)(aW9rg z@Ec-Rk;l0TL#EM&fOK`GR7Xj72t+*20uXV(Rb}Ru4S)O` z;7Si7Ez==>T#rx1mZeOw*nZ`Y4^l_L(VesFq1mPcx0$7bJJ5Ff;1nkS{wASLFG08l zBwyq4w|KR1EALq{2q5czv%*XWWM#l7&tI~P&fR|HkDP&XmjPo6{%GvFZQTOo;oM%s zjt~F0BM(uelI~V6!2cVF6@si4wkdSyX9-^$f2T;X6Xfb1Yd6*wW(3?{=2}M4R~jNA z()z{XwecLUz;*(P;~n)JPN6F>>$n7b{HH=KH7^*A7D{dTray)dDSb`=Qs7BiTD82W zS-pQD?+gX z*CT&C&Xb;AQ3uQhAXBZLLWl$^m^90yv)tF~)r$r+Boo2yXOLEH+ei4{eV7MuuSe8v*HQgxe}7!> z4qgl{`GD}Ev=P!W^4CB6*_y;WfN)vmKec_X|M~Qv-L~~Ix~JfFAB!@%ZFaDYtbgmn z2L)hViC##6K=!|L|2ZXa`%}xJI}kYgS4+nq=ql)UHauzsSpoRh_j_IgwO{8!mtlxv zw4b8O4wRx31@d?!+7Bv&_HW!DBnfW6R@k2mA;lI!!^e&4Lj5B|Vfbgn(r)CCY&p;Em<6vHx zCMZqeO(SD(4$-{P!qQt{PHB#rCVg1ceGb@r6a6)PB@08#>oiRz)i+tSuGMmPd3#j2 z*1YlWLhz#qe$FL5=YemDDcd78?57wJ6#gcU9eZJOp(Zif5UF~zM)zu=?_u-&bWVrn zQQM(qSK2z~z{uUbMb_l5M|zqWWr$KwLFwqG86hDtNu&NeM?#`Np0b8Ul@0E z%vFi%J#j=ug%y055wxas@0^Hr&UPS3efd(u4fo-eJ#iFV|5l#^;(dwh zL2J12d!AcAnJkW1=ES6csvD{zNCIX1eLJ1o#c#e~l4}i5=zb`D>)|?e6d2-Zm}FQ9 z=IP4DLP>=AG_uI|{W9e<=NM}OM()pZrt~$5j>$$NosKV+-aDE=I>WzFfS4iBl(~~D zA(LUhX~gM@`tNMnYol=P?6$QkvkatSnk|UMBc@d=5^%{UxM7*BQkO!PdFM%I$xyC#S1_vOc2V9VoJS&bG@RUT9^p z-sH)wZHy;rSP?4R9{cJc#;-F|D`|lF-2KI($8k>rMPegL)JEmaYY4$CktdF04!Oau;uxsgQ7&?>Bg<_31y9aJq_PrYu6KQqUDL60ZI zn_%&hySn->v89>+e&3%5-c`9!yEUG%0GBeymNASLiWY6O% z!E*u`Em=W~H4yH`tv!CL)aDV__$h!quMpk5PH<;7Ud}L&a55#_>Ndfhq3ldbq=&8k zi(yKrB*5<+OYtS1)_PAGL($q%4s1fiNw6;v0;+IzU@YmiDw#y*=)Zj@tAjkWDSog! z9w$9nzS+5M(9_DUAl7RbZkd43z~l#c%9{DNj|p1wGIY)$)4y1Rk$=Ilo<~wVI!1T& zSkelP%pWRs`@Wd87(tyalnE_XN4)aPsjg7`)}G%&#=@)6?qhW;1AYpe*dDt#YdK5t za%$b##vtUmWLRsgBRcq|ALPwNExIld1?{ycmN(gm3PuIuF(G>$qr>bq^;%U*ly-AK zsdf4Wm1h-j=bzs^MgZ~Rcq8B(kuKyWhH_?oM?L!4Do*xl*g!;NM0>hKQMdUA2j=oR zzlc18zLg7=<+?2_UbOry3#H$A5WHrId~?ZVW4)j#ZwA)AS$2KhA@mWc)h`S|F)4h& z!OoQgBH-{{+I`Ubv{W?Un*u6B%-@|}KkS2-G8p;-1z9s>p&XU-rQV-#vY?4~(0p5 zPlo^8l=i%L42Yy~`P6USEASloI|grm2zvYmi7uyA5Lw91cuLw7SuKF=d?HURSoQL{ z>fC02;NSvc)WrXen#QTew6C=~U03%60hJ&i%8HiusXeh0qTBLu=EAGaqrZ@g_dt-8 z=`maCc0}e+i%`7(CKDq>vM|!jt}k9iQ)WR~;cAbF3|0UP|1_zSG*O({CRO2pRZFG2 z@n!ClKNt0MijjaalX}Qip(yj)rYTrn+l{w6eW@cim{<(Fhf28aOO~@PuO)$?(V6sX z;=P}bPt#w`+LtGPc>-Bxda%EaQIelh|BsN{2BBE|LA=W`UP}7sjF#)#CpcQxXH?Ha zn2aT(o_Jr&pTUqW zRDOo}fUr^a?T$3#tJ1uWf3cR|!CItWosx#+6kqQnk@?i75mz0J7`;AGl>jF6WnTm{ z&6fJ1lAFHcZoC`b|6JtA1QBrj0f#@G>-Hr@JD`HSJfZdTUu^#r>Vw!S5aglOXqBya z69ghd-M0m%_%VPL*Dn-q{rz7q!*d=VK^Q=#M*p)1h_wLdJ(0KgDI@rc^$aruPEuK+ z%>U0G;Q10?-4)aQa}xdabL-VWY{1Pm<=#Jhz;)0Xhe;rZ=pTApL$ZOVdv#fU_!qqP zSC^jP!@PC|2cWp$uaM^Zp)lwH)SaJ>ssDwF^Q)bafObu(V^w7TCCYB0gkmK?-C?9) z=s$FIGvK4jEk3M&W2aCn{Fm_mCH#L0ABr-z2=u3f^>e~^K1}*?D;MBzJ^EiJ@UQg$ zSNi`W0sgP_|5y6|Gp(KA|7f+}_}oSFWmCMzKi{I~lJZinaf89!;Q8?`R?U3xk*287 zmVl6-JNds!9Vy@)kd{uFhVTxEojSmxTh5m~!5qo$OV$)M%I#o(cx}}?&u}URbM3Li zw86Wp81X=>n6?Jd^}(ucjQ8j9fk4rb4}9iT>^Ds{I{z}ez!{$eQEhY-%J%R-Kigw! zYw+HB=6TnAf0=`iTAT-8c22svB1kJ++~|#Oyw|1Ua$`!^Zgg=HR7WHn5oKTlZ=PUk z5criTfY;N1RZkbsv4{%Abts;t*t!c8I!Vx!4-ijUb`@G~Y%c1B_IZ%8>r%19*IX=Kqk3Cx znz%Wa_S1!Gr;~ik{r=yoomrr+Gu-h6z?so0t4dc8-3Xn?%*qN#Y6!dTJJK{+ zfdIw(YEGGz`+;xEhm2K|>lHm=;@+Hyzj|G|253La{ZI=k%HjEL4+W^HDzwm`S{Ty1 zrrPlml-=4!Z#D!E7M*2(;#vzkrcY72aM)(H(zQm!^`MUm!}u~BMLtC9EQHm=W7Sxe zU`@|ik7F@{_8H2v2TtgL!W0)SCBm0J+2vt0@a10Yp!Y*BFa;J(o2d!r1=}{$viqp% zx^iMs&wa)5Rn4vN19YUzEGK^vD*39i`JV;OalVmKYg5}SHG{plobR@9)?6>XZOcMla| zGe-EnHCr@>TX63|6u<3s5O&$mpSSlSy%6?_(EJxsPIMrJvpALWtVcu_XpmAmwVfIF z6BZhRuTf-ll(2-Nx@%1YN^Al9htN+Bfj$qy86*28Q@c`w0}7EY>5Bz{IE>W6KC7a} zX|Ji3%;NF-mX-{SyjK84+hDL;+O7+hIzZX zQI^V7lw|=2VKcTrJ3(eteteR9x8&sF4gL+*F%=di^N z;oK>97a_T^F20^oRV#wHXl`D6=~i>=a?&=@4Zcm@g*Nr_Vy2Pi7+ToMP|~=KmWN?m zF^-+rcm(+PKV2@k{%hY4*Dc^Aq3_eyf`IBrl09a7gC+#)ZeMq8Bo!0D4Kf?FKR0h} zGv60v(zMCK(`%NpSkOzDm=fpC;bC9%;rSwJo%su?m>ID`tS}S<-C=UQxkpHN4guNz z{XDCpG+`nh%`D)^O%793dAt$}tdV;>oL5%_Oy{+)Z7k5p6ZQ2k>}C9cXPfSe!(BDbuu`Fg%~ex>Z<>DBD!|qQ zM738^oE+=(8(l=#TV}f*5&bVMkvujZTWV{S5khg5%k#moKwaUo6c`MfDV5VE@;DJT zVA8-k_a=0T?;f@Qydm8il$M@u_%Xn>X7Pw3kg*Q--7p*sa78QVY0-!YOm)-N ziqZ>3d1QZOw21PH99G4{%f+Lfk6XK}OAYJ}_8adz0@>ngCm0z{0aAW;=g}3Y4Ka{= zo|g%$${(k#i7v4ve}?uSzfpV*1l3z3`oB1&Ki;-=qLKmN_IoatDgX70zdeB%pBnPKanG;0 z=ua0{hga0)v!_FTw!XhWy@<=g5FB2GqZF0t%siz3{J# zJ0}6Mt@$eomH#2|i15)5SrbSZ@z=-c`2~>e`IIh)zcQwN@~C)yKu!u~+^t^oAd-ixK;Ovbvw$wzZUJXF;}gv@VkICrA4iyZS$v=s&9O zS|Dff)5sgG8eJf})-hOptixZ`XGgXUmstFnm#Ph6IpSr7Eg%Ezl?5`HkeB1pe**YB zq|)_(RkReP1r_7=-20m>?yh)aG0v+S?mx{Zvr8C z_IdV;&h`5^9A`G{V(_&~0p?l9EVYV2GoUBWvUNOv9C+9P6*aZm2iH|O*7FcU!4Y|F z)q9~8lb#ksYosWyytrI@M|-Z}IG8e%;M8uf}9l4aK! z($dHt2M5(x#_(+M&mDLYUkB)sdzB1H_ve=bkIQqAWhU$5sOhpBRDG$fymHe@-HtnY zy6jOpohTKY;xXs!7$b6{r|=N;kfjiOam>$ZwiEY+#d)-YIwlZ&S7Z1Ar^x6x`)Fau z;~JxSb@k4wmV|-V$sNq)$Z-%vVaiv)IB0!G^h{Jk@mLLQq|A{N0b`N%3?iZ~v$jl;OG@-TrgO z2L}A89wl_p+K%tG&iR}=sOvn@=cct~#+;J`71(>YkvAduSV$^3tq30Zo*!qi{m5r@ zpzu{{ELV72_N??xp4xiN7MsHVJiZ-o*i~GeI6I5$2CXO4(-vTF*ej%uUB8j@-~q+; zDT?d<{oNcjWG&eghW-_p94@z9f-jF|xDB}0!T zV!8}=7WyA!i7I|opZk*`K*VITr%i~gE0eZ@*i4ddT&;|Ie8Co5}LKDX&VC{-~T=!eEX znT~dRkM!`>#>~U(Y(q1!jw_*WtbWW%yH3Usib0)WN8bI9=Y1C%Ax{BYIAs}@x((VN zu-DmDpPGrZS(T^i*;KB~+iC7| zifOyTweLy!o#LdALT#?2X@y-DKgg*Pq^dYJm4B6c(O*Fj-Pi~*bB@4s5HK&&F68Z< zYugf^jSt0A0pFn(6S&=0J2)J!$L2)Tzz%n#a+`fiRK%Y6nbNxan1aZv5li{(JB_1N zm*Y?F!t^`pkyV=a728C+Or*AeR)Kx5cS%-v6Mh{wBzBb?Ptsm97EoO*erw0`hH~PuqnU5^6yQmeO31Jymyzj~uUu|MnHfR#tZ<&7;;A)L!m`QjjUqz`LBggL!lfE`$Aid=S3f_d9gH;3@TYw@=I$n5hp8#>*ymsg{twL3DQjNtDP8K+GF%*MX?bz=G2f^AyXSk)2iDTK zvWN#zMMOE8byc`xEKr$RMX^Z(HbXVla=iT^F#|4>nT8#zYB5PozwbXWSUQ>2(2Sc< zgFoT!R6pBA@9#Vs<7fgy7b2}%l4Qaq$?7ilccm!AshejO5U&+IduJ3VG%ra;vObZX zo$IP}pUK&xu*W0<*C;_ufgNUt)yZd<&6MW6BWA9eE*hYTgKauHux0Z17uC^68QIFz zzVY16nKEH|#=j-c6fuS@vd%Z_Nb4*K0H_>=jIypg#YhzzP~%T&+EHHEZQ$EzG&0Ii z;5?obJ_tAvqBq5~NGh1VWD~TCc46WAcEYwKfar9QP^^Z)vj@m2XQ;LgM;SD}VteH- zN$!Ufg6MMFK38-_L2pXXN1Iye@B_|?1dZV61#8_)XWt#Lefu;mEzN0Tt`;;_nhF4P zUvqgMHJ8luS0hvaARmh7>zQpYhqiaUcuYglz>+7M*`Iv30l+d`N6WT}JMXBHr9{(G zMqaakhJNyz(|p~91Q>2JFUFDh&NLjinKPB!Fj63OIc99d51B_d=LU)2xK65^10SG4wpG(sqfZfOX&UB2jEcEHPsbv{} zyWJ`hW82KnpQrNZ&U8Un^D=J}`t3g2Mpe6B`!1clifj=OM`$hiQuNu2(&SdQ$|{rU z3u(eMyTr}b%0!&Ptz`Ka0prjxCGNzDk4m{R>$-V35+#|_Id&P9YZFi3iQln|^H{rs zsz}|X66x4o5h)aL63Fhz({}W6-j^<&JI~uA0IAx!pBXiW8a~wp?~g?g1jhp zQNv5&bOOL(<^vxS30mfAY2&c4rlHi7*e4RS?p%VQ54fYOO7CRa%GwS98cNVAveNjF z6qI1HatDrGZb(~gbW5abEVdbXsZ-`)Gm)BN60UrA1TebhT>^{*AtNzaT|#@0&`<$f zwskPeEa-ePurb10(y(+&OghFYrUbL$exSlZ#=lSYTS4Fj9f?=1p?F~X*t zonDPFjg2T1Rjn=sY&dsT!)2y*L2UugeFt+J*c#;R(J0}=LbGqmCwECc62kU=qk>W( ztX-}9)jr8X%0PV5@zsG_lMvxR#Tsycr%fyg6R)T%@O}Qh{F8js(ONvmA-|Y9lP#bh za)p5$OlD$v-^h9&&?0-aFs3iKzbji0&T@@&fx~@mk!4C*=X#1sQ0fR347WZ|OU#_1 z_(93m5=f1dj5H;I*6urpxdS;2YpTwNYd?$Wbz5jM1U#bAqw65sbWSZzP7Q^5yTFV; zFX|)^RUQtkL>6i9RRNGAOI#FR5HQMyKG0+23wd`Lh^@%s&dAA(Q+v|D5xmGGK}D`^ z@vfe6m3{_5QbS&pR^CTMR_Fv{V&fv16_bLr(!5lWH>eM$v-Z*7R~b`|r~b++UPa** zlTOR!83@%tEdDrfEivu1+gcGdL>lTP5HifV&cmTo2$i~5 zs_8eK%Xo_jTKgRbVjelSK27_~b*DA4vmZX59A)q!=yXp(9a+Qb)cti3Y>UtOqJTVb|9Oa5S{;i#L|FlSlJLP6LN^!dF@s zi?w6+K7aPN5qLfUg+*!JmW5D7xx`|htFixC8d*}kj83VYPeOnIlj9~{4f_24u_>vm zS^9=b|J|{VFKqhlyNqEofT(g%E|bRaNkE}#N0OMXE!^{?;s@h0=If`zz#MiyG7Y1r zn$`*=3^`53(Y#IkVKE<;A+YF3$->+2FU|{vK45~iS-_1u@#0jZ9f#WCH^eEp7CqYQ5X00sW0Mw&o$7?Yy?WG8EHp=DHhYv?-}Cb}kj zB-b~aWZ^pA$Q*4Lw1aS4+!uQYD8TF}^7b)^qoqjR+MSkl1vkoR$bZVS7-(_{Hxk4b z7VoyJ0aPkTpmyxz=+uK@wN(>ogk7qDg&D`2jkJaf>$*-COlhZiwS%l2&C!_N#KLjB zhHX$ys@CWMo2w?D14qWcUeUyZtV)iu5@^7Jr`VIdld1)pGi8)Tu2fc2(CMp#;9C7A z3MgtXO%bsRUzP!fs^%Y!4(`ue9f_(9)3V}Mz#z~Bt$4#APr=Gx@Y z`y-+m+h2d*6qPOO(meJS6SrDN#JTIh|p z(kRUa+%f*DH#N>%_u;uEjmy}JsXn0iP~pwy%!SJJnX(~ZM>l81+^c5<)r#v=m?NSa zM@?hwZ!QCPb_D=6)-r5eB7o|Yny$04LuDnHMS%cY=SWtFqmf~+u%mM5zE#i+PfKG$ z0kI{i`s^8Oi37e{vThTL89;am0#=$wtieg!rEM#BkXA&SAk_oMnf$G#n_>{26v((V z{2}*_Z`|~x&%qZ$H&UeeDwO$&g6L(R2NB7(=8S=%v_My;mW$-7L(Zz~AA2Ul=0oB# z4h$B&5??Y2#H9-uBR({q64$&YuNtUCkPPh7o((fE>((W_1t=J|OXv;?SYuNx9Z^87 zOD|p-^v&B;dd)U@{tgq+peV|`L%uvwP!#bOi5 z;Nel`%96zwRN19f{aS5mPMKbd;<22sd6lIU{Ei!(w3GS##)-Ha0JXAy*%S-{)fi5gII5_rMy#m%_&oq7pORX}j0-$?MKc*UV%kk>Tu)=>uQeU;y;=Ns5*_tCoD&AJ1) zZ!ACwpf&89_fjBz7$7)P+*d-=aXgO%COw$UTNDxxvZDlyTGx-z2vp*J0wC@o`H z<5$;z51^+6AYb$8Gmq|CmCx0j1TvHAaW~L44S|jlozzq`;2|h892@B$22gGVxR>&j zfsPfjMlIxYx9?s9YYDJg4`={5=GCikGjlbe36v&q4-T+>IB=>XS}V;ZB#q}hZo;r) zsk7mo`S|lT+o$hTVZe--57X2Vv(SyD{4Ro%fZ^e4om8U54rMbw!Y3$LC7p-5hWGLw z;Yi;t`PgDk<)&21N5c_kmpQhs?(p?843|~wtOq=aZZY@p$wwAWFLWdoV`(lg6 zNX!F4aO{pZN$)t+j>f@gQjaSUpY0IB3$bqCI-;)zr8%tOL>RT*U z*jDvbiM&(t-qiUvQQRs*(l%lhFY^+BiuaVojHWGF&No| zmAO;&Hs`~0-X9h;!lZoE>TR%V+?Yx>Wfd;UE}xfn&=ZgcrbWhsXAi&WjSRqpj&eN^ zm3b2i^;BL0bLIR@Dfd=*Y6tsdIPq0t2;6VSrQsg&*Z+PoYGh?@Xvmkn^1~G=#;P{Z z7W1VXto_vu8z32thOl@~Qf6Uq8W`a$`}`{}$5MwH2hiWu9eRutfYbSaoBVgC&7||y z>FiFM0m-m>04g~P>{$MmXLHNh)3;mlz`cj-7&NH(Up3-+r1CihEb+iSftoF;5R!-& zB4OtOq#&ax$3Yb3e9j^I%Rj7>ZPi@N5-&xP36%Qd5a3XGm8xS@9*vD91ZKHPZ2Nq< z^uJ2)H&tQc5RZ6+0Q%Zm#C@x+!10fm51p9)=2rtA%mpi~JuB|#jkme+;ej}}c_|0m zfl7D782iqMqJaFZy{LHO_j2>MB4dac5}o2cAP@!OOMc`qZ0`j4&A+O?_*V_=-gnp! z2zGWy<@M$1A;6OT=;b0CwInpR(1q#R*F*Uoc?mKS@DN}Z^~XL)_0$IM5C(xKXCxZ$ z9R+FxRTHSV`05@B1XDOTtz&L)WwO7b!$U5U?jBSSPE4N$#J@+5$=X60z-v+i?pi^(M1f#Cu)$}ebdXwviBgg@aTRU3ohb|gxGHL* z^(e=1Ehfz(GmXCeC;fkjscpa#?ji#4BK6h&DxCG>maT1 z@HF|8o2-!%AlNryL!$Eo_|M_H!0;T7xs* zW$*$D2}g)OlnMulTK@_2_+KQj{f*o2gX{;;4d;c$K}a%zSnnU;^s9WezXORUr-2cA z(D-YG{3_QB0$P7KJCG%M67Z2~ zMIOkMhrb5N_gNDDoR z|F+mJFe=XXj&h1Ivsr7t6qjXdB4K8;(qFJteG`20;2tQ&0Td@0*N5~p=hzIy~dW zf9flVDeS+LRWbG8o{p79V;M*oOn0=T)am8Twr{f3;`aAlp00c&q`P|8O&j~+)yjNX zoI%NT&FYSQm<;MZHCM*Cb=FD=Gm(9xtM+$%JWel?&u2KOb? zvjtSGY4n0woU9bQW+Wh^oXu%wJeJ;{5^tdrmzqwrr{eQ$AM|!QCXBbGNT{k_3#NaR zogKulqN-ZGIIddaG06;~03oQB3YqjP$w6HvE}BNF*M@2yO-sGlEgPjvdMB!lGk0}7 zyZUwZ1>>S-#tr2U+Rtm`bE6g1 zp1*0e#vYw_6O7$_`EmF*RK>v$UDneDI2+S=rKx`y)jtsKqUhHiHbIJr0v@0Jq8mYS zpU3y1y&o;gi*EXo*s8f>(^FP_uf=GyC*6l+>c-o%`tY1pL5pI zR!JQL1Xib3HhkG%D%S?gb;%$a`UOFZvv|!*YjAv2*N=Q(MQn^-kz+Rg!L_INZLnz; zHXg|kTI>$CX|QxOojxr3N-v|mLhGQDmA=s2;zEu|cE@16hwI3i2YA4s7p$M=p>EW% z2R#`GuNLdX`DVaW?LVBl7BNLqo;gN5WPYKO?bcPrM>0r z_HMHsfjwAemR2SnjU+>=g0@R7r5YY%6P4lcCsDCfF$IDykBtq6vn&Vacx$T@to?io z%8CNt7fnX$Pzuka6wk&g3_dynZ&Ia{z8p^?vQ~ZE(qNS>GeJ2j*=E8z3>W9@X)DE_ z+RyHM0fn7<{G7{Jb7r&MTHtWsz0{Q@P2Z|d3NY`eeQsp#U1+MwjBb&@yD=wpeR4!) z>zc8XuT}AEXGHw3y0lE-v+hw+_L2|=l9)R&$#F61p{1ETIls+~28*#xM=YmHW}%te zB?BW1chuxM82_Tm;y_ub4%YadnMHgO3Mm!wnnZ6ka}C8(r336XG@p@dT4Vv z4B$TYusQq6@jOXq6A=UsD^eXb9d`5ZU5e~N4%R4PxZ<@Mt$QG?leNhbJ$YP=Vznc&dp+0D z_H9x`t-8gFk-6-%H~mS?RFq4{W{%Aj5hmm&OIYUFY4^a4ZhA6M!*$)C77xA&&HaQ} zCa>T}GNyRY3Y4g^lq=?GM>$8xq`9?Edwb?hnJlYADaBJ>^p~CPLUhdt(sSk(bg?TrfYlSuRD%7;jJM>vKtjs-@npjAGAnhFjGAbF?ho{(u9 zt~_Sepl5kJLEN3}i14Ng%Ch>^{dUaDqM;=Pcted&qFmlelZ&tEWclPU`%nX#-gHz= zqg+ntu32_pAILH`(KQ_?5Ud5=-~*c!V65qOApxv6XGqE{yZMu4Q=e$XVp()4cuot# zoe=>x{V$kDOP`0AfaG1;tW`RXjXP%LvvVsMfyw@q)ycvpQ|qym>}2jYV+wYum4?j- zuNU5$Ly%W~=w)kvDOGMi?ne;y7k-;+e5Z%P;yEY*{QLsGAD7(_JiAN?z4?~*puZNn zoYxB`kkBiawze>J)zK6#;YUGThFQN#oZJe4jH8m)2PImHWckxM`}}TkNe;O=lS$P z-K>s{V>an>&I0;yeRF1^G{R}NFzO{}AJ#LVoGk03gIRSi-&pgT5W$sfrmb|;P#VEO zo?eVc-?5gmF0-8ZC-|N&g?Rms57){(IB#z1SM<5myc+EPjAnsZ1Qv@uB3jk#N*j`1 zx@ZeJVjakulOP^1x36<)Npl`@8tJz-fWs@ob*6hOuM4?|qo>>i=oMmUkTL5fZbA+Q z%NXu;jCZDsW4#B0N=(3FAuGoL^T?pXnC!`NW>nShKFSH0{n+slSS{(%>&c4r6r<9TgC z+02{RoYe`=*z5bCi1mj$_kHBMu7{McU+)8SC)-wICri0VGX1 z7va?sm#hM*EaF!0B0aw_RxKk-9;656$dc(J%XJEY(*IOEE9KtWZFt@KNDuO9srifp>CtLBJq*~aQ(^*6c}asSI$?EX=-_Pn8WYnd^`QwJ zWKG3|j95qagkU}YmJ=o_YA(|c>=O);$@Z}gKrHhJP8Y0vi8`ek(fah=4f5#@VFyiK zSbv^HDy)7bVZtrCCrLhZf0Rf-m{Jc2~ zYij~en5s0aF6d>0bn;qbxTv$ae%3n#qp2QA7jCjp8zkT4jZDD3N!6yv%Fy{bES2h` z<(s^H_eM{y)p_@opwcss3#(1gRH)&uPvv4eTS`^a%a`HZ`o0!@sy8QS6ol`(wjaD2 z1MA&ygLrtPI-VEh&&t!ouxZ~vJO?r*C5pIto7eb?2Xt*Z>uQbQ7}3RUr?I(|+yMm? zCQjXcn8ta?ZEHP|3NzDXqzBecf+Yo1vGF=#1o$eTCX|On|XEG}4 zf-Sk-RVb$$g`8QlrgEOw=qZUiA*Olj>CK$mWhMn8=Xj|KrEiYkM#v2KgnKD`=UVgxvYs>xc8fZ91KGP!XfV>DBP+AWSbYY~IiwNsqA1pDiHJ~<8 z2}n)ryt(zxF=w)JUoGcbV)z-QpPc@LorV87gGNweKm+`{CMjgrNJzsnOb|B2*|A`#D{q zcJ^3Y%}sY$I2POY-m&_$T<=xWSSR7? zedYT2cHb+eSgLtB*%;l>m;uv=)k7J=Y9Bnh?Ah!O(H$x?d(SUY#P&Z0`9!&7iW9J@ zh?Y2ksOioecsuv5;bHDFCnnQXs_f+VrFu(GL89r)yk`A|m}%I`pSG5z{_!ezv@G6zm3 zf@%9VpXaLb*p1+E9sB?d+1{2oAw%_yr5=qXw1nxMvDN7tq>eY+%6Iy1{QBAlQ#hu8fiZD7Pn%P3wStpLq}PG|mK zx&;V44e$woT7BPZnt#}NcoJv~76T-tAR>5iS?JSiiwvs&7Lt?h4WZ8&5=oAo9j&7OtjlRQtJ(re$dC+)4#5c3PlvV`B2F3@&t?LG)62=)?Jz ziqGZ_=)o2&7quPprZ6p!X-=|NZfKVCjVupYV`vUOLn*SOJa#fmI4 zmYTNUG-kQy9;W=Y&vtjIT7FRazo2au&J^y?${`H^{`8-pDO_ zPCVT9#vUz6kDP(wvktuUi=hs}BJ zXb~a_@d$J4B}@&*Fe@=3!E=>=H213w8JXsHwZu$ozqyd(6#8Jc%4DoB!sUG`=?o^Z z$EUpKK#-=eMNogQO$eLca<~S8LHkU?rPXNFYoj|9dwn#l9x!IF_Gk^9ZJCey#`uvw z#a=6>-Vd6CG?}wCGZeW@I`yp^&BA|V=zk{i#Gt~d{aHvj+a2cxF+WG~qWx%Q>nagH zq$1|aDg}GH80g+MpYA*;C&+)|bQl#+yY1`QYYlS#I+&iBs)QYoYve7oRC*~bLRF;LK6i{n%#F zSC-LZLw<1Aj$&>eOc#_yo02mUpN@TyQ8KUx5j^=iV9@Fnt6B$?Ks?HtRn(`%)_JZGS=A-_9TAlX?ZB6jo_q2a+gV#TEyUL(hBpRu+vVral@b1x$arOkUK=2{A3a8fxC@m-a=n z%Y1-IHZ*|b39ZXw-rkj=xI*;i(dCXa!*!c<{A3rDjREw)K`6=7ihg!V&eLhGlWn4# z#<{=+goYugyqi2dhgZyIBaCJbavEBO-deQd{IC%8CB-y%TzzW5Layqz0=EzF!Q)>w zhy^WkvzMUh@;dlA8dz3r-x1blTP2?9eRC>fnmW`>WHhIBoMgfZYbC}a1d?rz=d|5V zkh9?b+l7~N#rE~)sT#cnsBnJP>WC)uH1{&#$Dqq|>}4oFg`Eu~jAb+oa#a~aRO>o?_INP1!1 zst?+hX!I@#=g5Q#2%dN3WpNJX6U^sm=2JhN*x^X)Xk~oRYjxuB!-I-wBPwL;uzDiNeb>m}W|ntmgkfiQf(t1u~2$aKj}G5U!<{NuX1ePJs{8dnZ?NAPy}= zlV#~sjwIJHpocRq85c^H=b>X@p$Kq0vmZj~7VXwFf~!3QM=H08p{xpEdp2+eM|D$! zhi#DdKlojq1#CiKdSlD4UE811G?E;Qw?bI_2T#E{1rR47B>^I8LO@tHZ2S4oMy;ET z71TPsDHt9V1s9FNsM)XDSjiJmG-fpOKVfgzeG<1HTPWgw(G!4E_dgj7s+bg@UUA*$ z$uKuJ{Kjxs0Gk95Vq8D(ffpg1to?)%fe@||3;)fq^=taiQMexu(}VGwxpJ_=^&1<8 z8w{vN1v2N7D1#APCGJlqx_%UHe!pt`_$keCtbm9CC3MP_vKmak@ne|nK=Og{&4kr# zaI-tU7nCl`dYTr8QS>aI-~^{plozwEe7>rL+bSzceX9CGwTw$~GKqt2Pc<`5n$u;w za@V>ia5DuT|5ZLZ&cAf9w){=5>CvVktm(y>>u;X}91e zgOx-rsXcw z*UFtj!c01{t&W$>Q2N5M1h_c^bRQK79)&v}MOgJmfokuv1}Qe$WQ}ZBT)$1^D2a3E zjG`mou-9V&JIT1aO6U#)LfnkkzO}y)i1nQw9Wofk0(Wo;%Z7rQa-YgQbvGAMUWxY? z1m0MyU6=PlkTPti;W2-U88?>_8&P57#Ss+8dWguw5KN`HhO{RfXB?K-T-FCP)A1Fv`! z4Ol;H_hHbjbepF`0sDt_OZ-(uY8)}NvRCXHYe$@}b6T~yFCtgVyTim$$|`o7x|IX- zh_2I1pMAT9l$q!xcinB~IQMNQNykcCNh30u{om8OH*nqFb|`xjyT;Cic9npqV&~85 zQ&6O7+^(iT+-5+$@|Dz0F)d>1u1uCZV#Sf8U{%XoTcENhK3~svE@Ox7O0MwfHFb@= z0kAI((c~z)wLh&rASub_58dzxNwxgWX9y3l9gpHrl31L{bymw)5m=&7o|WT{~WL&@6FJgFg+#Acc5iGtup*?wSodW9$X}f zhOy6)Z-|QB)p|d(u3_#T0vve6FdI&*d{P3K|IZ&}z?IqSQh;Thv{d_Vt;kmNq&d*4}eb_;-H7OzTM zV~BMR+uT4XEgx3^>tJ$k`v*)@6P$<@Q ze6=>2JB(ndXKKcA&Ir!EEDfR1&*sosDR)^C2MA%CxK+~u$l)6R_^3ENm343)z^Q)4 zK-_gy+8w|mB|K6*DEdJL;1L$F@GwF0Q+kX-;%OAsnc>F;T#iar>JANeC0xFw2agq< z<}g9Sg_fls!0_$iS^O~KM=$>zkpb|_`CKyr%t0A&H&xW@0UE{u04F3GrkuJo3E&lZ z$H8Cr@>?5+I-yaU>~B&t%7ZiePj=82BA@OV^*>Zh2RVTJ`>%H)>iuMe0Bz=%&to9Ev(R0;-c(zs*}ua z4_X#F&PAcoF)yRKS;J22ndlYHHzd*0Dc5M$+lgx3I>*)FV0!9t8|*az)sWYBdHKZw zoZPSN9dQD2@R--*#AB|R`t{EwToyy(0`yY=6bl67I1=v4Wi#Hnm)HDyW>(gA)T!+2 z6%QYuHq`=9v#}|H(CvSGe0(}t%_?4x9zDvh(agPdHClMK^VHZWyBHS5>K6^peEj@T zMMX}5CQQwt;V)ZST1JIHX=p&l*Xzoz93cv{DXnBMz2SM0lwp?q(9QghpY&TO6f%nD z>=A2v7AKJu^mPD>rQ#G^TNmB78wL&4w z>~6x{vne)Z;zD2i_5$QC8*PR8&k2bsp1c;HufKd;sSY4K^H-gFJ($?3YwQ46Tpt7< z128Ux$X24cufDq51|h{oIH5guGM+!)is^Q61o(=*DFx%6)LOO-1#^DlwEF-aZH;8a z6U;=3FoYOr-TK6EscXVHXpGU#Kw+;w7~l<%dW2gpU3(yu8c3uDFh(4fT3wb^eS#I4 z^~-5&?#~s^6>&PwPYTsK0i1_E0D^>k~Q_cGz5}U4iHd^J7*P=g%>L1(tGGE>&~XtpFhB6 zBYpD1ob=NK4#$sVg0HT!SOS%?d<;M@?mwkh^S(x=_FQ`{_{^RO#{qs!Qc?HHk;IYI z5}|Or&rg!Zl`PC9-wx3Nl%pHg5tg+;)8rVeYFxbrF_-*7zS-YfWxyc1*>T-bwSQHQ`wV%$H)gvMfXoO%b|k45wE_s1$8KH?l2^lhoM)n{X#7QVA@~!IT}7d|*o!ohUqLVE00kI1LGj*a}{)W~7#m*$( z(lI#NUnMv_03ECnY(DdJhZA!_>nk_1jCd&s9T%+@e9p2(O>g#bp(4$d3lXZZgfSyY z+3kjETlALZr&yiz6I1=jF9Y^x9J7M(^F+7}zR1lgMF8Q>Dd&m;@UGboJ^%yutTDjW zNdr(|dIPZ)=M4~-hB4i0h3&YhRmm#3TKk$xZ+(_23*F;DUOtL zI1Nb&qMwN9JP)&0Z<)}vMjb%|D74Y(nQ7IM#b$}88JP-gtZok;UL}=?DN>15TVC#2 zb#k14O*d}VrH%_*s5^PbrcUOgL zA&ycYL0V$isRPX!buH||u4hF~Gv@pW#m;;tjSr6QC{5WsPFaoa=D!t~2YXA47)XE~ zlVoa!(Uy^}Sla_3lNl(~SE`WuD9OdelixEg7|S+myLxZ-j39|7JHQwpwds5NzzaZX zJLOfm^d0DVcbk(X(-NTDam?9~?u$Xlkv@+8Pz9v2Y&4=dk?+>@%N@=q05X-&xKHBT zV|4g!PEZM05j)eApOETTBctej>|>ne1FG~3ihjq=#&tVL5XMBT%shv1hs1(kDHbVc zvP}AmoJmej_PZ_AJkq2nSDn)1kRZ<&n~`y2 zb}4!{)Uq%K3=a(sx&u(SLI*<#FV0VfMRFuA%G)!iXzXTJ>xhv~GlbjC@<~yxR(RF% zvhzYe%4c=nXLTYZqK`%{nqN?S*g%O$m>se?2#HYPKBW39@uB=co7XdQREH#uj4^|c8|$CQ zh$JM*oDS_Y-C`hCUif5r#~WT~?Sf(Bq^=!7w-+Vm0UFa8nt*#Hb!o

24TQNYb9$KO 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 PBe)9o#@9qEb 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�`HQp`)a4RcDTGcOqz+n{!Q2B? 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 z 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 z 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%0D88{RtmQi<>2 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

%7OoS;J}7IPN%`6@I<{kAU^6p z^9m*oCR{@Hz&%8}XcH&P?ypMt7z&ANkTC zE`DLBGhS>nqqIEkm=BKJ4NBq&?CdQ8oUsm9LLS41eNq2|vSSly zHw&QG%@G4B@xRQ{z6i7+4c56yucQ2094G177bywsP*Ah!xaNr8fSbZ(SOH@k7TZg* zapd}Em$BPy32Lb&IDNl;4^8mP&4C*)%nKmd{s+y`Rn@@TZ-(rg|3Kw$jN{_u7p+D$B)n>R%hk=pqZ&qy* zK;vjSSiU5-UX`iC|!tj^D-5`#(GcI7Bdj?kNbe262G+oa80mzvC6I zoB~aDNVWR;2x0C0cR<%QNI+nMkaEg4!?ax4AEm*rGLF9rI3&987F(7^4!S@mHBU%k z74*JH^bV?dC|RExP{B!>vvI((egi7dj<){Ynum)~5QiRdqgzLSwnT=2`2ND?I=`{? z;U!=fOjRkbHR6d{BU`c1tB=xP;O*21#otJYLc3}57~s&UVk4{^3IjLIn8ShOcSf0_ cU2x?e@I*@24Ud2p)i`28cW$TO)PD580O(&pegFUf literal 0 HcmV?d00001 diff --git a/docs/static/img/sso/saml/workspaceset.png b/docs/static/img/sso/saml/workspaceset.png new file mode 100644 index 0000000000000000000000000000000000000000..4e897eaaa5e6c192919fd7ae2ad23ca66165bd7c GIT binary patch literal 104342 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 **SSO** > **SAML**. + +

+ +2. By default, SAML is disabled. Toggle it on to enable SAML authentication. + +
+ + SSO :SAMP + +
+ +3. Enter the following configuration details: + + - **SAML Provider Name**: Enter the name of your SAML provider. This name will be displayed on the login page. + - **Identity provider metadata**: Upload the data from the metadata file provided by your SAML provider. This file contains the SAML configuration details. + - **Group Attribute**: Enter the name of the attribute that contains the group information of the user. This attribute is used to map the user to the appropriate group. + - **Redirect URL**: Copy the redirect URL provided and paste it in the SAML provider's configuration page. + + :::tip Downloading the metadata from your identity provider + Generally, the metadata is available in the form of an XML file which can be downloaded from your identity provider's dashboard. + + Copy the metadata from the XML file and paste it into the ToolJet's SAML SSO configuration settings. Please ensure that the metadata is pasted in the correct format, as it contains essential configuration details from the identity provider necessary for authentication. + + Additionally, you can often find this data by navigating to https://<your-identity-provider>/federationmetadata/2007-06/federationmetadata.xml + ::: + +
+ + SSO :SAMP + +
+ +4. Once configured, click **Save Changes**. + +### Logging in with SAML + +1. Go to the **[General Settings](/docs/user-authentication/general-settings)** and copy the **Login URL** provided. Furthermore, you have the flexibility to choose whether to turn on 'Enable Signups,' allowing users to signup without an invite. Through SSO authentication, we check if the user already exists; if so, they can sign in seamlessly. Otherwise, an error will be displayed. Conversely, with this option disabled, only invited users can log in, provided SSO authentication is successful. + +
+ + SSO :SAML + +
+ +2. The **Login URL** obtained can be used to access the workspace. Please note that ToolJet supports SAML login at the workspace level, ensuring users are logged in specifically to the selected workspace. + + As a result, users can now log in to your workspace using the provided Login URL. The login page will prominently feature the name of the SAML provider configured in your workspace settings. + +
+ + SSO :SAMP + +
+ +3. Click on **Sign in with `SAML Name`** button and you will be redirected to the SAML provider's login page. + +
+ + SSO :SAMP + +
+ +4. Enter your credentials and click **Login**. If the user is signing in for the first time, they will be redirected to the ToolJet's onboarding page. \ No newline at end of file diff --git a/docs/versioned_sidebars/version-2.19.0-sidebars.json b/docs/versioned_sidebars/version-2.19.0-sidebars.json index 393cfcb9bb..66c63b0d4a 100644 --- a/docs/versioned_sidebars/version-2.19.0-sidebars.json +++ b/docs/versioned_sidebars/version-2.19.0-sidebars.json @@ -260,7 +260,8 @@ "user-authentication/sso/openid/google-openid" ] }, - "user-authentication/sso/ldap" + "user-authentication/sso/ldap", + "user-authentication/sso/saml" ] } ] @@ -421,4 +422,4 @@ ] } ] -} +} \ No newline at end of file From 04318dc5752ec7e5b0b719f77b28dd639d9c4b12 Mon Sep 17 00:00:00 2001 From: Karan Rathod Date: Tue, 10 Oct 2023 14:53:51 +0530 Subject: [PATCH 02/67] update new quickstart guide link on canvas (#7733) --- frontend/src/Editor/Container.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/Editor/Container.jsx b/frontend/src/Editor/Container.jsx index b59fa5ec71..d196cd5213 100644 --- a/frontend/src/Editor/Container.jsx +++ b/frontend/src/Editor/Container.jsx @@ -656,7 +656,7 @@ export const Container = ({ our 
From fdd2bfe40f0a7801794909632d2f291b71d6c205 Mon Sep 17 00:00:00 2001 From: Rizina Date: Thu, 12 Oct 2023 15:02:44 +0545 Subject: [PATCH 03/67] docs: updated translation for few components (#7559) --- frontend/assets/translations/en.json | 8 ++++---- frontend/src/Editor/WidgetManager/widgetConfig.js | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/frontend/assets/translations/en.json b/frontend/assets/translations/en.json index 5feaac4eb5..92a96c1f5d 100644 --- a/frontend/assets/translations/en.json +++ b/frontend/assets/translations/en.json @@ -737,19 +737,19 @@ }, "TextInput": { "displayName": "Text Input", - "description": "Text field for forms" + "description": "User text input field" }, "NumberInput": { "displayName": "Number Input", - "description": "Number field for forms" + "description": "Numeric input field" }, "PasswordInput": { "displayName": "Password Input", - "description": "Password input field for forms" + "description": "Secure text input" }, "Datepicker": { "displayName": "Date Picker", - "description": "Select a date and time" + "description": "Choose date and time" }, "Checkbox": { "displayName": "Checkbox", diff --git a/frontend/src/Editor/WidgetManager/widgetConfig.js b/frontend/src/Editor/WidgetManager/widgetConfig.js index 2b598575f9..9ba04e5f9f 100644 --- a/frontend/src/Editor/WidgetManager/widgetConfig.js +++ b/frontend/src/Editor/WidgetManager/widgetConfig.js @@ -1052,7 +1052,7 @@ export const widgets = [ { name: 'TextInput', displayName: 'Text Input', - description: 'Text field for forms', + description: 'User text input field', component: 'TextInput', defaultSize: { width: 6, @@ -1183,7 +1183,7 @@ export const widgets = [ { name: 'NumberInput', displayName: 'Number Input', - description: 'Number field for forms', + description: 'Numeric input field', component: 'NumberInput', defaultSize: { width: 4, @@ -1309,7 +1309,7 @@ export const widgets = [ { name: 'PasswordInput', displayName: 'Password Input', - description: 'Password input field for forms', + description: 'Secure text input', component: 'PasswordInput', defaultSize: { width: 4, @@ -1396,7 +1396,7 @@ export const widgets = [ { name: 'Datepicker', displayName: 'Date Picker', - description: 'Select a date and time', + description: 'Choose date and time', component: 'Datepicker', defaultSize: { width: 5, From ab5a55441fc54cc85b85aed7969b99aac4f1d28d Mon Sep 17 00:00:00 2001 From: iamsatar <122266465+iamsatar@users.noreply.github.com> Date: Thu, 12 Oct 2023 12:21:06 +0300 Subject: [PATCH 04/67] [refactor]: Update descriptions(tooltips) for range picker, text, image and container components (#7548) * chore:replace the current labels inside en.json * chore:replace the current labels inside widgetconfig --- frontend/assets/translations/en.json | 8 ++++---- frontend/src/Editor/WidgetManager/widgetConfig.js | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/frontend/assets/translations/en.json b/frontend/assets/translations/en.json index 92a96c1f5d..486b9a0752 100644 --- a/frontend/assets/translations/en.json +++ b/frontend/assets/translations/en.json @@ -769,19 +769,19 @@ }, "DateRangePicker": { "displayName": "Range Picker", - "description": "Select a date range" + "description": "Choose date ranges" }, "Text": { "displayName": "Text", - "description": "Display markdown or HTML" + "description": "Display text or HTML" }, "Image": { "displayName": "Image", - "description": "Display an Image" + "description": "Show image files" }, "Container": { "displayName": "Container", - "description": "Wrapper for multiple components" + "description": "Group components" }, "Dropdown": { "displayName": "Dropdown", diff --git a/frontend/src/Editor/WidgetManager/widgetConfig.js b/frontend/src/Editor/WidgetManager/widgetConfig.js index 9ba04e5f9f..9649edaf6b 100644 --- a/frontend/src/Editor/WidgetManager/widgetConfig.js +++ b/frontend/src/Editor/WidgetManager/widgetConfig.js @@ -1878,7 +1878,7 @@ export const widgets = [ { name: 'DateRangePicker', displayName: 'Range Picker', - description: 'Select a date range', + description: 'Choose date ranges', component: 'DaterangePicker', defaultSize: { width: 10, @@ -1976,7 +1976,7 @@ export const widgets = [ { name: 'Text', displayName: 'Text', - description: 'Display markdown or HTML', + description: 'Display text or HTML', component: 'Text', others: { showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, @@ -2148,7 +2148,7 @@ export const widgets = [ { name: 'Image', displayName: 'Image', - description: 'Display an Image', + description: 'Show image files', defaultSize: { width: 3, height: 100, @@ -2282,7 +2282,7 @@ export const widgets = [ { name: 'Container', displayName: 'Container', - description: 'Wrapper for multiple components', + description: 'Group components', defaultSize: { width: 5, height: 200, From 62158a2bac8bbb8afc262952ededd7752d882c5f Mon Sep 17 00:00:00 2001 From: Shashwat Bajpai <112643512+Bajpai25@users.noreply.github.com> Date: Thu, 12 Oct 2023 14:52:26 +0530 Subject: [PATCH 05/67] Updated descriptions(tooltips) for circular progressbar, spinner, statistics and range slider components #7524 (#7593) --- frontend/assets/translations/en.json | 8 ++++---- frontend/src/Editor/WidgetManager/widgetConfig.js | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/frontend/assets/translations/en.json b/frontend/assets/translations/en.json index 486b9a0752..7f7433cf21 100644 --- a/frontend/assets/translations/en.json +++ b/frontend/assets/translations/en.json @@ -849,19 +849,19 @@ }, "CircularProgressbar": { "displayName": "Circular Progressbar", - "description": "Show the progress using circular progressbar" + "description": "Show circular progress" }, "Spinner": { "displayName": "Spinner", - "description": "Spinner can be used to display loading status" + "description": "Indicate loading state" }, "Statistics": { "displayName": "Statistics", - "description": "Statistics can be used to display different statistical information" + "description": "Show key metrics" }, "RangeSlider": { "displayName": "Range Slider", - "description": "Can be used to show slider with a range" + "description": "Adjust value range" }, "Timeline": { "displayName": "Timeline", diff --git a/frontend/src/Editor/WidgetManager/widgetConfig.js b/frontend/src/Editor/WidgetManager/widgetConfig.js index 9649edaf6b..98cc2a363e 100644 --- a/frontend/src/Editor/WidgetManager/widgetConfig.js +++ b/frontend/src/Editor/WidgetManager/widgetConfig.js @@ -4113,7 +4113,7 @@ export const widgets = [ { name: 'CircularProgressbar', displayName: 'Circular Progressbar', - description: 'Show the progress using circular progressbar', + description: 'Show circular progress', component: 'CircularProgressBar', defaultSize: { width: 7, @@ -4220,7 +4220,7 @@ export const widgets = [ { name: 'Spinner', displayName: 'Spinner', - description: 'Spinner can be used to display loading status', + description: 'Indicate loading state', component: 'Spinner', defaultSize: { width: 4, @@ -4277,7 +4277,7 @@ export const widgets = [ { name: 'Statistics', displayName: 'Statistics', - description: 'Statistics can be used to display different statistical information', + description: 'Show key metrics', component: 'Statistics', defaultSize: { width: 9.2, @@ -4367,7 +4367,7 @@ export const widgets = [ { name: 'RangeSlider', displayName: 'Range Slider', - description: 'Can be used to show slider with a range', + description: 'Adjust value range', component: 'RangeSlider', defaultSize: { width: 9, From 38767c85b1b38e77fdd9c08b3a1b4bdbdb703bd5 Mon Sep 17 00:00:00 2001 From: Vibhor Malik <37906533+vibh1103@users.noreply.github.com> Date: Thu, 12 Oct 2023 14:52:49 +0530 Subject: [PATCH 06/67] Fix tooltips (#7529) --- frontend/assets/translations/en.json | 8 ++++---- frontend/src/Editor/WidgetManager/widgetConfig.js | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/frontend/assets/translations/en.json b/frontend/assets/translations/en.json index 7f7433cf21..fa9540184d 100644 --- a/frontend/assets/translations/en.json +++ b/frontend/assets/translations/en.json @@ -881,19 +881,19 @@ }, "CustomComponent": { "displayName": "Custom Component", - "description": "Add your custom react component" + "description": "Create React components" }, "ButtonGroup": { "displayName": "Button Group", - "description": "ButtonGroup" + "description": "Group of buttons" }, "PDF": { "displayName": "PDF", - "description": "Embed PDF file" + "description": "Embed PDF documents" }, "Steps": { "displayName": "Steps", - "description": "Steps" + "description": "Step-by-step navigation aid" }, "KanbanBoard": { "displayName": "Kanban Board", diff --git a/frontend/src/Editor/WidgetManager/widgetConfig.js b/frontend/src/Editor/WidgetManager/widgetConfig.js index 98cc2a363e..695ed748f1 100644 --- a/frontend/src/Editor/WidgetManager/widgetConfig.js +++ b/frontend/src/Editor/WidgetManager/widgetConfig.js @@ -4679,7 +4679,7 @@ export const widgets = [ { name: 'CustomComponent', displayName: 'Custom Component', - description: 'Visual representation of a sequence of events', + description: 'Create React components', component: 'CustomComponent', properties: { data: { type: 'code', displayName: 'Data', validation: { schema: { type: 'object' } } }, @@ -4744,7 +4744,7 @@ ReactDOM.render(, document.body);`, { name: 'ButtonGroup', displayName: 'Button Group', - description: 'ButtonGroup', + description: 'Group of buttons', component: 'ButtonGroup', properties: { label: { @@ -4886,7 +4886,7 @@ ReactDOM.render(, document.body);`, { name: 'PDF', displayName: 'PDF', - description: 'Embed PDF file', + description: 'Embed PDF documents', component: 'PDF', properties: { url: { type: 'code', displayName: 'File URL', validation: { schema: { type: 'string' } } }, @@ -4945,7 +4945,7 @@ ReactDOM.render(, document.body);`, { name: 'Steps', displayName: 'Steps', - description: 'Steps', + description: 'Step-by-step navigation aid', component: 'Steps', properties: { steps: { From f9370c387e189de823476db1bdde967f34bde14f Mon Sep 17 00:00:00 2001 From: nayangoyal <101893656+nayangoyal@users.noreply.github.com> Date: Thu, 12 Oct 2023 14:53:13 +0530 Subject: [PATCH 07/67] Update descriptions(tooltips) (#7566) * Update descriptions(tooltips) for timer, list view, tags and pagination components * Update en.json-descriptions(tooltips) for timer, list view, tags and pagination components --- frontend/assets/translations/en.json | 10 +++++----- frontend/src/Editor/WidgetManager/widgetConfig.js | 8 ++++---- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/frontend/assets/translations/en.json b/frontend/assets/translations/en.json index fa9540184d..ff40b511e6 100644 --- a/frontend/assets/translations/en.json +++ b/frontend/assets/translations/en.json @@ -833,19 +833,19 @@ }, "Timer": { "displayName": "Timer", - "description": "timer" + "description": "Countdown or stopwatch" }, "Listview": { "displayName": "List View", - "description": "Wrapper for multiple components" + "description": "List multiple items" }, "Tags": { "displayName": "Tags", - "description": "Content can be shown as tags" + "description": "Display tag labels" }, "Pagination": { "displayName": "Pagination", - "description": "Pagination " + "description": "Navigate pages" }, "CircularProgressbar": { "displayName": "Circular Progressbar", @@ -948,4 +948,4 @@ "tip": "Back to Home" } } -} \ No newline at end of file +} diff --git a/frontend/src/Editor/WidgetManager/widgetConfig.js b/frontend/src/Editor/WidgetManager/widgetConfig.js index 695ed748f1..733cedc336 100644 --- a/frontend/src/Editor/WidgetManager/widgetConfig.js +++ b/frontend/src/Editor/WidgetManager/widgetConfig.js @@ -3704,7 +3704,7 @@ export const widgets = [ { name: 'Timer', displayName: 'Timer', - description: 'timer', + description: 'Countdown or stopwatch', component: 'Timer', defaultSize: { width: 11, @@ -3797,7 +3797,7 @@ export const widgets = [ { name: 'Listview', displayName: 'List View', - description: 'Wrapper for multiple components', + description: 'List multiple items', defaultSize: { width: 20, height: 300, @@ -3983,7 +3983,7 @@ export const widgets = [ { name: 'Tags', displayName: 'Tags', - description: 'Content can be shown as tags', + description: 'Display tag labels', component: 'Tags', defaultSize: { width: 8, @@ -4039,7 +4039,7 @@ export const widgets = [ { name: 'Pagination', displayName: 'Pagination', - description: 'Pagination ', + description: 'Navigate pages', component: 'Pagination', defaultSize: { width: 10, From d6b9beb7ff8d325be8df92995288c140e5465e5d Mon Sep 17 00:00:00 2001 From: Rajat Gupta <31777800+morgoth9808@users.noreply.github.com> Date: Thu, 12 Oct 2023 14:53:37 +0530 Subject: [PATCH 08/67] changes in S3 data source reference #7542 (#7551) * changes in S3 data source reference #7542 * Update s3.md * Update s3.md --- docs/docs/data-sources/s3.md | 4 ++-- docs/versioned_docs/version-2.18.0/data-sources/s3.md | 4 ++-- docs/versioned_docs/version-2.19.0/data-sources/s3.md | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/docs/data-sources/s3.md b/docs/docs/data-sources/s3.md index db8f35c780..60488139a9 100644 --- a/docs/docs/data-sources/s3.md +++ b/docs/docs/data-sources/s3.md @@ -9,7 +9,7 @@ ToolJet can connect to Amazon S3 buckets and perform various operation on them. ## Connection -To add a new S3 source, go to the **Datasources manager** on the left sidebar of the app editor and click on `Add datasource` button. Select **AWS S3** from the modal that pops up. +To add a new S3 source, go to the **Data sources manager** on the left sidebar of the app editor and click on `Add data source` button. Select **AWS S3** from the modal that pops up. ToolJet supports connecting to AWS S3 using **IAM credentials**, **AWS Instance Profile** or **AWS ARN Role**. @@ -155,5 +155,5 @@ The presigned URLs are useful if you want your user/customer to be able to uploa :::info -We built an app to view and upload files to AWS S3 buckets. Check out the complete tutorial **[here](https://blog.tooljet.com/building-an-app-to-view-and-upload-files-in-aws-s3-bucket/)**. +We built an app to view and upload files to AWS S3 buckets. Check out the complete tutorial **[here](https://blog.tooljet.com/build-an-aws-s3-broswer-with-tooljet/)**. ::: diff --git a/docs/versioned_docs/version-2.18.0/data-sources/s3.md b/docs/versioned_docs/version-2.18.0/data-sources/s3.md index db8f35c780..60488139a9 100644 --- a/docs/versioned_docs/version-2.18.0/data-sources/s3.md +++ b/docs/versioned_docs/version-2.18.0/data-sources/s3.md @@ -9,7 +9,7 @@ ToolJet can connect to Amazon S3 buckets and perform various operation on them. ## Connection -To add a new S3 source, go to the **Datasources manager** on the left sidebar of the app editor and click on `Add datasource` button. Select **AWS S3** from the modal that pops up. +To add a new S3 source, go to the **Data sources manager** on the left sidebar of the app editor and click on `Add data source` button. Select **AWS S3** from the modal that pops up. ToolJet supports connecting to AWS S3 using **IAM credentials**, **AWS Instance Profile** or **AWS ARN Role**. @@ -155,5 +155,5 @@ The presigned URLs are useful if you want your user/customer to be able to uploa :::info -We built an app to view and upload files to AWS S3 buckets. Check out the complete tutorial **[here](https://blog.tooljet.com/building-an-app-to-view-and-upload-files-in-aws-s3-bucket/)**. +We built an app to view and upload files to AWS S3 buckets. Check out the complete tutorial **[here](https://blog.tooljet.com/build-an-aws-s3-broswer-with-tooljet/)**. ::: diff --git a/docs/versioned_docs/version-2.19.0/data-sources/s3.md b/docs/versioned_docs/version-2.19.0/data-sources/s3.md index ba1a029fb2..016630a1dd 100644 --- a/docs/versioned_docs/version-2.19.0/data-sources/s3.md +++ b/docs/versioned_docs/version-2.19.0/data-sources/s3.md @@ -9,7 +9,7 @@ ToolJet can connect to Amazon S3 buckets and perform various operation on them. ## Connection -To add a new S3 source, go to the **Datasources manager** on the left sidebar of the app editor and click on `Add datasource` button. Select **AWS S3** from the modal that pops up. +To add a new S3 source, go to the **Data sources manager** on the left sidebar of the app editor and click on `Add data source` button. Select **AWS S3** from the modal that pops up. ToolJet requires the following to connect to your AWS S3: @@ -133,5 +133,5 @@ The presigned URLs are useful if you want your user/customer to be able to uploa :::info -We built an app to view and upload files to AWS S3 buckets. Check out the complete tutorial **[here](https://blog.tooljet.com/building-an-app-to-view-and-upload-files-in-aws-s3-bucket/)**. +We built an app to view and upload files to AWS S3 buckets. Check out the complete tutorial **[here](https://blog.tooljet.com/build-an-aws-s3-broswer-with-tooljet/)**. ::: From 1f1411a0843d8bd2bc5f16c7b59c18857a978eba Mon Sep 17 00:00:00 2001 From: sourav sharma <127027218+suiisharma@users.noreply.github.com> Date: Thu, 12 Oct 2023 14:53:56 +0530 Subject: [PATCH 09/67] Changed title, description, info in appwrite.md (#7584) * Changed title, description, info in appwrite.md * Updated appwrite.md in versioned_docs --- docs/docs/data-sources/appwrite.md | 8 ++++---- .../version-2.18.0/data-sources/appwrite.md | 8 ++++---- .../version-2.19.0/data-sources/appwrite.md | 8 ++++---- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/docs/data-sources/appwrite.md b/docs/docs/data-sources/appwrite.md index dc11572625..c987afdd6b 100644 --- a/docs/docs/data-sources/appwrite.md +++ b/docs/docs/data-sources/appwrite.md @@ -1,11 +1,11 @@ --- id: appwrite -title: Appwrite Database +title: Appwrite --- -# Appwrite Database +# Appwrite -Now build applications on top of your Appwrite database. +ToolJet can connect to appwrite database to read/write data. ## Connection @@ -20,7 +20,7 @@ You'll find the Secret key and other credentials on your Appwrite's project sett You should also set the scope for access to a particular resource. Learn more about the **API keys and scopes** [here](https://appwrite.io/docs/keys). ::: -To connect Appwrite datasource to your ToolJet application, go to the data source manager on the left-sidebar and click on the `+` button. Select Appwrite from the list of available datasources, provide the credentials and click **Save**. It is recommended to check the connection by clicking on 'Test connection' button to verify if the service account can access Appwrite from the ToolJet server. +To establish a connection with the Appwrite data source, you can either click on the `+Add new data source` button located on the query panel or navigate to the [Data Sources](https://docs.tooljet.com/docs/data-sources/overview) page from the ToolJet dashboard.
diff --git a/docs/versioned_docs/version-2.18.0/data-sources/appwrite.md b/docs/versioned_docs/version-2.18.0/data-sources/appwrite.md index dc11572625..a0562cc980 100644 --- a/docs/versioned_docs/version-2.18.0/data-sources/appwrite.md +++ b/docs/versioned_docs/version-2.18.0/data-sources/appwrite.md @@ -1,11 +1,11 @@ --- id: appwrite -title: Appwrite Database +title: Appwrite --- -# Appwrite Database +# Appwrite -Now build applications on top of your Appwrite database. +ToolJet can connect to appwrite database to read/write data. ## Connection @@ -20,7 +20,7 @@ You'll find the Secret key and other credentials on your Appwrite's project sett You should also set the scope for access to a particular resource. Learn more about the **API keys and scopes** [here](https://appwrite.io/docs/keys). ::: -To connect Appwrite datasource to your ToolJet application, go to the data source manager on the left-sidebar and click on the `+` button. Select Appwrite from the list of available datasources, provide the credentials and click **Save**. It is recommended to check the connection by clicking on 'Test connection' button to verify if the service account can access Appwrite from the ToolJet server. +To establish a connection with the Appwrite data source, you can either click on the `+Add new data source` button located on the query panel or navigate to the [Data Sources](https://docs.tooljet.com/docs/data-sources/overview) page from the ToolJet dashboard.
diff --git a/docs/versioned_docs/version-2.19.0/data-sources/appwrite.md b/docs/versioned_docs/version-2.19.0/data-sources/appwrite.md index dc11572625..c987afdd6b 100644 --- a/docs/versioned_docs/version-2.19.0/data-sources/appwrite.md +++ b/docs/versioned_docs/version-2.19.0/data-sources/appwrite.md @@ -1,11 +1,11 @@ --- id: appwrite -title: Appwrite Database +title: Appwrite --- -# Appwrite Database +# Appwrite -Now build applications on top of your Appwrite database. +ToolJet can connect to appwrite database to read/write data. ## Connection @@ -20,7 +20,7 @@ You'll find the Secret key and other credentials on your Appwrite's project sett You should also set the scope for access to a particular resource. Learn more about the **API keys and scopes** [here](https://appwrite.io/docs/keys). ::: -To connect Appwrite datasource to your ToolJet application, go to the data source manager on the left-sidebar and click on the `+` button. Select Appwrite from the list of available datasources, provide the credentials and click **Save**. It is recommended to check the connection by clicking on 'Test connection' button to verify if the service account can access Appwrite from the ToolJet server. +To establish a connection with the Appwrite data source, you can either click on the `+Add new data source` button located on the query panel or navigate to the [Data Sources](https://docs.tooljet.com/docs/data-sources/overview) page from the ToolJet dashboard.
From 919692847d76c18c61f1dc26859a64e9bb82f231 Mon Sep 17 00:00:00 2001 From: Digvijay Shelar <82649533+shelar1423@users.noreply.github.com> Date: Thu, 12 Oct 2023 14:54:16 +0530 Subject: [PATCH 10/67] [docs]: changes made in Cloud Firestore data source reference (#7601) * Update firestore.md * Update firestore.md * Update firestore.md --- docs/docs/data-sources/firestore.md | 10 ++++++---- .../version-2.18.0/data-sources/firestore.md | 9 +++++---- .../version-2.19.0/data-sources/firestore.md | 10 ++++++---- 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/docs/docs/data-sources/firestore.md b/docs/docs/data-sources/firestore.md index c0375c29c6..4b86322ea5 100644 --- a/docs/docs/data-sources/firestore.md +++ b/docs/docs/data-sources/firestore.md @@ -4,12 +4,14 @@ title: Cloud Firestore --- # Cloud Firestore +ToolJet can connect to Cloud Firestore databases to read and write data. ## Connection -ToolJet connects to your Cloud Firestore using JSON key of your GCP service account. -To generate a new key, check out [Firestore's official documentation](https://cloud.google.com/iam/docs/creating-managing-service-account-keys#iam-service-account-keys-create-console). +ToolJet connects to your Cloud Firestore using JSON key of your GCP service account. Get your service account key as JSON from GCP console. For generating a new key, check out [Firestore's official documentation](https://cloud.google.com/iam/docs/creating-managing-service-account-keys#iam-service-account-keys-create-console). -Once the key is downloaded, click on `+` button of data sources panel at the left-bottom corner of the app editor. Select Firestore from the modal that pops up. Paste the key in the field for GCP key. Click on **Test connection** button to verify if the service account can access Firestore from ToolJet server. Click on **Save** button to save the datasource. +Once you have the key, open it in a text editor and copy the contents. Paste the contents in the **Private key** field of the Firestore data source modal. + +Click on **Test connection** button to verify if the key is valid. Click on **Save** button to save the data source. firestore add ds @@ -160,4 +162,4 @@ The Firestore query result is in the form of object so we’ll need to transform ```js return data = Array(data) -``` \ No newline at end of file +``` diff --git a/docs/versioned_docs/version-2.18.0/data-sources/firestore.md b/docs/versioned_docs/version-2.18.0/data-sources/firestore.md index c0375c29c6..a498d8a75e 100644 --- a/docs/versioned_docs/version-2.18.0/data-sources/firestore.md +++ b/docs/versioned_docs/version-2.18.0/data-sources/firestore.md @@ -4,13 +4,14 @@ title: Cloud Firestore --- # Cloud Firestore +ToolJet can connect to Cloud Firestore databases to read and write data. ## Connection -ToolJet connects to your Cloud Firestore using JSON key of your GCP service account. -To generate a new key, check out [Firestore's official documentation](https://cloud.google.com/iam/docs/creating-managing-service-account-keys#iam-service-account-keys-create-console). +ToolJet connects to your Cloud Firestore using JSON key of your GCP service account. Get your service account key as JSON from GCP console. For generating a new key, check out [Firestore's official documentation](https://cloud.google.com/iam/docs/creating-managing-service-account-keys#iam-service-account-keys-create-console). -Once the key is downloaded, click on `+` button of data sources panel at the left-bottom corner of the app editor. Select Firestore from the modal that pops up. Paste the key in the field for GCP key. Click on **Test connection** button to verify if the service account can access Firestore from ToolJet server. Click on **Save** button to save the datasource. +Once you have the key, open it in a text editor and copy the contents. Paste the contents in the **Private key** field of the Firestore data source modal. +Click on **Test connection** button to verify if the key is valid. Click on **Save** button to save the data source. firestore add ds @@ -160,4 +161,4 @@ The Firestore query result is in the form of object so we’ll need to transform ```js return data = Array(data) -``` \ No newline at end of file +``` diff --git a/docs/versioned_docs/version-2.19.0/data-sources/firestore.md b/docs/versioned_docs/version-2.19.0/data-sources/firestore.md index c0375c29c6..4b86322ea5 100644 --- a/docs/versioned_docs/version-2.19.0/data-sources/firestore.md +++ b/docs/versioned_docs/version-2.19.0/data-sources/firestore.md @@ -4,12 +4,14 @@ title: Cloud Firestore --- # Cloud Firestore +ToolJet can connect to Cloud Firestore databases to read and write data. ## Connection -ToolJet connects to your Cloud Firestore using JSON key of your GCP service account. -To generate a new key, check out [Firestore's official documentation](https://cloud.google.com/iam/docs/creating-managing-service-account-keys#iam-service-account-keys-create-console). +ToolJet connects to your Cloud Firestore using JSON key of your GCP service account. Get your service account key as JSON from GCP console. For generating a new key, check out [Firestore's official documentation](https://cloud.google.com/iam/docs/creating-managing-service-account-keys#iam-service-account-keys-create-console). -Once the key is downloaded, click on `+` button of data sources panel at the left-bottom corner of the app editor. Select Firestore from the modal that pops up. Paste the key in the field for GCP key. Click on **Test connection** button to verify if the service account can access Firestore from ToolJet server. Click on **Save** button to save the datasource. +Once you have the key, open it in a text editor and copy the contents. Paste the contents in the **Private key** field of the Firestore data source modal. + +Click on **Test connection** button to verify if the key is valid. Click on **Save** button to save the data source. firestore add ds @@ -160,4 +162,4 @@ The Firestore query result is in the form of object so we’ll need to transform ```js return data = Array(data) -``` \ No newline at end of file +``` From 7612ba01e3c964a2101a02b32bb96340599f3790 Mon Sep 17 00:00:00 2001 From: M Sai Kiran <116418856+MSaiKiran9@users.noreply.github.com> Date: Thu, 12 Oct 2023 14:54:44 +0530 Subject: [PATCH 11/67] docs : Big query page documentation updated (#7600) * Update bigquery.md docs/docs updated * Update bigquery.md docs/version-2.19.0 updated * Update bigquery.md docs/version-2.18.0 updated --- docs/docs/data-sources/bigquery.md | 13 +++++-------- .../version-2.18.0/data-sources/bigquery.md | 13 +++++-------- .../version-2.19.0/data-sources/bigquery.md | 13 +++++-------- 3 files changed, 15 insertions(+), 24 deletions(-) diff --git a/docs/docs/data-sources/bigquery.md b/docs/docs/data-sources/bigquery.md index e3e29b8d4c..2b6eb57145 100644 --- a/docs/docs/data-sources/bigquery.md +++ b/docs/docs/data-sources/bigquery.md @@ -9,15 +9,13 @@ ToolJet can connect to BigQuery databases to run BigQuery queries. ## Connection -Please refer [this](https://cloud.google.com/bigquery/docs/bigquery-web-ui) link to enable BigQuery API in Google Cloud Console. +To connect to BigQuery, you need to enable BigQuery API in your Google Cloud Console. You can follow the steps to enable BigQuery API from [this link](https://cloud.google.com/bigquery/docs/bigquery-web-ui). -Create **Service Account** and **key**, then get your configs downloaded as **JSON** +Next, you need to create a service account and generate a key for the same. You can follow the steps to create a service account from [this link](https://cloud.google.com/iam/docs/creating-managing-service-accounts). -To add a new BigQuery, click on the `+` button on data sources panel at the left-bottom corner of the app editor. Select BigQuery from the modal that pops up. +Now, copy and paste the data from the downloaded JSON file into the **Private key** field in the BigQuery data source form. -ToolJet requires the config json downloaded from your account to connect to BigQuery. Paste the json into the `Private key` field. - -**The json looks like**: +**The json file should look like this:** ```json { @@ -50,7 +48,6 @@ Click on `+` button of the query manager at the bottom panel of the editor and s BQ query -Click on the **run** button to run the query. NOTE: Query should be saved before running. :::tip Query results can be transformed using transformations. Read our transformations documentation to see how: [link](/docs/tutorial/transformations) @@ -157,4 +154,4 @@ NOTE: visit -https://github.com/googleapis/nodejs-bigquery/blob/main/samples/cre ::: ### Delete Table -- To delete a table. \ No newline at end of file +- To delete a table. diff --git a/docs/versioned_docs/version-2.18.0/data-sources/bigquery.md b/docs/versioned_docs/version-2.18.0/data-sources/bigquery.md index e3e29b8d4c..2b6eb57145 100644 --- a/docs/versioned_docs/version-2.18.0/data-sources/bigquery.md +++ b/docs/versioned_docs/version-2.18.0/data-sources/bigquery.md @@ -9,15 +9,13 @@ ToolJet can connect to BigQuery databases to run BigQuery queries. ## Connection -Please refer [this](https://cloud.google.com/bigquery/docs/bigquery-web-ui) link to enable BigQuery API in Google Cloud Console. +To connect to BigQuery, you need to enable BigQuery API in your Google Cloud Console. You can follow the steps to enable BigQuery API from [this link](https://cloud.google.com/bigquery/docs/bigquery-web-ui). -Create **Service Account** and **key**, then get your configs downloaded as **JSON** +Next, you need to create a service account and generate a key for the same. You can follow the steps to create a service account from [this link](https://cloud.google.com/iam/docs/creating-managing-service-accounts). -To add a new BigQuery, click on the `+` button on data sources panel at the left-bottom corner of the app editor. Select BigQuery from the modal that pops up. +Now, copy and paste the data from the downloaded JSON file into the **Private key** field in the BigQuery data source form. -ToolJet requires the config json downloaded from your account to connect to BigQuery. Paste the json into the `Private key` field. - -**The json looks like**: +**The json file should look like this:** ```json { @@ -50,7 +48,6 @@ Click on `+` button of the query manager at the bottom panel of the editor and s BQ query -Click on the **run** button to run the query. NOTE: Query should be saved before running. :::tip Query results can be transformed using transformations. Read our transformations documentation to see how: [link](/docs/tutorial/transformations) @@ -157,4 +154,4 @@ NOTE: visit -https://github.com/googleapis/nodejs-bigquery/blob/main/samples/cre ::: ### Delete Table -- To delete a table. \ No newline at end of file +- To delete a table. diff --git a/docs/versioned_docs/version-2.19.0/data-sources/bigquery.md b/docs/versioned_docs/version-2.19.0/data-sources/bigquery.md index e3e29b8d4c..2b6eb57145 100644 --- a/docs/versioned_docs/version-2.19.0/data-sources/bigquery.md +++ b/docs/versioned_docs/version-2.19.0/data-sources/bigquery.md @@ -9,15 +9,13 @@ ToolJet can connect to BigQuery databases to run BigQuery queries. ## Connection -Please refer [this](https://cloud.google.com/bigquery/docs/bigquery-web-ui) link to enable BigQuery API in Google Cloud Console. +To connect to BigQuery, you need to enable BigQuery API in your Google Cloud Console. You can follow the steps to enable BigQuery API from [this link](https://cloud.google.com/bigquery/docs/bigquery-web-ui). -Create **Service Account** and **key**, then get your configs downloaded as **JSON** +Next, you need to create a service account and generate a key for the same. You can follow the steps to create a service account from [this link](https://cloud.google.com/iam/docs/creating-managing-service-accounts). -To add a new BigQuery, click on the `+` button on data sources panel at the left-bottom corner of the app editor. Select BigQuery from the modal that pops up. +Now, copy and paste the data from the downloaded JSON file into the **Private key** field in the BigQuery data source form. -ToolJet requires the config json downloaded from your account to connect to BigQuery. Paste the json into the `Private key` field. - -**The json looks like**: +**The json file should look like this:** ```json { @@ -50,7 +48,6 @@ Click on `+` button of the query manager at the bottom panel of the editor and s BQ query -Click on the **run** button to run the query. NOTE: Query should be saved before running. :::tip Query results can be transformed using transformations. Read our transformations documentation to see how: [link](/docs/tutorial/transformations) @@ -157,4 +154,4 @@ NOTE: visit -https://github.com/googleapis/nodejs-bigquery/blob/main/samples/cre ::: ### Delete Table -- To delete a table. \ No newline at end of file +- To delete a table. From d3d923f633d91ca6c3ec275275c5c607f3cf3866 Mon Sep 17 00:00:00 2001 From: Vishal Khoje <36984676+vishalkhoje@users.noreply.github.com> Date: Thu, 12 Oct 2023 14:54:52 +0530 Subject: [PATCH 12/67] docs: updated coscosdb reference (#7614) --- docs/docs/data-sources/cosmosdb.md | 73 +++++++++---------- .../version-2.18.0/data-sources/cosmosdb.md | 73 +++++++++---------- .../version-2.19.0/data-sources/cosmosdb.md | 73 +++++++++---------- 3 files changed, 108 insertions(+), 111 deletions(-) diff --git a/docs/docs/data-sources/cosmosdb.md b/docs/docs/data-sources/cosmosdb.md index a924932750..9ffe9b3e6d 100644 --- a/docs/docs/data-sources/cosmosdb.md +++ b/docs/docs/data-sources/cosmosdb.md @@ -2,14 +2,14 @@ id: cosmosdb title: CosmosDB --- + # Cosmosdb -ToolJet can connect to CosmosDB databases to read and write data. - +ToolJet can connect to CosmosDB databases to read and write data. ## Connection -To add a new **[Azure Cosmos DB](https://docs.microsoft.com/en-us/javascript/api/overview/azure/cosmos-readme?view=azure-node-latest#key-concepts)**, click on the `+` button on data sources panel at the left-bottom corner of the app editor. Select CosmosDB from the modal that pops up. +To establish a connection with the CosmosDB data source, you can either click on the `+Add new data source` button located on the query panel or navigate to the **[Data Sources](/docs/data-sources/overview)** page through the ToolJet dashboard. ToolJet requires the following to connect to your Cosmos DB. @@ -28,8 +28,7 @@ You can find the endpoint and key in the **[Azure Portal](https://portal.azure.c
- -## Supported queries: +## Supported Queries: - [Listing databases](#listing-databases) - [Listing containers](#listing-containers) @@ -38,54 +37,54 @@ You can find the endpoint and key in the **[Azure Portal](https://portal.azure.c - [Deleting an item](#deleting-an-item) - [Querying documents](#querying-documents) +### Listing Databases - - - -### Listing databases This query lists all the databases in a Cosmos DB. -### Listing containers +### Listing Containers + This query lists all the containers of a database in a Cosmos DB. -| Fields | description | -| ----------- | ----------- | -| database | id of the database | +| Fields | Description | +| -------- | ------------------ | +| database | id of the database | + +### Inserting Item(s) -### Inserting item(s) This query inserts one or more items in a container of a database in a Cosmos DB. -| Fields | description | -| ----------- | ----------- | -| database | id of the database | -| container | id of the container | -| items | items to be inserted. Example: `{{[{name: "one", val: 1}, {name:"two", val: 2}]}}` | +| Fields | Description | +| --------- | ---------------------------------------------------------------------------------- | +| database | id of the database | +| container | id of the container | +| items | items to be inserted. Example: `{{[{name: "one", val: 1}, {name:"two", val: 2}]}}` | + +### Retrieving An Item -### Retrieving an item To read a single item from a container of a database in a Cosmos DB, use the following query. -| Fields | description | -| ----------- | ----------- | -| database | id of the database | -| container | id of the container | -| item | id of the item | +| Fields | Description | +| --------- | ------------------- | +| database | id of the database | +| container | id of the container | +| item | id of the item | +### Deleting An Item -### Deleting an item To delete an item from a container of a database in a Cosmos DB, use the following query. -| Fields | description | -| ----------- | ----------- | -| database | id of the database | -| container | id of the container | -| item | id of the item | +| Fields | Description | +| --------- | ------------------- | +| database | id of the database | +| container | id of the container | +| item | id of the item | +### Querying Documents -### Querying documents To query documents from a container of a database in a Cosmos DB using SQL-like syntax, use the following query. -| Fields | description | -| ----------- | ----------- | -| database | id of the database | -| container | id of the container | -| query | query to be executed. Example: `SELECT * FROM c WHERE c.age > 20 AND c.age <= 30` | +| Fields | Description | +| --------- | --------------------------------------------------------------------------------- | +| database | id of the database | +| container | id of the container | +| query | query to be executed. Example: `SELECT * FROM c WHERE c.age > 20 AND c.age <= 30` | diff --git a/docs/versioned_docs/version-2.18.0/data-sources/cosmosdb.md b/docs/versioned_docs/version-2.18.0/data-sources/cosmosdb.md index a924932750..4b6d4f412f 100644 --- a/docs/versioned_docs/version-2.18.0/data-sources/cosmosdb.md +++ b/docs/versioned_docs/version-2.18.0/data-sources/cosmosdb.md @@ -2,14 +2,14 @@ id: cosmosdb title: CosmosDB --- + # Cosmosdb -ToolJet can connect to CosmosDB databases to read and write data. - +ToolJet can connect to CosmosDB databases to read and write data. ## Connection -To add a new **[Azure Cosmos DB](https://docs.microsoft.com/en-us/javascript/api/overview/azure/cosmos-readme?view=azure-node-latest#key-concepts)**, click on the `+` button on data sources panel at the left-bottom corner of the app editor. Select CosmosDB from the modal that pops up. +To establish a connection with the CosmosDB data source, you can either click on the `+Add new data source` button located on the query panel or navigate to the **[Data Sources](/docs/data-sources/overview)** page through the ToolJet dashboard. ToolJet requires the following to connect to your Cosmos DB. @@ -28,8 +28,7 @@ You can find the endpoint and key in the **[Azure Portal](https://portal.azure.c
- -## Supported queries: +## Supported Queries: - [Listing databases](#listing-databases) - [Listing containers](#listing-containers) @@ -38,54 +37,54 @@ You can find the endpoint and key in the **[Azure Portal](https://portal.azure.c - [Deleting an item](#deleting-an-item) - [Querying documents](#querying-documents) +### Listing Databases - - - -### Listing databases This query lists all the databases in a Cosmos DB. -### Listing containers +### Listing Containers + This query lists all the containers of a database in a Cosmos DB. -| Fields | description | -| ----------- | ----------- | -| database | id of the database | +| Fields | Description | +| -------- | ------------------ | +| database | id of the database | + +### Inserting Item(s) -### Inserting item(s) This query inserts one or more items in a container of a database in a Cosmos DB. -| Fields | description | -| ----------- | ----------- | -| database | id of the database | -| container | id of the container | -| items | items to be inserted. Example: `{{[{name: "one", val: 1}, {name:"two", val: 2}]}}` | +| Fields | Description | +| --------- | ---------------------------------------------------------------------------------- | +| database | id of the database | +| container | id of the container | +| items | items to be inserted. Example: `{{[{name: "one", val: 1}, {name:"two", val: 2}]}}` | + +### Retrieving An item -### Retrieving an item To read a single item from a container of a database in a Cosmos DB, use the following query. -| Fields | description | -| ----------- | ----------- | -| database | id of the database | -| container | id of the container | -| item | id of the item | +| Fields | Description | +| --------- | ------------------- | +| database | id of the database | +| container | id of the container | +| item | id of the item | +### Deleting An Item -### Deleting an item To delete an item from a container of a database in a Cosmos DB, use the following query. -| Fields | description | -| ----------- | ----------- | -| database | id of the database | -| container | id of the container | -| item | id of the item | +| Fields | Description | +| --------- | ------------------- | +| database | id of the database | +| container | id of the container | +| item | id of the item | +### Querying Documents -### Querying documents To query documents from a container of a database in a Cosmos DB using SQL-like syntax, use the following query. -| Fields | description | -| ----------- | ----------- | -| database | id of the database | -| container | id of the container | -| query | query to be executed. Example: `SELECT * FROM c WHERE c.age > 20 AND c.age <= 30` | +| Fields | Description | +| --------- | --------------------------------------------------------------------------------- | +| database | id of the database | +| container | id of the container | +| query | query to be executed. Example: `SELECT * FROM c WHERE c.age > 20 AND c.age <= 30` | diff --git a/docs/versioned_docs/version-2.19.0/data-sources/cosmosdb.md b/docs/versioned_docs/version-2.19.0/data-sources/cosmosdb.md index a924932750..9ffe9b3e6d 100644 --- a/docs/versioned_docs/version-2.19.0/data-sources/cosmosdb.md +++ b/docs/versioned_docs/version-2.19.0/data-sources/cosmosdb.md @@ -2,14 +2,14 @@ id: cosmosdb title: CosmosDB --- + # Cosmosdb -ToolJet can connect to CosmosDB databases to read and write data. - +ToolJet can connect to CosmosDB databases to read and write data. ## Connection -To add a new **[Azure Cosmos DB](https://docs.microsoft.com/en-us/javascript/api/overview/azure/cosmos-readme?view=azure-node-latest#key-concepts)**, click on the `+` button on data sources panel at the left-bottom corner of the app editor. Select CosmosDB from the modal that pops up. +To establish a connection with the CosmosDB data source, you can either click on the `+Add new data source` button located on the query panel or navigate to the **[Data Sources](/docs/data-sources/overview)** page through the ToolJet dashboard. ToolJet requires the following to connect to your Cosmos DB. @@ -28,8 +28,7 @@ You can find the endpoint and key in the **[Azure Portal](https://portal.azure.c
- -## Supported queries: +## Supported Queries: - [Listing databases](#listing-databases) - [Listing containers](#listing-containers) @@ -38,54 +37,54 @@ You can find the endpoint and key in the **[Azure Portal](https://portal.azure.c - [Deleting an item](#deleting-an-item) - [Querying documents](#querying-documents) +### Listing Databases - - - -### Listing databases This query lists all the databases in a Cosmos DB. -### Listing containers +### Listing Containers + This query lists all the containers of a database in a Cosmos DB. -| Fields | description | -| ----------- | ----------- | -| database | id of the database | +| Fields | Description | +| -------- | ------------------ | +| database | id of the database | + +### Inserting Item(s) -### Inserting item(s) This query inserts one or more items in a container of a database in a Cosmos DB. -| Fields | description | -| ----------- | ----------- | -| database | id of the database | -| container | id of the container | -| items | items to be inserted. Example: `{{[{name: "one", val: 1}, {name:"two", val: 2}]}}` | +| Fields | Description | +| --------- | ---------------------------------------------------------------------------------- | +| database | id of the database | +| container | id of the container | +| items | items to be inserted. Example: `{{[{name: "one", val: 1}, {name:"two", val: 2}]}}` | + +### Retrieving An Item -### Retrieving an item To read a single item from a container of a database in a Cosmos DB, use the following query. -| Fields | description | -| ----------- | ----------- | -| database | id of the database | -| container | id of the container | -| item | id of the item | +| Fields | Description | +| --------- | ------------------- | +| database | id of the database | +| container | id of the container | +| item | id of the item | +### Deleting An Item -### Deleting an item To delete an item from a container of a database in a Cosmos DB, use the following query. -| Fields | description | -| ----------- | ----------- | -| database | id of the database | -| container | id of the container | -| item | id of the item | +| Fields | Description | +| --------- | ------------------- | +| database | id of the database | +| container | id of the container | +| item | id of the item | +### Querying Documents -### Querying documents To query documents from a container of a database in a Cosmos DB using SQL-like syntax, use the following query. -| Fields | description | -| ----------- | ----------- | -| database | id of the database | -| container | id of the container | -| query | query to be executed. Example: `SELECT * FROM c WHERE c.age > 20 AND c.age <= 30` | +| Fields | Description | +| --------- | --------------------------------------------------------------------------------- | +| database | id of the database | +| container | id of the container | +| query | query to be executed. Example: `SELECT * FROM c WHERE c.age > 20 AND c.age <= 30` | From c0d6dd6ae77dcc54f58ac5c017931b6b4aa79495 Mon Sep 17 00:00:00 2001 From: Rizina Date: Thu, 12 Oct 2023 15:10:14 +0545 Subject: [PATCH 13/67] docs: updated couchdb reference (#7610) --- docs/docs/data-sources/couchdb.md | 51 ++++++++----------- .../version-2.18.0/data-sources/couchdb.md | 51 ++++++++----------- .../version-2.19.0/data-sources/couchdb.md | 46 ++++++++--------- 3 files changed, 65 insertions(+), 83 deletions(-) diff --git a/docs/docs/data-sources/couchdb.md b/docs/docs/data-sources/couchdb.md index 385ed788ad..d531ac0042 100644 --- a/docs/docs/data-sources/couchdb.md +++ b/docs/docs/data-sources/couchdb.md @@ -8,27 +8,24 @@ title: CouchDB ToolJet can connect to CouchDB databases to read and write data. CocuhDB uses basic auth for authentication , username and password for the database is required to create an CouchDB data source on ToolJet. For more info visit [CouchDB docs](https://docs.couchdb.org/en/stable/). -Couch auth +## Supported Queries: - -## Supported queries: - -- [Listing records](#listing-records) -- [Retrieving a record](#retrieving-a-record) -- [Creating a record](#creating-a-record) -- [Updating a record](#updating-a-record) -- [Deleting a record](#deleting-a-record) +- [Listing Records](#listing-records) +- [Retrieving a Record](#retrieving-a-record) +- [Creating a Record](#creating-a-record) +- [Updating a Record](#updating-a-record) +- [Deleting a Record](#deleting-a-record) - [Find](#find) -- [Retrieving a view](#retrieving-a-view) +- [Retrieving a View](#retrieving-a-view) :::info NOTE: Record ID is same as document ID("_id") . ::: -### Listing records +### Listing Records This query lists all the records in a database. -#### Optional parameters: +#### Optional Parameters: - **Include docs** - **Descending order** @@ -83,9 +80,9 @@ Example response from CouchDb: } ``` -### Retrieving a record +### Retrieving a Record -#### Required parameters: +#### Required Parameters: - **Record ID** @@ -108,7 +105,7 @@ Example response from CouchDb: The returned JSON is the JSON of the document, including the document ID and revision number: -### Creating a record +### Creating a Record Couch create view @@ -122,10 +119,6 @@ The returned JSON is the JSON of the document, including the document ID and rev Click on the `run` button to run the query. -:::info -NOTE: Query must be saved before running. -::: - Example response from CouchDb: ```json @@ -137,12 +130,12 @@ Example response from CouchDb: ``` -### Updating a record +### Updating a Record You can get the revision id value, by sending a GET request to get the document details. You get the document as JSON in the response. For each update to the document, the revision field "_rev" gets changed. -#### Required parameters: +#### Required Rarameters: - **Revision ID** - **Record ID** @@ -150,7 +143,7 @@ You get the document as JSON in the response. For each update to the document, t Couch update view -#### Example body: +#### Example Body: ```json [{"name":"tooljet"}] @@ -172,9 +165,9 @@ Example response from CouchDb: } ``` -### Deleting a record +### Deleting a Record -#### Required parameters: +#### Required Parameters: - **Revision ID** - **Record ID** @@ -200,7 +193,7 @@ Example response from CouchDb: Find documents using a declarative JSON querying syntax. -#### Required parameters: +#### Required Parameters: - **Selector** :::info @@ -212,7 +205,7 @@ selector syntax: https://pouchdb.com/guides/mango-queries.html Couch find -#### Example body: +#### Example Body: ```json { @@ -239,11 +232,11 @@ Example response from CouchDb: Couch find response -### Retrieving a view +### Retrieving a View Views are the primary tool used for querying and reporting on CouchDB documents. -#### Required parameters: +#### Required Parameters: - **View url** Reference for view :https://docs.couchdb.org/en/3.2.0/ddocs/views/intro.html#what-is-a-view @@ -252,7 +245,7 @@ Reference for view :https://docs.couchdb.org/en/3.2.0/ddocs/views/intro.html#wha Couch get view -#### Optional parameters: +#### Optional Parameters: - **Start key** - **End key** diff --git a/docs/versioned_docs/version-2.18.0/data-sources/couchdb.md b/docs/versioned_docs/version-2.18.0/data-sources/couchdb.md index 385ed788ad..d4a6c70bd8 100644 --- a/docs/versioned_docs/version-2.18.0/data-sources/couchdb.md +++ b/docs/versioned_docs/version-2.18.0/data-sources/couchdb.md @@ -8,27 +8,24 @@ title: CouchDB ToolJet can connect to CouchDB databases to read and write data. CocuhDB uses basic auth for authentication , username and password for the database is required to create an CouchDB data source on ToolJet. For more info visit [CouchDB docs](https://docs.couchdb.org/en/stable/). -Couch auth +## Supported Queries: - -## Supported queries: - -- [Listing records](#listing-records) -- [Retrieving a record](#retrieving-a-record) -- [Creating a record](#creating-a-record) -- [Updating a record](#updating-a-record) -- [Deleting a record](#deleting-a-record) +- [Listing Records](#listing-records) +- [Retrieving a Record](#retrieving-a-record) +- [Creating a Record](#creating-a-record) +- [Updating a Record](#updating-a-record) +- [Deleting a Record](#deleting-a-record) - [Find](#find) -- [Retrieving a view](#retrieving-a-view) +- [Retrieving a View](#retrieving-a-view) :::info NOTE: Record ID is same as document ID("_id") . ::: -### Listing records +### Listing Records This query lists all the records in a database. -#### Optional parameters: +#### Optional Parameters: - **Include docs** - **Descending order** @@ -83,9 +80,9 @@ Example response from CouchDb: } ``` -### Retrieving a record +### Retrieving a Record -#### Required parameters: +#### Required Parameters: - **Record ID** @@ -108,7 +105,7 @@ Example response from CouchDb: The returned JSON is the JSON of the document, including the document ID and revision number: -### Creating a record +### Creating a Record Couch create view @@ -122,10 +119,6 @@ The returned JSON is the JSON of the document, including the document ID and rev Click on the `run` button to run the query. -:::info -NOTE: Query must be saved before running. -::: - Example response from CouchDb: ```json @@ -137,12 +130,12 @@ Example response from CouchDb: ``` -### Updating a record +### Updating a Record You can get the revision id value, by sending a GET request to get the document details. You get the document as JSON in the response. For each update to the document, the revision field "_rev" gets changed. -#### Required parameters: +#### Required Parameters: - **Revision ID** - **Record ID** @@ -150,7 +143,7 @@ You get the document as JSON in the response. For each update to the document, t Couch update view -#### Example body: +#### Example Body: ```json [{"name":"tooljet"}] @@ -172,9 +165,9 @@ Example response from CouchDb: } ``` -### Deleting a record +### Deleting a Record -#### Required parameters: +#### Required Parameters: - **Revision ID** - **Record ID** @@ -200,7 +193,7 @@ Example response from CouchDb: Find documents using a declarative JSON querying syntax. -#### Required parameters: +#### Required Parameters: - **Selector** :::info @@ -212,7 +205,7 @@ selector syntax: https://pouchdb.com/guides/mango-queries.html Couch find -#### Example body: +#### Example Body: ```json { @@ -239,11 +232,11 @@ Example response from CouchDb: Couch find response -### Retrieving a view +### Retrieving a View Views are the primary tool used for querying and reporting on CouchDB documents. -#### Required parameters: +#### Required Parameters: - **View url** Reference for view :https://docs.couchdb.org/en/3.2.0/ddocs/views/intro.html#what-is-a-view @@ -252,7 +245,7 @@ Reference for view :https://docs.couchdb.org/en/3.2.0/ddocs/views/intro.html#wha Couch get view -#### Optional parameters: +#### Optional Parameters: - **Start key** - **End key** diff --git a/docs/versioned_docs/version-2.19.0/data-sources/couchdb.md b/docs/versioned_docs/version-2.19.0/data-sources/couchdb.md index 385ed788ad..3d09e49231 100644 --- a/docs/versioned_docs/version-2.19.0/data-sources/couchdb.md +++ b/docs/versioned_docs/version-2.19.0/data-sources/couchdb.md @@ -13,22 +13,22 @@ ToolJet can connect to CouchDB databases to read and write data. CocuhDB uses ba ## Supported queries: -- [Listing records](#listing-records) -- [Retrieving a record](#retrieving-a-record) -- [Creating a record](#creating-a-record) -- [Updating a record](#updating-a-record) -- [Deleting a record](#deleting-a-record) +- [Listing Records](#listing-records) +- [Retrieving a Record](#retrieving-a-record) +- [Creating a Record](#creating-a-record) +- [Updating a Record](#updating-a-record) +- [Deleting a Record](#deleting-a-record) - [Find](#find) -- [Retrieving a view](#retrieving-a-view) +- [Retrieving a View](#retrieving-a-view) :::info NOTE: Record ID is same as document ID("_id") . ::: -### Listing records +### Listing Records This query lists all the records in a database. -#### Optional parameters: +#### Optional Parameters: - **Include docs** - **Descending order** @@ -83,9 +83,9 @@ Example response from CouchDb: } ``` -### Retrieving a record +### Retrieving a Record -#### Required parameters: +#### Required Parameters: - **Record ID** @@ -108,7 +108,7 @@ Example response from CouchDb: The returned JSON is the JSON of the document, including the document ID and revision number: -### Creating a record +### Creating a Record Couch create view @@ -122,10 +122,6 @@ The returned JSON is the JSON of the document, including the document ID and rev Click on the `run` button to run the query. -:::info -NOTE: Query must be saved before running. -::: - Example response from CouchDb: ```json @@ -137,12 +133,12 @@ Example response from CouchDb: ``` -### Updating a record +### Updating a Record You can get the revision id value, by sending a GET request to get the document details. You get the document as JSON in the response. For each update to the document, the revision field "_rev" gets changed. -#### Required parameters: +#### Required Parameters: - **Revision ID** - **Record ID** @@ -150,7 +146,7 @@ You get the document as JSON in the response. For each update to the document, t Couch update view -#### Example body: +#### Example Body: ```json [{"name":"tooljet"}] @@ -172,9 +168,9 @@ Example response from CouchDb: } ``` -### Deleting a record +### Deleting a Record -#### Required parameters: +#### Required Parameters: - **Revision ID** - **Record ID** @@ -200,7 +196,7 @@ Example response from CouchDb: Find documents using a declarative JSON querying syntax. -#### Required parameters: +#### Required Parameters: - **Selector** :::info @@ -212,7 +208,7 @@ selector syntax: https://pouchdb.com/guides/mango-queries.html Couch find -#### Example body: +#### Example Body: ```json { @@ -239,11 +235,11 @@ Example response from CouchDb: Couch find response -### Retrieving a view +### Retrieving a View Views are the primary tool used for querying and reporting on CouchDB documents. -#### Required parameters: +#### Required Parameters: - **View url** Reference for view :https://docs.couchdb.org/en/3.2.0/ddocs/views/intro.html#what-is-a-view @@ -252,7 +248,7 @@ Reference for view :https://docs.couchdb.org/en/3.2.0/ddocs/views/intro.html#wha Couch get view -#### Optional parameters: +#### Optional Parameters: - **Start key** - **End key** From b9bd285fdcbcd50416617619ce9bfbcb999b5197 Mon Sep 17 00:00:00 2001 From: Ramana5564 <76819694+Ramana5564@users.noreply.github.com> Date: Thu, 12 Oct 2023 14:56:03 +0530 Subject: [PATCH 14/67] Fix/documentation bug global datasource to data source (#7772) * fix: Fixed the documentation bug in DynamoDB from global data source to data source * fix: Fixed the documentation bug of global datasource to data source --- docs/docs/data-sources/dynamodb.md | 2 +- docs/versioned_docs/version-2.18.0/data-sources/dynamodb.md | 2 +- docs/versioned_docs/version-2.19.0/data-sources/dynamodb.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/docs/data-sources/dynamodb.md b/docs/docs/data-sources/dynamodb.md index abaacaa48c..127a917898 100644 --- a/docs/docs/data-sources/dynamodb.md +++ b/docs/docs/data-sources/dynamodb.md @@ -8,7 +8,7 @@ DynamoDB is a managed non-relational database service provided by Amazon. ToolJe ## Connection -To establish a connection with the DynamoDB global datasource, you can either click on the `+Add new global datasource` button located on the query panel or navigate to the **[Global Datasources](/docs/data-sources/overview)** page through the ToolJet dashboard. +To establish a connection with the DynamoDB data source, you can either click on the `+Add new data source` button located on the query panel or navigate to the **[Data sources](/docs/data-sources/overview)** page through the ToolJet dashboard.
diff --git a/docs/versioned_docs/version-2.18.0/data-sources/dynamodb.md b/docs/versioned_docs/version-2.18.0/data-sources/dynamodb.md index abaacaa48c..127a917898 100644 --- a/docs/versioned_docs/version-2.18.0/data-sources/dynamodb.md +++ b/docs/versioned_docs/version-2.18.0/data-sources/dynamodb.md @@ -8,7 +8,7 @@ DynamoDB is a managed non-relational database service provided by Amazon. ToolJe ## Connection -To establish a connection with the DynamoDB global datasource, you can either click on the `+Add new global datasource` button located on the query panel or navigate to the **[Global Datasources](/docs/data-sources/overview)** page through the ToolJet dashboard. +To establish a connection with the DynamoDB data source, you can either click on the `+Add new data source` button located on the query panel or navigate to the **[Data sources](/docs/data-sources/overview)** page through the ToolJet dashboard.
diff --git a/docs/versioned_docs/version-2.19.0/data-sources/dynamodb.md b/docs/versioned_docs/version-2.19.0/data-sources/dynamodb.md index abaacaa48c..127a917898 100644 --- a/docs/versioned_docs/version-2.19.0/data-sources/dynamodb.md +++ b/docs/versioned_docs/version-2.19.0/data-sources/dynamodb.md @@ -8,7 +8,7 @@ DynamoDB is a managed non-relational database service provided by Amazon. ToolJe ## Connection -To establish a connection with the DynamoDB global datasource, you can either click on the `+Add new global datasource` button located on the query panel or navigate to the **[Global Datasources](/docs/data-sources/overview)** page through the ToolJet dashboard. +To establish a connection with the DynamoDB data source, you can either click on the `+Add new data source` button located on the query panel or navigate to the **[Data sources](/docs/data-sources/overview)** page through the ToolJet dashboard.
From f0beb0236969737a4edbccbb60515e135829f824 Mon Sep 17 00:00:00 2001 From: Mehmood Ul Hassan <35806708+mhassanrahi@users.noreply.github.com> Date: Thu, 12 Oct 2023 14:26:14 +0500 Subject: [PATCH 15/67] [docs]: updated ElasticSearch data source reference (#7618) --- docs/docs/data-sources/elasticsearch.md | 4 ++-- .../version-2.18.0/data-sources/elasticsearch.md | 4 ++-- .../version-2.19.0/data-sources/elasticsearch.md | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/docs/data-sources/elasticsearch.md b/docs/docs/data-sources/elasticsearch.md index 3f06fc7b3d..6c996df16e 100644 --- a/docs/docs/data-sources/elasticsearch.md +++ b/docs/docs/data-sources/elasticsearch.md @@ -9,7 +9,7 @@ ToolJet can connect to your Elasticsearch cluster to read and write data. ## Connection Please make sure the host/IP of the Elasticsearch cluster is accessible from your VPC if you have self-hosted ToolJet. If you are using ToolJet cloud, please **whitelist our IP**. -To add a new Elasticsearch database, click on the `+` button on data sources panel at the left-bottom corner of the app editor. Select Elasticsearch from the modal that pops up. +To establish a connection with the ElasticSearch data source, you can either click on the `+Add new data source` button located on the query panel or navigate to the **[Data Sources](/docs/data-sources/overview)** page through the ToolJet dashboard. ToolJet requires the following to connect to your Elasticsearch cluster: - **Host** @@ -24,7 +24,7 @@ ToolJet requires the following to connect to your Elasticsearch cluster:
-Elastic search datasource is also providing an option for connecting services with ssl certificates. +Elastic search data source is also providing an option for connecting services with ssl certificates. - You can either use CA / Client certificates option. Elastic ssl diff --git a/docs/versioned_docs/version-2.18.0/data-sources/elasticsearch.md b/docs/versioned_docs/version-2.18.0/data-sources/elasticsearch.md index 3f06fc7b3d..6c996df16e 100644 --- a/docs/versioned_docs/version-2.18.0/data-sources/elasticsearch.md +++ b/docs/versioned_docs/version-2.18.0/data-sources/elasticsearch.md @@ -9,7 +9,7 @@ ToolJet can connect to your Elasticsearch cluster to read and write data. ## Connection Please make sure the host/IP of the Elasticsearch cluster is accessible from your VPC if you have self-hosted ToolJet. If you are using ToolJet cloud, please **whitelist our IP**. -To add a new Elasticsearch database, click on the `+` button on data sources panel at the left-bottom corner of the app editor. Select Elasticsearch from the modal that pops up. +To establish a connection with the ElasticSearch data source, you can either click on the `+Add new data source` button located on the query panel or navigate to the **[Data Sources](/docs/data-sources/overview)** page through the ToolJet dashboard. ToolJet requires the following to connect to your Elasticsearch cluster: - **Host** @@ -24,7 +24,7 @@ ToolJet requires the following to connect to your Elasticsearch cluster:
-Elastic search datasource is also providing an option for connecting services with ssl certificates. +Elastic search data source is also providing an option for connecting services with ssl certificates. - You can either use CA / Client certificates option. Elastic ssl diff --git a/docs/versioned_docs/version-2.19.0/data-sources/elasticsearch.md b/docs/versioned_docs/version-2.19.0/data-sources/elasticsearch.md index 3f06fc7b3d..6c996df16e 100644 --- a/docs/versioned_docs/version-2.19.0/data-sources/elasticsearch.md +++ b/docs/versioned_docs/version-2.19.0/data-sources/elasticsearch.md @@ -9,7 +9,7 @@ ToolJet can connect to your Elasticsearch cluster to read and write data. ## Connection Please make sure the host/IP of the Elasticsearch cluster is accessible from your VPC if you have self-hosted ToolJet. If you are using ToolJet cloud, please **whitelist our IP**. -To add a new Elasticsearch database, click on the `+` button on data sources panel at the left-bottom corner of the app editor. Select Elasticsearch from the modal that pops up. +To establish a connection with the ElasticSearch data source, you can either click on the `+Add new data source` button located on the query panel or navigate to the **[Data Sources](/docs/data-sources/overview)** page through the ToolJet dashboard. ToolJet requires the following to connect to your Elasticsearch cluster: - **Host** @@ -24,7 +24,7 @@ ToolJet requires the following to connect to your Elasticsearch cluster:
-Elastic search datasource is also providing an option for connecting services with ssl certificates. +Elastic search data source is also providing an option for connecting services with ssl certificates. - You can either use CA / Client certificates option. Elastic ssl From 203571f9294c57a1238ab3cc592fd1f394348ec6 Mon Sep 17 00:00:00 2001 From: Uday Sagar <111575806+UdaySagar-Git@users.noreply.github.com> Date: Thu, 12 Oct 2023 14:56:33 +0530 Subject: [PATCH 16/67] Updated Google Cloud Storage data source reference (#7635) --- docs/docs/data-sources/gcs.md | 17 ++++++++--------- .../version-2.18.0/data-sources/gcs.md | 17 ++++++++--------- .../version-2.19.0/data-sources/gcs.md | 17 ++++++++--------- 3 files changed, 24 insertions(+), 27 deletions(-) diff --git a/docs/docs/data-sources/gcs.md b/docs/docs/data-sources/gcs.md index 6483a43408..03cad29535 100644 --- a/docs/docs/data-sources/gcs.md +++ b/docs/docs/data-sources/gcs.md @@ -9,19 +9,18 @@ ToolJet can connect to GCS buckets and perform various operation on them. ## Supported operations --**Read file** --**Upload file** --**List buckets** --**List files in a bucket** --**Signed url for download** --**Signed url for upload** +- **Read file** +- **Upload file** +- **List buckets** +- **List files in a bucket** +- **Signed url for download** +- **Signed url for upload** ## Connection -To add a new GCS source, click on the **Add or edit datasource** icon on the left sidebar of the app editor and click on `Add datasource` button. Select GCS from the modal that pops up. +To establish a connection with the Google Cloud Storage data source, you can either click on the `+Add new data source` button located on the query panel or navigate to the **[Data Sources](/docs/data-sources/overview)** page through the ToolJet dashboard. -ToolJet requires the **json private key** of a service account to be able to connect to GCS. -You can follow the [google documentation](https://cloud.google.com/docs/authentication/getting-started) to get started. +To connect to GCS, you need to provide the JSON Private Key of a service account that has access to the bucket. You can follow the [google documentation](https://cloud.google.com/docs/authentication/getting-started) to get started. gcs connection diff --git a/docs/versioned_docs/version-2.18.0/data-sources/gcs.md b/docs/versioned_docs/version-2.18.0/data-sources/gcs.md index 6483a43408..03cad29535 100644 --- a/docs/versioned_docs/version-2.18.0/data-sources/gcs.md +++ b/docs/versioned_docs/version-2.18.0/data-sources/gcs.md @@ -9,19 +9,18 @@ ToolJet can connect to GCS buckets and perform various operation on them. ## Supported operations --**Read file** --**Upload file** --**List buckets** --**List files in a bucket** --**Signed url for download** --**Signed url for upload** +- **Read file** +- **Upload file** +- **List buckets** +- **List files in a bucket** +- **Signed url for download** +- **Signed url for upload** ## Connection -To add a new GCS source, click on the **Add or edit datasource** icon on the left sidebar of the app editor and click on `Add datasource` button. Select GCS from the modal that pops up. +To establish a connection with the Google Cloud Storage data source, you can either click on the `+Add new data source` button located on the query panel or navigate to the **[Data Sources](/docs/data-sources/overview)** page through the ToolJet dashboard. -ToolJet requires the **json private key** of a service account to be able to connect to GCS. -You can follow the [google documentation](https://cloud.google.com/docs/authentication/getting-started) to get started. +To connect to GCS, you need to provide the JSON Private Key of a service account that has access to the bucket. You can follow the [google documentation](https://cloud.google.com/docs/authentication/getting-started) to get started. gcs connection diff --git a/docs/versioned_docs/version-2.19.0/data-sources/gcs.md b/docs/versioned_docs/version-2.19.0/data-sources/gcs.md index 6483a43408..03cad29535 100644 --- a/docs/versioned_docs/version-2.19.0/data-sources/gcs.md +++ b/docs/versioned_docs/version-2.19.0/data-sources/gcs.md @@ -9,19 +9,18 @@ ToolJet can connect to GCS buckets and perform various operation on them. ## Supported operations --**Read file** --**Upload file** --**List buckets** --**List files in a bucket** --**Signed url for download** --**Signed url for upload** +- **Read file** +- **Upload file** +- **List buckets** +- **List files in a bucket** +- **Signed url for download** +- **Signed url for upload** ## Connection -To add a new GCS source, click on the **Add or edit datasource** icon on the left sidebar of the app editor and click on `Add datasource` button. Select GCS from the modal that pops up. +To establish a connection with the Google Cloud Storage data source, you can either click on the `+Add new data source` button located on the query panel or navigate to the **[Data Sources](/docs/data-sources/overview)** page through the ToolJet dashboard. -ToolJet requires the **json private key** of a service account to be able to connect to GCS. -You can follow the [google documentation](https://cloud.google.com/docs/authentication/getting-started) to get started. +To connect to GCS, you need to provide the JSON Private Key of a service account that has access to the bucket. You can follow the [google documentation](https://cloud.google.com/docs/authentication/getting-started) to get started. gcs connection From cc52805c3d2f805a69355e4abbe3c8c8ac0ca18e Mon Sep 17 00:00:00 2001 From: Nishit Mehta <80708599+nishitxmehta@users.noreply.github.com> Date: Thu, 12 Oct 2023 14:57:44 +0530 Subject: [PATCH 17/67] removed 'NOTE' section and updated 'Connection' section (#7686) --- docs/docs/data-sources/mailgun.md | 6 +----- docs/versioned_docs/version-2.18.0/data-sources/mailgun.md | 6 +----- docs/versioned_docs/version-2.19.0/data-sources/mailgun.md | 6 +----- 3 files changed, 3 insertions(+), 15 deletions(-) diff --git a/docs/docs/data-sources/mailgun.md b/docs/docs/data-sources/mailgun.md index 6b4c71ca78..09907b82d1 100644 --- a/docs/docs/data-sources/mailgun.md +++ b/docs/docs/data-sources/mailgun.md @@ -15,7 +15,7 @@ The Mailgun API Datasource supports for interaction with the mail endpoint of th ## Connection -To add a new Mailgun API datasource, click the **Datasource manager** icon on the left-sidebar of the app builder and click on the `Add datasource` button, then select Mailgun API from the modal that pops up. +To establish a connection with the MailGun data source, click on the `+Add new data source` button located on the query panel or navigate to the [Data Sources](https://docs.tooljet.com/docs/data-sources/overview) page from the ToolJet dashboard. Enter your **Mailgun API key** in the "API key" field. @@ -58,7 +58,3 @@ For example: `admin@tooljet.io` **Send multiple individual emails to multiple recipients** - set Multiple recipients field to `{{true}}` and the `Send mail to` field will be split into multiple emails and send to each recipient. ::: - -:::note -NOTE: Query should be saved before running. -::: diff --git a/docs/versioned_docs/version-2.18.0/data-sources/mailgun.md b/docs/versioned_docs/version-2.18.0/data-sources/mailgun.md index 6b4c71ca78..09907b82d1 100644 --- a/docs/versioned_docs/version-2.18.0/data-sources/mailgun.md +++ b/docs/versioned_docs/version-2.18.0/data-sources/mailgun.md @@ -15,7 +15,7 @@ The Mailgun API Datasource supports for interaction with the mail endpoint of th ## Connection -To add a new Mailgun API datasource, click the **Datasource manager** icon on the left-sidebar of the app builder and click on the `Add datasource` button, then select Mailgun API from the modal that pops up. +To establish a connection with the MailGun data source, click on the `+Add new data source` button located on the query panel or navigate to the [Data Sources](https://docs.tooljet.com/docs/data-sources/overview) page from the ToolJet dashboard. Enter your **Mailgun API key** in the "API key" field. @@ -58,7 +58,3 @@ For example: `admin@tooljet.io` **Send multiple individual emails to multiple recipients** - set Multiple recipients field to `{{true}}` and the `Send mail to` field will be split into multiple emails and send to each recipient. ::: - -:::note -NOTE: Query should be saved before running. -::: diff --git a/docs/versioned_docs/version-2.19.0/data-sources/mailgun.md b/docs/versioned_docs/version-2.19.0/data-sources/mailgun.md index 6b4c71ca78..09907b82d1 100644 --- a/docs/versioned_docs/version-2.19.0/data-sources/mailgun.md +++ b/docs/versioned_docs/version-2.19.0/data-sources/mailgun.md @@ -15,7 +15,7 @@ The Mailgun API Datasource supports for interaction with the mail endpoint of th ## Connection -To add a new Mailgun API datasource, click the **Datasource manager** icon on the left-sidebar of the app builder and click on the `Add datasource` button, then select Mailgun API from the modal that pops up. +To establish a connection with the MailGun data source, click on the `+Add new data source` button located on the query panel or navigate to the [Data Sources](https://docs.tooljet.com/docs/data-sources/overview) page from the ToolJet dashboard. Enter your **Mailgun API key** in the "API key" field. @@ -58,7 +58,3 @@ For example: `admin@tooljet.io` **Send multiple individual emails to multiple recipients** - set Multiple recipients field to `{{true}}` and the `Send mail to` field will be split into multiple emails and send to each recipient. ::: - -:::note -NOTE: Query should be saved before running. -::: From 4ddb59193d334b9208d96981e2962edc4720fd78 Mon Sep 17 00:00:00 2001 From: Jatin <97869761+jatingodnani@users.noreply.github.com> Date: Thu, 12 Oct 2023 14:57:55 +0530 Subject: [PATCH 18/67] Updated minio data source reference docs (#7684) * Update doc/docs/datasource/minio.md * Update docs/versioned_docs/version-2.18.0/minio.md * Update docs/versioned_docs/version-2.19.0/minio.md --- docs/docs/data-sources/minio.md | 4 ++-- docs/versioned_docs/version-2.18.0/data-sources/minio.md | 4 ++-- docs/versioned_docs/version-2.19.0/data-sources/minio.md | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/docs/data-sources/minio.md b/docs/docs/data-sources/minio.md index 3f19ffc32d..0ac53fd17d 100644 --- a/docs/docs/data-sources/minio.md +++ b/docs/docs/data-sources/minio.md @@ -20,7 +20,7 @@ ToolJet can connect to minio and perform various operation on them. ## Connection -To add a new minio source, click on the **Add or edit datasource** icon on the left sidebar of the app editor and click on `Add datasource` button. Select Minio from the modal that pops up. +To establish a connection with the Minio data source, click on the `+Add new data source` button located on the query panel or navigate to the [Data Sources](https://docs.tooljet.com/docs/data-sources/overview) page from the ToolJet dashboard. ToolJet requires the following to connect to your DynamoDB: @@ -44,7 +44,7 @@ Click on `+` button of the **query manager** at the bottom panel of the editor a miniIo query Click on the **run** button to run the query. -**NOTE**: Query should be saved before running. + :::tip Query results can be transformed using transformations. Read our transformations documentation to see how: [link](/docs/tutorial/transformations) diff --git a/docs/versioned_docs/version-2.18.0/data-sources/minio.md b/docs/versioned_docs/version-2.18.0/data-sources/minio.md index 3f19ffc32d..0ac53fd17d 100644 --- a/docs/versioned_docs/version-2.18.0/data-sources/minio.md +++ b/docs/versioned_docs/version-2.18.0/data-sources/minio.md @@ -20,7 +20,7 @@ ToolJet can connect to minio and perform various operation on them. ## Connection -To add a new minio source, click on the **Add or edit datasource** icon on the left sidebar of the app editor and click on `Add datasource` button. Select Minio from the modal that pops up. +To establish a connection with the Minio data source, click on the `+Add new data source` button located on the query panel or navigate to the [Data Sources](https://docs.tooljet.com/docs/data-sources/overview) page from the ToolJet dashboard. ToolJet requires the following to connect to your DynamoDB: @@ -44,7 +44,7 @@ Click on `+` button of the **query manager** at the bottom panel of the editor a miniIo query Click on the **run** button to run the query. -**NOTE**: Query should be saved before running. + :::tip Query results can be transformed using transformations. Read our transformations documentation to see how: [link](/docs/tutorial/transformations) diff --git a/docs/versioned_docs/version-2.19.0/data-sources/minio.md b/docs/versioned_docs/version-2.19.0/data-sources/minio.md index 3f19ffc32d..0ac53fd17d 100644 --- a/docs/versioned_docs/version-2.19.0/data-sources/minio.md +++ b/docs/versioned_docs/version-2.19.0/data-sources/minio.md @@ -20,7 +20,7 @@ ToolJet can connect to minio and perform various operation on them. ## Connection -To add a new minio source, click on the **Add or edit datasource** icon on the left sidebar of the app editor and click on `Add datasource` button. Select Minio from the modal that pops up. +To establish a connection with the Minio data source, click on the `+Add new data source` button located on the query panel or navigate to the [Data Sources](https://docs.tooljet.com/docs/data-sources/overview) page from the ToolJet dashboard. ToolJet requires the following to connect to your DynamoDB: @@ -44,7 +44,7 @@ Click on `+` button of the **query manager** at the bottom panel of the editor a miniIo query Click on the **run** button to run the query. -**NOTE**: Query should be saved before running. + :::tip Query results can be transformed using transformations. Read our transformations documentation to see how: [link](/docs/tutorial/transformations) From 9d2e0156f432a3e75b71c65bf448b17fc8bb2c68 Mon Sep 17 00:00:00 2001 From: Adebisi Ahmed Date: Thu, 12 Oct 2023 10:28:18 +0100 Subject: [PATCH 19/67] fix: Update the frontmatter of HTML and Rich editor components. (#7644) --- docs/docs/widgets/html.md | 4 ++-- docs/docs/widgets/rich-text-editor.md | 4 ++-- docs/versioned_docs/version-2.18.0/widgets/html.md | 4 ++-- .../versioned_docs/version-2.18.0/widgets/rich-text-editor.md | 4 ++-- docs/versioned_docs/version-2.19.0/widgets/html.md | 4 ++-- .../versioned_docs/version-2.19.0/widgets/rich-text-editor.md | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/docs/widgets/html.md b/docs/docs/widgets/html.md index 41908bef43..cc1e06c574 100644 --- a/docs/docs/widgets/html.md +++ b/docs/docs/widgets/html.md @@ -1,9 +1,9 @@ --- id: html -title: HTML +title: HTML Viewer --- -# HTML +# HTML Viewer HTML widget can be used to create your own HTML-CSS layout. diff --git a/docs/docs/widgets/rich-text-editor.md b/docs/docs/widgets/rich-text-editor.md index 7c5ba592d7..9d99fb99e3 100644 --- a/docs/docs/widgets/rich-text-editor.md +++ b/docs/docs/widgets/rich-text-editor.md @@ -1,8 +1,8 @@ --- id: rich-text-editor -title: Rich Text Editor +title: Text Editor --- -# Rich Text Editor +# Text Editor Rich Text Editor can be used to enter and edit the text in HTML format. It should be preferred for blog posts, forum posts or notes sections. The text is to be used as the label for the radio button. diff --git a/docs/versioned_docs/version-2.18.0/widgets/html.md b/docs/versioned_docs/version-2.18.0/widgets/html.md index 41908bef43..cc1e06c574 100644 --- a/docs/versioned_docs/version-2.18.0/widgets/html.md +++ b/docs/versioned_docs/version-2.18.0/widgets/html.md @@ -1,9 +1,9 @@ --- id: html -title: HTML +title: HTML Viewer --- -# HTML +# HTML Viewer HTML widget can be used to create your own HTML-CSS layout. diff --git a/docs/versioned_docs/version-2.18.0/widgets/rich-text-editor.md b/docs/versioned_docs/version-2.18.0/widgets/rich-text-editor.md index 7c5ba592d7..9d99fb99e3 100644 --- a/docs/versioned_docs/version-2.18.0/widgets/rich-text-editor.md +++ b/docs/versioned_docs/version-2.18.0/widgets/rich-text-editor.md @@ -1,8 +1,8 @@ --- id: rich-text-editor -title: Rich Text Editor +title: Text Editor --- -# Rich Text Editor +# Text Editor Rich Text Editor can be used to enter and edit the text in HTML format. It should be preferred for blog posts, forum posts or notes sections. The text is to be used as the label for the radio button. diff --git a/docs/versioned_docs/version-2.19.0/widgets/html.md b/docs/versioned_docs/version-2.19.0/widgets/html.md index 41908bef43..cc1e06c574 100644 --- a/docs/versioned_docs/version-2.19.0/widgets/html.md +++ b/docs/versioned_docs/version-2.19.0/widgets/html.md @@ -1,9 +1,9 @@ --- id: html -title: HTML +title: HTML Viewer --- -# HTML +# HTML Viewer HTML widget can be used to create your own HTML-CSS layout. diff --git a/docs/versioned_docs/version-2.19.0/widgets/rich-text-editor.md b/docs/versioned_docs/version-2.19.0/widgets/rich-text-editor.md index 7c5ba592d7..9d99fb99e3 100644 --- a/docs/versioned_docs/version-2.19.0/widgets/rich-text-editor.md +++ b/docs/versioned_docs/version-2.19.0/widgets/rich-text-editor.md @@ -1,8 +1,8 @@ --- id: rich-text-editor -title: Rich Text Editor +title: Text Editor --- -# Rich Text Editor +# Text Editor Rich Text Editor can be used to enter and edit the text in HTML format. It should be preferred for blog posts, forum posts or notes sections. The text is to be used as the label for the radio button. From fa1d9f6918fcee0c9518ba1287d1cf9169c6a5f3 Mon Sep 17 00:00:00 2001 From: Atulya Minz Date: Thu, 12 Oct 2023 15:02:57 +0530 Subject: [PATCH 20/67] Updates MongoDB data source reference (#7682) --- docs/docs/data-sources/mongodb.md | 47 +++++++++++++++++-- .../version-2.18.0/data-sources/mongodb.md | 47 +++++++++++++++++-- .../version-2.19.0/data-sources/mongodb.md | 47 +++++++++++++++++-- 3 files changed, 126 insertions(+), 15 deletions(-) diff --git a/docs/docs/data-sources/mongodb.md b/docs/docs/data-sources/mongodb.md index 0ae21b519a..8a4dea7b16 100644 --- a/docs/docs/data-sources/mongodb.md +++ b/docs/docs/data-sources/mongodb.md @@ -11,7 +11,7 @@ ToolJet can connect to MongoDB to read and write data. Please make sure the host/ip of the database is accessible from your VPC if you have self-hosted ToolJet. If you are using ToolJet cloud, please whitelist our IP. -To add a new MongoDB, click on the `+` button on data sources panel at the left-bottom corner of the app editor. Select MongoDB from the modal that pops up. +To establish a connection with the MongoDB data source, click on the `+Add new data source` button located on the query panel or navigate to the [Data Sources](https://docs.tooljet.com/docs/data-sources/overview) page from the ToolJet dashboard. ToolJet requires the following to connect to your MongoDB. @@ -32,15 +32,14 @@ Click on `+` button of the query manager at the bottom panel of the editor and s ToolJet - Mongo query - - -Click on the 'run' button to run the query. NOTE: Query should be saved before running. +Click on the 'run' button to run the query. :::tip Query results can be transformed using transformations. Read our transformations documentation to see how: [link](/docs/tutorial/transformations) ::: ### Supported operations + - [List Collections](#list-collections) - [Find One](#find-one) - [Find Many](#find-many) @@ -59,51 +58,89 @@ Query results can be transformed using transformations. Read our transformations - [Delete One](#delete-one) - [Delete Many](#delete-many) - [Bulk Operations](#bulk-operations) + #### List Collections + Returns list of collections + #### Fine One + Return a document which satisfy the given filter and options. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/findOne) + #### Fine Many + Return list of documents which satisfy the given filter and options. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/find/) + #### Total Count + Returns an estimation of the number of documents in the collection based on collection metadata. [Reference](https://mongodb.github.io/node-mongodb-native/4.0/classes/collection.html#estimateddocumentcount) + #### Count + Returns the number of documents based on the filter. [Reference](https://mongodb.github.io/node-mongodb-native/4.0/classes/collection.html#countdocuments) + #### Distinct + Retrieve a list of distinct values for a field based on the filter. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/distinct/) + #### Insert One + Insert a document. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/insertOne/) + #### Insert Many + Insert list of documents. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/insertMany/) + #### Update One + Update a document based on the filter. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/updateOne/) + #### Update Many + Update many documents based on the filter. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/updateMany/) + #### Replace One + Replace a document based on filter. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/replaceOne/) + #### Find One and Update + If your application requires the document after updating, use this instead of `Update One`. [Reference](https://mongodb.github.io/node-mongodb-native/4.0/classes/collection.html#findoneandupdate) + #### Find One and Replace + If your application requires the document after updating, use this instead of `Replace One`. [Reference](https://mongodb.github.io/node-mongodb-native/4.0/classes/collection.html#findoneandreplace) + #### Find One and Delete + If your application requires the document after deleting, use this instead of `Delete One`. [Reference](https://mongodb.github.io/node-mongodb-native/4.0/classes/collection.html#findoneanddelete) + #### Aggregate + Aggregation operations are expressions you can use to produce reduced and summarized results. [Reference](https://docs.mongodb.com/drivers/node/v4.0/fundamentals/aggregation/) + #### Delete One + Delete a record based on the filter. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/deleteOne/) + #### Delete Many + Delete many records based on the filter. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/deleteMany/) + #### Bulk Operations + Perform bulk operations. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/bulkWrite/) ### Dynamic Quries + ```javascript { amount: { $lt: '{{ components.textinput1.value }}' }} -// Dates +// Dates // supported: Extended JSON syntax { createdAt: { $date: '{{ new Date('01/10/2020') }}'} } // not supported: MongoDB classic syntax { createdAt: new Date('01/10/2020') } ``` + Reference on [mongodb extended JSON](https://docs.mongodb.com/manual/reference/mongodb-extended-json/) supported data types diff --git a/docs/versioned_docs/version-2.18.0/data-sources/mongodb.md b/docs/versioned_docs/version-2.18.0/data-sources/mongodb.md index 0ae21b519a..8a4dea7b16 100644 --- a/docs/versioned_docs/version-2.18.0/data-sources/mongodb.md +++ b/docs/versioned_docs/version-2.18.0/data-sources/mongodb.md @@ -11,7 +11,7 @@ ToolJet can connect to MongoDB to read and write data. Please make sure the host/ip of the database is accessible from your VPC if you have self-hosted ToolJet. If you are using ToolJet cloud, please whitelist our IP. -To add a new MongoDB, click on the `+` button on data sources panel at the left-bottom corner of the app editor. Select MongoDB from the modal that pops up. +To establish a connection with the MongoDB data source, click on the `+Add new data source` button located on the query panel or navigate to the [Data Sources](https://docs.tooljet.com/docs/data-sources/overview) page from the ToolJet dashboard. ToolJet requires the following to connect to your MongoDB. @@ -32,15 +32,14 @@ Click on `+` button of the query manager at the bottom panel of the editor and s ToolJet - Mongo query - - -Click on the 'run' button to run the query. NOTE: Query should be saved before running. +Click on the 'run' button to run the query. :::tip Query results can be transformed using transformations. Read our transformations documentation to see how: [link](/docs/tutorial/transformations) ::: ### Supported operations + - [List Collections](#list-collections) - [Find One](#find-one) - [Find Many](#find-many) @@ -59,51 +58,89 @@ Query results can be transformed using transformations. Read our transformations - [Delete One](#delete-one) - [Delete Many](#delete-many) - [Bulk Operations](#bulk-operations) + #### List Collections + Returns list of collections + #### Fine One + Return a document which satisfy the given filter and options. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/findOne) + #### Fine Many + Return list of documents which satisfy the given filter and options. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/find/) + #### Total Count + Returns an estimation of the number of documents in the collection based on collection metadata. [Reference](https://mongodb.github.io/node-mongodb-native/4.0/classes/collection.html#estimateddocumentcount) + #### Count + Returns the number of documents based on the filter. [Reference](https://mongodb.github.io/node-mongodb-native/4.0/classes/collection.html#countdocuments) + #### Distinct + Retrieve a list of distinct values for a field based on the filter. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/distinct/) + #### Insert One + Insert a document. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/insertOne/) + #### Insert Many + Insert list of documents. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/insertMany/) + #### Update One + Update a document based on the filter. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/updateOne/) + #### Update Many + Update many documents based on the filter. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/updateMany/) + #### Replace One + Replace a document based on filter. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/replaceOne/) + #### Find One and Update + If your application requires the document after updating, use this instead of `Update One`. [Reference](https://mongodb.github.io/node-mongodb-native/4.0/classes/collection.html#findoneandupdate) + #### Find One and Replace + If your application requires the document after updating, use this instead of `Replace One`. [Reference](https://mongodb.github.io/node-mongodb-native/4.0/classes/collection.html#findoneandreplace) + #### Find One and Delete + If your application requires the document after deleting, use this instead of `Delete One`. [Reference](https://mongodb.github.io/node-mongodb-native/4.0/classes/collection.html#findoneanddelete) + #### Aggregate + Aggregation operations are expressions you can use to produce reduced and summarized results. [Reference](https://docs.mongodb.com/drivers/node/v4.0/fundamentals/aggregation/) + #### Delete One + Delete a record based on the filter. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/deleteOne/) + #### Delete Many + Delete many records based on the filter. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/deleteMany/) + #### Bulk Operations + Perform bulk operations. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/bulkWrite/) ### Dynamic Quries + ```javascript { amount: { $lt: '{{ components.textinput1.value }}' }} -// Dates +// Dates // supported: Extended JSON syntax { createdAt: { $date: '{{ new Date('01/10/2020') }}'} } // not supported: MongoDB classic syntax { createdAt: new Date('01/10/2020') } ``` + Reference on [mongodb extended JSON](https://docs.mongodb.com/manual/reference/mongodb-extended-json/) supported data types diff --git a/docs/versioned_docs/version-2.19.0/data-sources/mongodb.md b/docs/versioned_docs/version-2.19.0/data-sources/mongodb.md index 0ae21b519a..8a4dea7b16 100644 --- a/docs/versioned_docs/version-2.19.0/data-sources/mongodb.md +++ b/docs/versioned_docs/version-2.19.0/data-sources/mongodb.md @@ -11,7 +11,7 @@ ToolJet can connect to MongoDB to read and write data. Please make sure the host/ip of the database is accessible from your VPC if you have self-hosted ToolJet. If you are using ToolJet cloud, please whitelist our IP. -To add a new MongoDB, click on the `+` button on data sources panel at the left-bottom corner of the app editor. Select MongoDB from the modal that pops up. +To establish a connection with the MongoDB data source, click on the `+Add new data source` button located on the query panel or navigate to the [Data Sources](https://docs.tooljet.com/docs/data-sources/overview) page from the ToolJet dashboard. ToolJet requires the following to connect to your MongoDB. @@ -32,15 +32,14 @@ Click on `+` button of the query manager at the bottom panel of the editor and s ToolJet - Mongo query - - -Click on the 'run' button to run the query. NOTE: Query should be saved before running. +Click on the 'run' button to run the query. :::tip Query results can be transformed using transformations. Read our transformations documentation to see how: [link](/docs/tutorial/transformations) ::: ### Supported operations + - [List Collections](#list-collections) - [Find One](#find-one) - [Find Many](#find-many) @@ -59,51 +58,89 @@ Query results can be transformed using transformations. Read our transformations - [Delete One](#delete-one) - [Delete Many](#delete-many) - [Bulk Operations](#bulk-operations) + #### List Collections + Returns list of collections + #### Fine One + Return a document which satisfy the given filter and options. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/findOne) + #### Fine Many + Return list of documents which satisfy the given filter and options. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/find/) + #### Total Count + Returns an estimation of the number of documents in the collection based on collection metadata. [Reference](https://mongodb.github.io/node-mongodb-native/4.0/classes/collection.html#estimateddocumentcount) + #### Count + Returns the number of documents based on the filter. [Reference](https://mongodb.github.io/node-mongodb-native/4.0/classes/collection.html#countdocuments) + #### Distinct + Retrieve a list of distinct values for a field based on the filter. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/distinct/) + #### Insert One + Insert a document. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/insertOne/) + #### Insert Many + Insert list of documents. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/insertMany/) + #### Update One + Update a document based on the filter. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/updateOne/) + #### Update Many + Update many documents based on the filter. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/updateMany/) + #### Replace One + Replace a document based on filter. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/replaceOne/) + #### Find One and Update + If your application requires the document after updating, use this instead of `Update One`. [Reference](https://mongodb.github.io/node-mongodb-native/4.0/classes/collection.html#findoneandupdate) + #### Find One and Replace + If your application requires the document after updating, use this instead of `Replace One`. [Reference](https://mongodb.github.io/node-mongodb-native/4.0/classes/collection.html#findoneandreplace) + #### Find One and Delete + If your application requires the document after deleting, use this instead of `Delete One`. [Reference](https://mongodb.github.io/node-mongodb-native/4.0/classes/collection.html#findoneanddelete) + #### Aggregate + Aggregation operations are expressions you can use to produce reduced and summarized results. [Reference](https://docs.mongodb.com/drivers/node/v4.0/fundamentals/aggregation/) + #### Delete One + Delete a record based on the filter. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/deleteOne/) + #### Delete Many + Delete many records based on the filter. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/deleteMany/) + #### Bulk Operations + Perform bulk operations. [Reference](https://docs.mongodb.com/drivers/node/v4.0/usage-examples/bulkWrite/) ### Dynamic Quries + ```javascript { amount: { $lt: '{{ components.textinput1.value }}' }} -// Dates +// Dates // supported: Extended JSON syntax { createdAt: { $date: '{{ new Date('01/10/2020') }}'} } // not supported: MongoDB classic syntax { createdAt: new Date('01/10/2020') } ``` + Reference on [mongodb extended JSON](https://docs.mongodb.com/manual/reference/mongodb-extended-json/) supported data types From 00e40264ec1022ae8dd970e5de9a484562d47704 Mon Sep 17 00:00:00 2001 From: charandeepsinghb <110289710+charandeepsinghb@users.noreply.github.com> Date: Thu, 12 Oct 2023 15:04:48 +0530 Subject: [PATCH 21/67] Added changes in MS SQL Server data source ref (#7683) * Removed NOTE * Updated reference to the MS SQL Server --- docs/docs/data-sources/mssql.md | 4 ++-- docs/versioned_docs/version-2.18.0/data-sources/mssql.md | 4 ++-- docs/versioned_docs/version-2.19.0/data-sources/mssql.md | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/docs/data-sources/mssql.md b/docs/docs/data-sources/mssql.md index a8aa169ce5..0f9fa32b2f 100644 --- a/docs/docs/data-sources/mssql.md +++ b/docs/docs/data-sources/mssql.md @@ -12,7 +12,7 @@ ToolJet can connect to MS SQL Server & Azure SQL databases to read and write dat Please make sure the host/ip of the database is accessible from your VPC if you have self-hosted ToolJet. If you are using ToolJet cloud, please whitelist our IP. -To add new MS SQL Server / Azure SQL database, click on the '+' button on data sources panel at the left-bottom corner of the app editor. Select `SQL Server` from the modal that pops up. +To establish a connection with the MS SQL Server data source, click on the `+Add new data source` button located on the query panel or navigate to the [Data Sources](https://docs.tooljet.com/docs/data-sources/overview) page from the ToolJet dashboard. ToolJet requires the following to connect to your PostgreSQL database. @@ -32,7 +32,7 @@ Click on 'Test connection' button to verify if the credentials are correct and t ## Querying SQL Server / Azure SQL databases Click on '+' button of the query manager at the bottom panel of the editor and select the database added in the previous step as the data source. -Click on the 'run' button to run the query. NOTE: Query should be saved before running. +Click on the 'run' button to run the query. ToolJet - Redis connection diff --git a/docs/versioned_docs/version-2.18.0/data-sources/mssql.md b/docs/versioned_docs/version-2.18.0/data-sources/mssql.md index a8aa169ce5..0f9fa32b2f 100644 --- a/docs/versioned_docs/version-2.18.0/data-sources/mssql.md +++ b/docs/versioned_docs/version-2.18.0/data-sources/mssql.md @@ -12,7 +12,7 @@ ToolJet can connect to MS SQL Server & Azure SQL databases to read and write dat Please make sure the host/ip of the database is accessible from your VPC if you have self-hosted ToolJet. If you are using ToolJet cloud, please whitelist our IP. -To add new MS SQL Server / Azure SQL database, click on the '+' button on data sources panel at the left-bottom corner of the app editor. Select `SQL Server` from the modal that pops up. +To establish a connection with the MS SQL Server data source, click on the `+Add new data source` button located on the query panel or navigate to the [Data Sources](https://docs.tooljet.com/docs/data-sources/overview) page from the ToolJet dashboard. ToolJet requires the following to connect to your PostgreSQL database. @@ -32,7 +32,7 @@ Click on 'Test connection' button to verify if the credentials are correct and t ## Querying SQL Server / Azure SQL databases Click on '+' button of the query manager at the bottom panel of the editor and select the database added in the previous step as the data source. -Click on the 'run' button to run the query. NOTE: Query should be saved before running. +Click on the 'run' button to run the query. ToolJet - Redis connection diff --git a/docs/versioned_docs/version-2.19.0/data-sources/mssql.md b/docs/versioned_docs/version-2.19.0/data-sources/mssql.md index a8aa169ce5..0f9fa32b2f 100644 --- a/docs/versioned_docs/version-2.19.0/data-sources/mssql.md +++ b/docs/versioned_docs/version-2.19.0/data-sources/mssql.md @@ -12,7 +12,7 @@ ToolJet can connect to MS SQL Server & Azure SQL databases to read and write dat Please make sure the host/ip of the database is accessible from your VPC if you have self-hosted ToolJet. If you are using ToolJet cloud, please whitelist our IP. -To add new MS SQL Server / Azure SQL database, click on the '+' button on data sources panel at the left-bottom corner of the app editor. Select `SQL Server` from the modal that pops up. +To establish a connection with the MS SQL Server data source, click on the `+Add new data source` button located on the query panel or navigate to the [Data Sources](https://docs.tooljet.com/docs/data-sources/overview) page from the ToolJet dashboard. ToolJet requires the following to connect to your PostgreSQL database. @@ -32,7 +32,7 @@ Click on 'Test connection' button to verify if the credentials are correct and t ## Querying SQL Server / Azure SQL databases Click on '+' button of the query manager at the bottom panel of the editor and select the database added in the previous step as the data source. -Click on the 'run' button to run the query. NOTE: Query should be saved before running. +Click on the 'run' button to run the query. ToolJet - Redis connection From ea74ad4d00684efd2ee3e4510b7a98791a1aa3f2 Mon Sep 17 00:00:00 2001 From: Sakshi Jain Date: Thu, 12 Oct 2023 15:04:57 +0530 Subject: [PATCH 22/67] updated notion datasource reference (#7679) --- docs/docs/data-sources/notion.md | 52 ++++++++++++++----- .../version-2.18.0/data-sources/notion.md | 52 ++++++++++++++----- .../version-2.19.0/data-sources/notion.md | 52 ++++++++++++++----- 3 files changed, 117 insertions(+), 39 deletions(-) diff --git a/docs/docs/data-sources/notion.md b/docs/docs/data-sources/notion.md index 88000f3aa6..a224116642 100644 --- a/docs/docs/data-sources/notion.md +++ b/docs/docs/data-sources/notion.md @@ -2,11 +2,15 @@ id: notion title: Notion --- + # Notion ToolJet can connect to a Notion workspace to do operations on notion pages, databases and blocks. + ## Connection +To establish a connection with the Notion data source, click on the `+Add new data source` button located on the query panel or navigate to the [Data Sources](https://docs.tooljet.com/docs/data-sources/overview) page from the ToolJet dashboard. + For integrating Notion with ToolJet we will need the API token. The API token can be generated from your Notion workspace settings. Read the official Notion docs for [Creating an internal integration with notion API](https://www.notion.so/help/create-integrations-with-the-notion-api).
@@ -18,37 +22,33 @@ For integrating Notion with ToolJet we will need the API token. The API token ca ## Querying Notion Notion API provides support for: + - **[Database](#database)** - **[Page](#page)** - **[Block](#blocks)** - **[User](#user)** - notion querying - :::tip Before querying Notion, you must share the database with your integration. Click the share button in your database view, find your integration name select it. - notion share - ::: ### Database On database resource you can perform the following operations: + - **[Retrieve a database](#1-retrieve-a-database)** - **[Query a database](#2-query-a-database)** - **[Create a database](#3-create-a-database)** - **[Update a database](#4-update-a-database)** - notion db - #### 1. Retrieve a database This operations retrieves a Database object using the ID specified. @@ -57,13 +57,12 @@ This operations retrieves a Database object using the ID specified. - **Database ID**: You'll find the Database ID in the url. Suppose this is the example url: `https://www.notion.so/workspace/XXX?v=YYY&p=ZZZ` then `XXX` is the database ID, `YYY` is the view ID and `ZZZ` is the page ID. - notion db retreieve - #### 2. Query a database This operation gets a list of **Pages** contained in the database, filtered and ordered according to the filter conditions and sort criteria provided in the query. + ##### Required parameters: - **Database ID** : You'll find the Database ID in the url. Suppose this is the example url: `https://www.notion.so/workspace/XXX?v=YYY&p=ZZZ` then `XXX` is the database ID, `YYY` is the view ID and `ZZZ` is the page ID. @@ -98,6 +97,7 @@ This operation creates a database as a subpage in the specified parent page, wit This operation updates an existing database as specified by the parameters. ##### Required parameters: + - **Database ID** ##### Optional parameters: @@ -112,24 +112,29 @@ This operation updates an existing database as specified by the parameters. ### Page On page resource you can perform the following operations: + - **[Retrieve a page](#1-retrieve-a-page)** - **[Create a page](#2-create-a-page)** - **[Update a page](#3-update-a-page)** - **[Retrieve a page property](#4-retrieve-a-page-property-item)** - **[Archive a page](#5-archive-delete-a-page)** - notion page - #### 1. Retrieve a page + This operation retrieves a **Page** object using the ID specified. + ##### Required parameters: + - **Page ID** #### 2. Create a page + This operation creates a new page in the specified database or as a child of an existing page. If the parent is a database, the property values of the new page in the properties parameter must conform to the parent database's property schema. If the parent is a page, the only valid property is title. + ##### Parameters: + - **Page ID** - **Properties** : Property values of this page - **Icon type** : Currently notion api accepts two icon options, emoji, external URL @@ -138,8 +143,11 @@ This operation creates a new page in the specified database or as a child of an - **Cover value** : Value of selected cover type #### 3. Update a page + This operation updates page property values for the specified page. Properties that are not set via the properties parameter will remain unchanged. + ##### Parameters: + - **Page ID** - **Parent type**: A database parent or page parent - **Properties** : Property values of this page @@ -150,77 +158,94 @@ This operation updates page property values for the specified page. Properties t - **Cover value** : Value of selected cover type #### 4. Retrieve a page property item + This operation retrieves a property_item object for a given page ID and property ID. Depending on the property type, the object returned will either be a value or a paginated list of property item values. See Property item objects for specifics. + ##### Parameters: + - **Page ID** - **Property ID** - **Limit** - **Start cursor** #### 5. Archive (delete) a page + ##### Required parameters: + - **Page ID** - **Archive**: Dropdown for archive and un archive the page ### Blocks + The following operations can be performed on the block resource: + - **[Retrieve a block](#1-retrieve-a-block)** - **[Append block children](#2-append-new-block-children)** - **[Retrieve block children](#3-retrieve-block-children)** - **[Update a block](#4-update-a-block)** - **[Delete a block](#5-delete-a-block)** - notion block - :::info To get the id for blocks, simply click on the menu icon for the block and click "Copy link". Afterwards, paste the link in the browser and it should look like this: `https://www.notion.so/Creating-Page-Sample-ee18b8779ae54f358b09221d6665ee15#7fcb3940a1264aadb2ad4ee9ffe11b0e` the string after **#** is the block id i.e. `7fcb3940a1264aadb2ad4ee9ffe11b0e`. ::: #### 1. Retrieve a block + This operation retrieves a **Block** object using the ID specified. ##### Required parameters: + - **Block ID** #### 2. Append new block children + This operation creates and appends new children blocks to the parent block_id specified. ##### Required parameters: + - **Block ID** - **Children**: Array of block objects #### 3. Retrieve block children + This operation retrieves a paginated array of child block objects contained in the block using the ID specified. ##### Required parameters: + - **Block ID** - **Limit** - **Start cursor** #### 4. Update a block + This operation updates the content for the specified block_id based on the block type. ##### Required parameters: + - **Block ID** - **Properties**: The block object type value with the properties to be updated - **Archive** #### 5. Delete a block + ##### Required parameters: + - **Block ID** ### User + The following operations can be performed on the user notion resource: #### 1. Retrieve a user from current workspace -This operation retrieves a User using the ID specified. +This operation retrieves a User using the ID specified. notion user ##### Required parameters: + - **User ID** #### 2. Retrieve list of users of a workspace @@ -228,6 +253,7 @@ This operation retrieves a User using the ID specified. This operation returns a paginated list of Users for the workspace. ##### Required parameters: + - **Limit** - **Start cursor** diff --git a/docs/versioned_docs/version-2.18.0/data-sources/notion.md b/docs/versioned_docs/version-2.18.0/data-sources/notion.md index 88000f3aa6..a224116642 100644 --- a/docs/versioned_docs/version-2.18.0/data-sources/notion.md +++ b/docs/versioned_docs/version-2.18.0/data-sources/notion.md @@ -2,11 +2,15 @@ id: notion title: Notion --- + # Notion ToolJet can connect to a Notion workspace to do operations on notion pages, databases and blocks. + ## Connection +To establish a connection with the Notion data source, click on the `+Add new data source` button located on the query panel or navigate to the [Data Sources](https://docs.tooljet.com/docs/data-sources/overview) page from the ToolJet dashboard. + For integrating Notion with ToolJet we will need the API token. The API token can be generated from your Notion workspace settings. Read the official Notion docs for [Creating an internal integration with notion API](https://www.notion.so/help/create-integrations-with-the-notion-api).
@@ -18,37 +22,33 @@ For integrating Notion with ToolJet we will need the API token. The API token ca ## Querying Notion Notion API provides support for: + - **[Database](#database)** - **[Page](#page)** - **[Block](#blocks)** - **[User](#user)** - notion querying - :::tip Before querying Notion, you must share the database with your integration. Click the share button in your database view, find your integration name select it. - notion share - ::: ### Database On database resource you can perform the following operations: + - **[Retrieve a database](#1-retrieve-a-database)** - **[Query a database](#2-query-a-database)** - **[Create a database](#3-create-a-database)** - **[Update a database](#4-update-a-database)** - notion db - #### 1. Retrieve a database This operations retrieves a Database object using the ID specified. @@ -57,13 +57,12 @@ This operations retrieves a Database object using the ID specified. - **Database ID**: You'll find the Database ID in the url. Suppose this is the example url: `https://www.notion.so/workspace/XXX?v=YYY&p=ZZZ` then `XXX` is the database ID, `YYY` is the view ID and `ZZZ` is the page ID. - notion db retreieve - #### 2. Query a database This operation gets a list of **Pages** contained in the database, filtered and ordered according to the filter conditions and sort criteria provided in the query. + ##### Required parameters: - **Database ID** : You'll find the Database ID in the url. Suppose this is the example url: `https://www.notion.so/workspace/XXX?v=YYY&p=ZZZ` then `XXX` is the database ID, `YYY` is the view ID and `ZZZ` is the page ID. @@ -98,6 +97,7 @@ This operation creates a database as a subpage in the specified parent page, wit This operation updates an existing database as specified by the parameters. ##### Required parameters: + - **Database ID** ##### Optional parameters: @@ -112,24 +112,29 @@ This operation updates an existing database as specified by the parameters. ### Page On page resource you can perform the following operations: + - **[Retrieve a page](#1-retrieve-a-page)** - **[Create a page](#2-create-a-page)** - **[Update a page](#3-update-a-page)** - **[Retrieve a page property](#4-retrieve-a-page-property-item)** - **[Archive a page](#5-archive-delete-a-page)** - notion page - #### 1. Retrieve a page + This operation retrieves a **Page** object using the ID specified. + ##### Required parameters: + - **Page ID** #### 2. Create a page + This operation creates a new page in the specified database or as a child of an existing page. If the parent is a database, the property values of the new page in the properties parameter must conform to the parent database's property schema. If the parent is a page, the only valid property is title. + ##### Parameters: + - **Page ID** - **Properties** : Property values of this page - **Icon type** : Currently notion api accepts two icon options, emoji, external URL @@ -138,8 +143,11 @@ This operation creates a new page in the specified database or as a child of an - **Cover value** : Value of selected cover type #### 3. Update a page + This operation updates page property values for the specified page. Properties that are not set via the properties parameter will remain unchanged. + ##### Parameters: + - **Page ID** - **Parent type**: A database parent or page parent - **Properties** : Property values of this page @@ -150,77 +158,94 @@ This operation updates page property values for the specified page. Properties t - **Cover value** : Value of selected cover type #### 4. Retrieve a page property item + This operation retrieves a property_item object for a given page ID and property ID. Depending on the property type, the object returned will either be a value or a paginated list of property item values. See Property item objects for specifics. + ##### Parameters: + - **Page ID** - **Property ID** - **Limit** - **Start cursor** #### 5. Archive (delete) a page + ##### Required parameters: + - **Page ID** - **Archive**: Dropdown for archive and un archive the page ### Blocks + The following operations can be performed on the block resource: + - **[Retrieve a block](#1-retrieve-a-block)** - **[Append block children](#2-append-new-block-children)** - **[Retrieve block children](#3-retrieve-block-children)** - **[Update a block](#4-update-a-block)** - **[Delete a block](#5-delete-a-block)** - notion block - :::info To get the id for blocks, simply click on the menu icon for the block and click "Copy link". Afterwards, paste the link in the browser and it should look like this: `https://www.notion.so/Creating-Page-Sample-ee18b8779ae54f358b09221d6665ee15#7fcb3940a1264aadb2ad4ee9ffe11b0e` the string after **#** is the block id i.e. `7fcb3940a1264aadb2ad4ee9ffe11b0e`. ::: #### 1. Retrieve a block + This operation retrieves a **Block** object using the ID specified. ##### Required parameters: + - **Block ID** #### 2. Append new block children + This operation creates and appends new children blocks to the parent block_id specified. ##### Required parameters: + - **Block ID** - **Children**: Array of block objects #### 3. Retrieve block children + This operation retrieves a paginated array of child block objects contained in the block using the ID specified. ##### Required parameters: + - **Block ID** - **Limit** - **Start cursor** #### 4. Update a block + This operation updates the content for the specified block_id based on the block type. ##### Required parameters: + - **Block ID** - **Properties**: The block object type value with the properties to be updated - **Archive** #### 5. Delete a block + ##### Required parameters: + - **Block ID** ### User + The following operations can be performed on the user notion resource: #### 1. Retrieve a user from current workspace -This operation retrieves a User using the ID specified. +This operation retrieves a User using the ID specified. notion user ##### Required parameters: + - **User ID** #### 2. Retrieve list of users of a workspace @@ -228,6 +253,7 @@ This operation retrieves a User using the ID specified. This operation returns a paginated list of Users for the workspace. ##### Required parameters: + - **Limit** - **Start cursor** diff --git a/docs/versioned_docs/version-2.19.0/data-sources/notion.md b/docs/versioned_docs/version-2.19.0/data-sources/notion.md index 88000f3aa6..a224116642 100644 --- a/docs/versioned_docs/version-2.19.0/data-sources/notion.md +++ b/docs/versioned_docs/version-2.19.0/data-sources/notion.md @@ -2,11 +2,15 @@ id: notion title: Notion --- + # Notion ToolJet can connect to a Notion workspace to do operations on notion pages, databases and blocks. + ## Connection +To establish a connection with the Notion data source, click on the `+Add new data source` button located on the query panel or navigate to the [Data Sources](https://docs.tooljet.com/docs/data-sources/overview) page from the ToolJet dashboard. + For integrating Notion with ToolJet we will need the API token. The API token can be generated from your Notion workspace settings. Read the official Notion docs for [Creating an internal integration with notion API](https://www.notion.so/help/create-integrations-with-the-notion-api).
@@ -18,37 +22,33 @@ For integrating Notion with ToolJet we will need the API token. The API token ca ## Querying Notion Notion API provides support for: + - **[Database](#database)** - **[Page](#page)** - **[Block](#blocks)** - **[User](#user)** - notion querying - :::tip Before querying Notion, you must share the database with your integration. Click the share button in your database view, find your integration name select it. - notion share - ::: ### Database On database resource you can perform the following operations: + - **[Retrieve a database](#1-retrieve-a-database)** - **[Query a database](#2-query-a-database)** - **[Create a database](#3-create-a-database)** - **[Update a database](#4-update-a-database)** - notion db - #### 1. Retrieve a database This operations retrieves a Database object using the ID specified. @@ -57,13 +57,12 @@ This operations retrieves a Database object using the ID specified. - **Database ID**: You'll find the Database ID in the url. Suppose this is the example url: `https://www.notion.so/workspace/XXX?v=YYY&p=ZZZ` then `XXX` is the database ID, `YYY` is the view ID and `ZZZ` is the page ID. - notion db retreieve - #### 2. Query a database This operation gets a list of **Pages** contained in the database, filtered and ordered according to the filter conditions and sort criteria provided in the query. + ##### Required parameters: - **Database ID** : You'll find the Database ID in the url. Suppose this is the example url: `https://www.notion.so/workspace/XXX?v=YYY&p=ZZZ` then `XXX` is the database ID, `YYY` is the view ID and `ZZZ` is the page ID. @@ -98,6 +97,7 @@ This operation creates a database as a subpage in the specified parent page, wit This operation updates an existing database as specified by the parameters. ##### Required parameters: + - **Database ID** ##### Optional parameters: @@ -112,24 +112,29 @@ This operation updates an existing database as specified by the parameters. ### Page On page resource you can perform the following operations: + - **[Retrieve a page](#1-retrieve-a-page)** - **[Create a page](#2-create-a-page)** - **[Update a page](#3-update-a-page)** - **[Retrieve a page property](#4-retrieve-a-page-property-item)** - **[Archive a page](#5-archive-delete-a-page)** - notion page - #### 1. Retrieve a page + This operation retrieves a **Page** object using the ID specified. + ##### Required parameters: + - **Page ID** #### 2. Create a page + This operation creates a new page in the specified database or as a child of an existing page. If the parent is a database, the property values of the new page in the properties parameter must conform to the parent database's property schema. If the parent is a page, the only valid property is title. + ##### Parameters: + - **Page ID** - **Properties** : Property values of this page - **Icon type** : Currently notion api accepts two icon options, emoji, external URL @@ -138,8 +143,11 @@ This operation creates a new page in the specified database or as a child of an - **Cover value** : Value of selected cover type #### 3. Update a page + This operation updates page property values for the specified page. Properties that are not set via the properties parameter will remain unchanged. + ##### Parameters: + - **Page ID** - **Parent type**: A database parent or page parent - **Properties** : Property values of this page @@ -150,77 +158,94 @@ This operation updates page property values for the specified page. Properties t - **Cover value** : Value of selected cover type #### 4. Retrieve a page property item + This operation retrieves a property_item object for a given page ID and property ID. Depending on the property type, the object returned will either be a value or a paginated list of property item values. See Property item objects for specifics. + ##### Parameters: + - **Page ID** - **Property ID** - **Limit** - **Start cursor** #### 5. Archive (delete) a page + ##### Required parameters: + - **Page ID** - **Archive**: Dropdown for archive and un archive the page ### Blocks + The following operations can be performed on the block resource: + - **[Retrieve a block](#1-retrieve-a-block)** - **[Append block children](#2-append-new-block-children)** - **[Retrieve block children](#3-retrieve-block-children)** - **[Update a block](#4-update-a-block)** - **[Delete a block](#5-delete-a-block)** - notion block - :::info To get the id for blocks, simply click on the menu icon for the block and click "Copy link". Afterwards, paste the link in the browser and it should look like this: `https://www.notion.so/Creating-Page-Sample-ee18b8779ae54f358b09221d6665ee15#7fcb3940a1264aadb2ad4ee9ffe11b0e` the string after **#** is the block id i.e. `7fcb3940a1264aadb2ad4ee9ffe11b0e`. ::: #### 1. Retrieve a block + This operation retrieves a **Block** object using the ID specified. ##### Required parameters: + - **Block ID** #### 2. Append new block children + This operation creates and appends new children blocks to the parent block_id specified. ##### Required parameters: + - **Block ID** - **Children**: Array of block objects #### 3. Retrieve block children + This operation retrieves a paginated array of child block objects contained in the block using the ID specified. ##### Required parameters: + - **Block ID** - **Limit** - **Start cursor** #### 4. Update a block + This operation updates the content for the specified block_id based on the block type. ##### Required parameters: + - **Block ID** - **Properties**: The block object type value with the properties to be updated - **Archive** #### 5. Delete a block + ##### Required parameters: + - **Block ID** ### User + The following operations can be performed on the user notion resource: #### 1. Retrieve a user from current workspace -This operation retrieves a User using the ID specified. +This operation retrieves a User using the ID specified. notion user ##### Required parameters: + - **User ID** #### 2. Retrieve list of users of a workspace @@ -228,6 +253,7 @@ This operation retrieves a User using the ID specified. This operation returns a paginated list of Users for the workspace. ##### Required parameters: + - **Limit** - **Start cursor** From 5540eb033fcaf6845b7c5691d0a59cc3369968dc Mon Sep 17 00:00:00 2001 From: SanchitMahajan236 <116559051+SanchitMahajan236@users.noreply.github.com> Date: Thu, 12 Oct 2023 05:35:05 -0400 Subject: [PATCH 23/67] Updated the docs as specified by issue #7654 (#7697) --- docs/docs/data-sources/mysql.md | 39 ++++++++++--------- .../version-2.18.0/data-sources/mysql.md | 39 ++++++++++--------- .../version-2.19.0/data-sources/mysql.md | 39 ++++++++++--------- 3 files changed, 60 insertions(+), 57 deletions(-) diff --git a/docs/docs/data-sources/mysql.md b/docs/docs/data-sources/mysql.md index 63af848971..c349d83171 100644 --- a/docs/docs/data-sources/mysql.md +++ b/docs/docs/data-sources/mysql.md @@ -7,11 +7,11 @@ ToolJet can connect to MySQL databases to read and write data. ## Connection -To establish a connection with the MySQL datasource, you can either click on the `+Add New` button located on the query panel or navigate to the **[Global Datasources](/docs/data-sources/overview)** page through the ToolJet dashboard. +To establish a connection with the MySQL data source, you can either click on the `+Add New` button located on the query panel or navigate to the **[Data Sources](/docs/data-sources/overview)** page through the ToolJet dashboard.
-MySQL datasource +MySQL data source

@@ -20,31 +20,30 @@ To establish a connection with the MySQL datasource, you can either click on the Please make sure the **Host/IP** of the database is accessible from your VPC if you have self-hosted ToolJet. If you are using ToolJet cloud, please **whitelist** our IP. ::: - **ToolJet requires the following to connect to your MySQL database:** -| Parameter | Description | -|:--- |:--- | -| Username | Username of the MySQL database | -| Password | Password of the MySQL database | -| Database name | Name of the MySQL database | +| Parameter | Description | +| :-------------- | :------------------------------------------------------------------------ | +| Username | Username of the MySQL database | +| Password | Password of the MySQL database | +| Database name | Name of the MySQL database | | Connection type | Connection type of the MySQL database: either **Hostname** or **Socket**. | If you are using **Hostname** as the connection type, you will need to provide the following information: -| Parameter | Description | -|:--- |:--- | -| Host/IP | Hostname or IP address of the MySQL database | -| Port | Port number of the MySQL database | -| SSL | Enable SSL connection to the MySQL database | +| Parameter | Description | +| :-------- | :------------------------------------------- | +| Host/IP | Hostname or IP address of the MySQL database | +| Port | Port number of the MySQL database | +| SSL | Enable SSL connection to the MySQL database | If you are using **Socket** as the connection type, you will need to provide the following information: -| Parameter | Description | -|:--- |:--- | +| Parameter | Description | +| :---------- | :---------------------- | | Socket path | Path of the socket file | -It is recommended to create a new MySQL database user so that you can control the access levels of ToolJet. +It is recommended to create a new MySQL database user so that you can control the access levels of ToolJet.
@@ -63,9 +62,10 @@ Once the MySQL data source is added, you can create queries to read and write da ### SQL mode -SQL mode can be used to query MySQL database using SQL queries. Select SQL mode from the dropdown and then enter the SQL query in the editor. +SQL mode can be used to query MySQL database using SQL queries. Select SQL mode from the dropdown and then enter the SQL query in the editor. **Example:** + ```sql SELECT * FROM users ``` @@ -80,7 +80,8 @@ SELECT * FROM users GUI mode can be used to query MySQL database without writing queries. Select GUI mode from the dropdown and then choose the operation **Bulk update using primary key**. Enter the **Table** name and **Primary key column** name. Now, in the editor enter the records in the form of an array of objects. Each object should contain the primary key column and the columns to be updated. -**Example:** +**Example:** + ```json {{ [ {id: 1, channel: 33}, {id:2, channel:24} ] }} ``` @@ -93,4 +94,4 @@ GUI mode can be used to query MySQL database without writing queries. Select GUI :::tip Query results can be transformed using transformations. Learn more about transformations [here](/docs/tutorial/transformations). -::: \ No newline at end of file +::: diff --git a/docs/versioned_docs/version-2.18.0/data-sources/mysql.md b/docs/versioned_docs/version-2.18.0/data-sources/mysql.md index 63af848971..c349d83171 100644 --- a/docs/versioned_docs/version-2.18.0/data-sources/mysql.md +++ b/docs/versioned_docs/version-2.18.0/data-sources/mysql.md @@ -7,11 +7,11 @@ ToolJet can connect to MySQL databases to read and write data. ## Connection -To establish a connection with the MySQL datasource, you can either click on the `+Add New` button located on the query panel or navigate to the **[Global Datasources](/docs/data-sources/overview)** page through the ToolJet dashboard. +To establish a connection with the MySQL data source, you can either click on the `+Add New` button located on the query panel or navigate to the **[Data Sources](/docs/data-sources/overview)** page through the ToolJet dashboard.
-MySQL datasource +MySQL data source

@@ -20,31 +20,30 @@ To establish a connection with the MySQL datasource, you can either click on the Please make sure the **Host/IP** of the database is accessible from your VPC if you have self-hosted ToolJet. If you are using ToolJet cloud, please **whitelist** our IP. ::: - **ToolJet requires the following to connect to your MySQL database:** -| Parameter | Description | -|:--- |:--- | -| Username | Username of the MySQL database | -| Password | Password of the MySQL database | -| Database name | Name of the MySQL database | +| Parameter | Description | +| :-------------- | :------------------------------------------------------------------------ | +| Username | Username of the MySQL database | +| Password | Password of the MySQL database | +| Database name | Name of the MySQL database | | Connection type | Connection type of the MySQL database: either **Hostname** or **Socket**. | If you are using **Hostname** as the connection type, you will need to provide the following information: -| Parameter | Description | -|:--- |:--- | -| Host/IP | Hostname or IP address of the MySQL database | -| Port | Port number of the MySQL database | -| SSL | Enable SSL connection to the MySQL database | +| Parameter | Description | +| :-------- | :------------------------------------------- | +| Host/IP | Hostname or IP address of the MySQL database | +| Port | Port number of the MySQL database | +| SSL | Enable SSL connection to the MySQL database | If you are using **Socket** as the connection type, you will need to provide the following information: -| Parameter | Description | -|:--- |:--- | +| Parameter | Description | +| :---------- | :---------------------- | | Socket path | Path of the socket file | -It is recommended to create a new MySQL database user so that you can control the access levels of ToolJet. +It is recommended to create a new MySQL database user so that you can control the access levels of ToolJet.
@@ -63,9 +62,10 @@ Once the MySQL data source is added, you can create queries to read and write da ### SQL mode -SQL mode can be used to query MySQL database using SQL queries. Select SQL mode from the dropdown and then enter the SQL query in the editor. +SQL mode can be used to query MySQL database using SQL queries. Select SQL mode from the dropdown and then enter the SQL query in the editor. **Example:** + ```sql SELECT * FROM users ``` @@ -80,7 +80,8 @@ SELECT * FROM users GUI mode can be used to query MySQL database without writing queries. Select GUI mode from the dropdown and then choose the operation **Bulk update using primary key**. Enter the **Table** name and **Primary key column** name. Now, in the editor enter the records in the form of an array of objects. Each object should contain the primary key column and the columns to be updated. -**Example:** +**Example:** + ```json {{ [ {id: 1, channel: 33}, {id:2, channel:24} ] }} ``` @@ -93,4 +94,4 @@ GUI mode can be used to query MySQL database without writing queries. Select GUI :::tip Query results can be transformed using transformations. Learn more about transformations [here](/docs/tutorial/transformations). -::: \ No newline at end of file +::: diff --git a/docs/versioned_docs/version-2.19.0/data-sources/mysql.md b/docs/versioned_docs/version-2.19.0/data-sources/mysql.md index 63af848971..c349d83171 100644 --- a/docs/versioned_docs/version-2.19.0/data-sources/mysql.md +++ b/docs/versioned_docs/version-2.19.0/data-sources/mysql.md @@ -7,11 +7,11 @@ ToolJet can connect to MySQL databases to read and write data. ## Connection -To establish a connection with the MySQL datasource, you can either click on the `+Add New` button located on the query panel or navigate to the **[Global Datasources](/docs/data-sources/overview)** page through the ToolJet dashboard. +To establish a connection with the MySQL data source, you can either click on the `+Add New` button located on the query panel or navigate to the **[Data Sources](/docs/data-sources/overview)** page through the ToolJet dashboard.
-MySQL datasource +MySQL data source

@@ -20,31 +20,30 @@ To establish a connection with the MySQL datasource, you can either click on the Please make sure the **Host/IP** of the database is accessible from your VPC if you have self-hosted ToolJet. If you are using ToolJet cloud, please **whitelist** our IP. ::: - **ToolJet requires the following to connect to your MySQL database:** -| Parameter | Description | -|:--- |:--- | -| Username | Username of the MySQL database | -| Password | Password of the MySQL database | -| Database name | Name of the MySQL database | +| Parameter | Description | +| :-------------- | :------------------------------------------------------------------------ | +| Username | Username of the MySQL database | +| Password | Password of the MySQL database | +| Database name | Name of the MySQL database | | Connection type | Connection type of the MySQL database: either **Hostname** or **Socket**. | If you are using **Hostname** as the connection type, you will need to provide the following information: -| Parameter | Description | -|:--- |:--- | -| Host/IP | Hostname or IP address of the MySQL database | -| Port | Port number of the MySQL database | -| SSL | Enable SSL connection to the MySQL database | +| Parameter | Description | +| :-------- | :------------------------------------------- | +| Host/IP | Hostname or IP address of the MySQL database | +| Port | Port number of the MySQL database | +| SSL | Enable SSL connection to the MySQL database | If you are using **Socket** as the connection type, you will need to provide the following information: -| Parameter | Description | -|:--- |:--- | +| Parameter | Description | +| :---------- | :---------------------- | | Socket path | Path of the socket file | -It is recommended to create a new MySQL database user so that you can control the access levels of ToolJet. +It is recommended to create a new MySQL database user so that you can control the access levels of ToolJet.
@@ -63,9 +62,10 @@ Once the MySQL data source is added, you can create queries to read and write da ### SQL mode -SQL mode can be used to query MySQL database using SQL queries. Select SQL mode from the dropdown and then enter the SQL query in the editor. +SQL mode can be used to query MySQL database using SQL queries. Select SQL mode from the dropdown and then enter the SQL query in the editor. **Example:** + ```sql SELECT * FROM users ``` @@ -80,7 +80,8 @@ SELECT * FROM users GUI mode can be used to query MySQL database without writing queries. Select GUI mode from the dropdown and then choose the operation **Bulk update using primary key**. Enter the **Table** name and **Primary key column** name. Now, in the editor enter the records in the form of an array of objects. Each object should contain the primary key column and the columns to be updated. -**Example:** +**Example:** + ```json {{ [ {id: 1, channel: 33}, {id:2, channel:24} ] }} ``` @@ -93,4 +94,4 @@ GUI mode can be used to query MySQL database without writing queries. Select GUI :::tip Query results can be transformed using transformations. Learn more about transformations [here](/docs/tutorial/transformations). -::: \ No newline at end of file +::: From 7aedd0813fd8b99db637cda3f7636fa61dde6626 Mon Sep 17 00:00:00 2001 From: Adish M <44204658+adishM98@users.noreply.github.com> Date: Fri, 13 Oct 2023 13:12:20 +0530 Subject: [PATCH 24/67] Cypress automation revamp (#7829) * Cypress autmation revamp * change in server start command * changed sub path flow using docker * changed sub path flow using docker * changed the image being pulled * postgres folder * add subpath to all the automation flow * correction config-files * removing the render workflow created for cypress * corrections with headings --- .../{cypress.yml => cypress-appbuilder.yml} | 139 ++----- .github/workflows/cypress-marketplace.yml | 201 ++++++++++ .github/workflows/cypress-platform.yml | 218 +++++++++++ .../workflows/render-preview-deploy-pro.yml | 351 ------------------ .../workflows/render-suspend-labeler-pro.yml | 45 --- 5 files changed, 459 insertions(+), 495 deletions(-) rename .github/workflows/{cypress.yml => cypress-appbuilder.yml} (63%) create mode 100644 .github/workflows/cypress-marketplace.yml create mode 100644 .github/workflows/cypress-platform.yml delete mode 100644 .github/workflows/render-preview-deploy-pro.yml delete mode 100644 .github/workflows/render-suspend-labeler-pro.yml diff --git a/.github/workflows/cypress.yml b/.github/workflows/cypress-appbuilder.yml similarity index 63% rename from .github/workflows/cypress.yml rename to .github/workflows/cypress-appbuilder.yml index 7265d0f230..b7d1177183 100644 --- a/.github/workflows/cypress.yml +++ b/.github/workflows/cypress-appbuilder.yml @@ -1,4 +1,4 @@ -name: Cypress E2E Test +name: Cypress App-Builder on: pull_request_target: @@ -117,94 +117,80 @@ jobs: name: screenshots path: cypress-tests/cypress/screenshots - Cypress-Platform: + Cypress-App-builder-Subpath: runs-on: ubuntu-22.04 - if: ${{ github.event.action == 'labeled' && github.event.label.name == 'run-cypress-workspace' }} + if: ${{ github.event.action == 'labeled' && github.event.label.name == 'run-cypress-app-builder-subpath' }} steps: - - name: Setup Node.js - uses: actions/setup-node@v2 - with: - node-version: 18.3.0 - - - name: Set up Docker - uses: docker-practice/actions-setup-docker@master - - - name: Run PosgtreSQL Database Docker Container - run: | - sudo docker network create tooljet - sudo docker run -d --name postgres -p 5432:5432 -e POSTGRES_PASSWORD=postgres -e POSTGRES_USER=postgres -e POSTGRES_PORT=5432 -d postgres:13 - - name: Checkout uses: actions/checkout@v3 with: ref: ${{ github.event.pull_request.head.ref }} - - name: Install and build dependencies + # Create Docker Buildx builder with platform configuration + - name: Set up Docker Buildx run: | - npm cache clean --force - npm install - npm install --prefix server - npm install --prefix frontend - npm run build:plugins + mkdir -p ~/.docker/cli-plugins + curl -SL https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.linux-amd64 -o ~/.docker/cli-plugins/docker-buildx + chmod a+x ~/.docker/cli-plugins/docker-buildx + docker buildx create --name mybuilder --platform linux/arm64,linux/amd64,linux/amd64/v2,linux/riscv64,linux/ppc64le,linux/s390x,linux/386,linux/mips64le,linux/mips64,linux/arm/v7,linux/arm/v6 + docker buildx use mybuilder + + - name: Set DOCKER_CLI_EXPERIMENTAL + run: echo "DOCKER_CLI_EXPERIMENTAL=enabled" >> $GITHUB_ENV + + - name: use mybuilder buildx + run: docker buildx use mybuilder + + - name: Build docker image + run: docker buildx build --platform=linux/amd64 -f docker/production.Dockerfile . -t tooljet/tj-osv:cypress - name: Set up environment variables run: | - echo "TOOLJET_HOST=http://localhost:8082" >> .env + echo "TOOLJET_HOST=http://localhost:3000" >> .env echo "LOCKBOX_MASTER_KEY=cd97331a419c09387bef49787f7da8d2a81d30733f0de6bed23ad8356d2068b2" >> .env echo "SECRET_KEY_BASE=7073b9a35a15dd20914ae17e36a693093f25b74b96517a5fec461fc901c51e011cd142c731bee48c5081ec8bac321c1f259ef097ef2a16f25df17a3798c03426" >> .env echo "PG_DB=tooljet_development" >> .env echo "PG_USER=postgres" >> .env - echo "PG_HOST=localhost" >> .env + echo "PG_HOST=postgres" >> .env echo "PG_PASS=postgres" >> .env echo "PG_PORT=5432" >> .env echo "ENABLE_TOOLJET_DB=true" >> .env - echo "TOOLJET_DB=tooljet" >> .env + echo "TOOLJET_DB=tooljet_db" >> .env echo "TOOLJET_DB_USER=postgres" >> .env - echo "TOOLJET_DB_HOST=localhost" >> .env + echo "TOOLJET_DB_HOST=postgres" >> .env echo "TOOLJET_DB_PASS=postgres" >> .env echo "PGRST_JWT_SECRET=r9iMKoe5CRMgvJBBtp4HrqN7QiPpUToj" >> .env - echo "PGRST_HOST=localhost:3001" >> .env + echo "PGRST_HOST=postgrest" >> .env + echo "PGRST_DB_URI=postgres://postgres:postgres@postgres/tooljet_db" >> .env echo "SSO_GIT_OAUTH2_CLIENT_ID=dummy" >> .env echo "SSO_GIT_OAUTH2_CLIENT_SECRET=dummy" >> .env echo "SSO_GIT_OAUTH2_HOST=dummy" >> .env echo "SSO_GOOGLE_OAUTH2_CLIENT_ID=dummy" >> .env + echo "SUB_PATH=/apps/tooljet/" >> .env + echo "NODE_ENV=production" >> .env + echo "SERVE_CLIENT=true" >> .env - - name: Set up database - run: | - npm run --prefix server db:create - npm run --prefix server db:reset - npm run --prefix server db:seed + - name: Pulling the docker-compose file + run: curl -LO https://tooljet-test.s3.us-west-1.amazonaws.com/docker-compose.yaml && mkdir postgres_data - - name: sleep 5 - run: sleep 5 + - name: Run docker-compose file + run: docker-compose up -d - - name: Run PostgREST Docker Container - run: | - sudo docker run -d --name postgrest --network tooljet -p 3001:3000 \ - -e PGRST_DB_URI="postgres://postgres:postgres@postgres:5432/tooljet" -e PGRST_DB_ANON_ROLE="postgres" -e PGRST_JWT_SECRET="r9iMKoe5CRMgvJBBtp4HrqN7QiPpUToj" \ - postgrest/postgrest:v10.1.1.20221215 + - name: Checking containers + run: docker ps -a - - name: Run plugins compilation in watch mode - run: cd plugins && npm start & - - - name: Run the server - run: cd server && npm run start:dev & - - - name: Run the client - run: cd frontend && npm start & + - name: docker logs + run: sudo docker logs Tooljet-app - name: Wait for the server to be ready run: | timeout 1500 bash -c ' - until curl --silent --fail http://localhost:8082; do + until curl --silent --fail http://localhost:80/apps/tooljet/; do sleep 5 done' - - name: docker logs - run: sudo docker logs postgrest - - name: Create Cypress environment file id: create-json uses: jsdaniell/create-json@1.1.2 @@ -213,57 +199,12 @@ jobs: json: ${{ secrets.CYPRESS_SECRETS }} dir: "./cypress-tests" - - name: Platform + - name: App Builder subpath uses: cypress-io/github-action@v5 with: working-directory: ./cypress-tests - config: "baseUrl=http://localhost:8082" - config-file: cypress-workspace.config.js - - - name: Capture Screenshots - uses: actions/upload-artifact@v3 - if: always() - with: - name: screenshots - path: cypress-tests/cypress/screenshots - - Cypress-Marketplace: - runs-on: ubuntu-22.04 - - if: ${{ github.event.action == 'labeled' && github.event.label.name == 'run-cypress-marketplace' }} - - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - ref: ${{ github.event.pull_request.head.ref }} - - - name: Setup Node.js - uses: actions/setup-node@v2 - with: - node-version: 18.3.0 - - - name: Checking the PR URL - run: | - timeout 1500 bash -c ' - until curl --silent --fail https://tooljet-pr-cypress-${{ env.PR_NUMBER }}.onrender.com; do - sleep 100 - done' - - - name: Create Cypress environment file - id: create-json - uses: jsdaniell/create-json@1.1.2 - with: - name: "cypress.env.json" - json: ${{ secrets.CYPRESS_SECRETS }} - dir: "./cypress-tests" - - - name: Marketplace - uses: cypress-io/github-action@v5 - with: - working-directory: ./cypress-tests - config: "baseUrl=https://tooljet-pr-cypress-${{ env.PR_NUMBER }}.onrender.com" - config-file: cypress-marketplace.config.js + config: "baseUrl=http://localhost:80/apps/tooljet/" + config-file: cypress-app-builder.config.js - name: Capture Screenshots uses: actions/upload-artifact@v3 diff --git a/.github/workflows/cypress-marketplace.yml b/.github/workflows/cypress-marketplace.yml new file mode 100644 index 0000000000..79c3ad776b --- /dev/null +++ b/.github/workflows/cypress-marketplace.yml @@ -0,0 +1,201 @@ +name: Cypress Marketplace + +on: + pull_request_target: + types: [labeled, unlabeled, closed] + + workflow_dispatch: + +env: + PR_NUMBER: ${{ github.event.number }} + BRANCH_NAME: ${{ github.head_ref || github.ref_name }} + +jobs: + Cypress-Marketplace: + runs-on: ubuntu-22.04 + + if: ${{ github.event.action == 'labeled' && github.event.label.name == 'run-cypress-marketplace' }} + + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + ref: ${{ github.event.pull_request.head.ref }} + + # Create Docker Buildx builder with platform configuration + - name: Set up Docker Buildx + run: | + mkdir -p ~/.docker/cli-plugins + curl -SL https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.linux-amd64 -o ~/.docker/cli-plugins/docker-buildx + chmod a+x ~/.docker/cli-plugins/docker-buildx + docker buildx create --name mybuilder --platform linux/arm64,linux/amd64,linux/amd64/v2,linux/riscv64,linux/ppc64le,linux/s390x,linux/386,linux/mips64le,linux/mips64,linux/arm/v7,linux/arm/v6 + docker buildx use mybuilder + + - name: Set DOCKER_CLI_EXPERIMENTAL + run: echo "DOCKER_CLI_EXPERIMENTAL=enabled" >> $GITHUB_ENV + + - name: use mybuilder buildx + run: docker buildx use mybuilder + + - name: Build docker image + run: docker buildx build --platform=linux/amd64 -f docker/production.Dockerfile . -t tooljet/tj-osv:cypress + + - name: Set up environment variables + run: | + echo "TOOLJET_HOST=http://localhost:3000" >> .env + echo "LOCKBOX_MASTER_KEY=cd97331a419c09387bef49787f7da8d2a81d30733f0de6bed23ad8356d2068b2" >> .env + echo "SECRET_KEY_BASE=7073b9a35a15dd20914ae17e36a693093f25b74b96517a5fec461fc901c51e011cd142c731bee48c5081ec8bac321c1f259ef097ef2a16f25df17a3798c03426" >> .env + echo "PG_DB=tooljet_development" >> .env + echo "PG_USER=postgres" >> .env + echo "PG_HOST=postgres" >> .env + echo "PG_PASS=postgres" >> .env + echo "PG_PORT=5432" >> .env + echo "ENABLE_TOOLJET_DB=true" >> .env + echo "TOOLJET_DB=tooljet_db" >> .env + echo "TOOLJET_DB_USER=postgres" >> .env + echo "TOOLJET_DB_HOST=postgres" >> .env + echo "TOOLJET_DB_PASS=postgres" >> .env + echo "PGRST_JWT_SECRET=r9iMKoe5CRMgvJBBtp4HrqN7QiPpUToj" >> .env + echo "PGRST_HOST=postgrest" >> .env + echo "PGRST_DB_URI=postgres://postgres:postgres@postgres/tooljet_db" >> .env + echo "SSO_GIT_OAUTH2_CLIENT_ID=dummy" >> .env + echo "SSO_GIT_OAUTH2_CLIENT_SECRET=dummy" >> .env + echo "SSO_GIT_OAUTH2_HOST=dummy" >> .env + echo "SSO_GOOGLE_OAUTH2_CLIENT_ID=dummy" >> .env + + - name: Pulling the docker-compose file + run: curl -LO https://tooljet-test.s3.us-west-1.amazonaws.com/docker-compose.yaml && mkdir postgres_data + + - name: Run docker-compose file + run: docker-compose up -d + + - name: Checking containers + run: docker ps -a + + - name: docker logs + run: sudo docker logs Tooljet-app + + - name: Wait for the server to be ready + run: | + timeout 1500 bash -c ' + until curl --silent --fail http://localhost:80; do + sleep 5 + done' + + - name: Create Cypress environment file + id: create-json + uses: jsdaniell/create-json@1.1.2 + with: + name: "cypress.env.json" + json: ${{ secrets.CYPRESS_SECRETS }} + dir: "./cypress-tests" + + - name: Marketplace + uses: cypress-io/github-action@v5 + with: + working-directory: ./cypress-tests + config: "baseUrl=http://localhost:80" + config-file: cypress-marketplace.config.js + + - name: Capture Screenshots + uses: actions/upload-artifact@v3 + if: always() + with: + name: screenshots + path: cypress-tests/cypress/screenshots + + Cypress-Marketplace-Subpath: + runs-on: ubuntu-22.04 + + if: ${{ github.event.action == 'labeled' && github.event.label.name == 'run-cypress-marketplace-subpath' }} + + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + ref: ${{ github.event.pull_request.head.ref }} + + # Create Docker Buildx builder with platform configuration + - name: Set up Docker Buildx + run: | + mkdir -p ~/.docker/cli-plugins + curl -SL https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.linux-amd64 -o ~/.docker/cli-plugins/docker-buildx + chmod a+x ~/.docker/cli-plugins/docker-buildx + docker buildx create --name mybuilder --platform linux/arm64,linux/amd64,linux/amd64/v2,linux/riscv64,linux/ppc64le,linux/s390x,linux/386,linux/mips64le,linux/mips64,linux/arm/v7,linux/arm/v6 + docker buildx use mybuilder + + - name: Set DOCKER_CLI_EXPERIMENTAL + run: echo "DOCKER_CLI_EXPERIMENTAL=enabled" >> $GITHUB_ENV + + - name: use mybuilder buildx + run: docker buildx use mybuilder + + - name: Build docker image + run: docker buildx build --platform=linux/amd64 -f docker/production.Dockerfile . -t tooljet/tj-osv:cypress + + - name: Set up environment variables + run: | + echo "TOOLJET_HOST=http://localhost:3000" >> .env + echo "LOCKBOX_MASTER_KEY=cd97331a419c09387bef49787f7da8d2a81d30733f0de6bed23ad8356d2068b2" >> .env + echo "SECRET_KEY_BASE=7073b9a35a15dd20914ae17e36a693093f25b74b96517a5fec461fc901c51e011cd142c731bee48c5081ec8bac321c1f259ef097ef2a16f25df17a3798c03426" >> .env + echo "PG_DB=tooljet_development" >> .env + echo "PG_USER=postgres" >> .env + echo "PG_HOST=postgres" >> .env + echo "PG_PASS=postgres" >> .env + echo "PG_PORT=5432" >> .env + echo "ENABLE_TOOLJET_DB=true" >> .env + echo "TOOLJET_DB=tooljet_db" >> .env + echo "TOOLJET_DB_USER=postgres" >> .env + echo "TOOLJET_DB_HOST=postgres" >> .env + echo "TOOLJET_DB_PASS=postgres" >> .env + echo "PGRST_JWT_SECRET=r9iMKoe5CRMgvJBBtp4HrqN7QiPpUToj" >> .env + echo "PGRST_HOST=postgrest" >> .env + echo "PGRST_DB_URI=postgres://postgres:postgres@postgres/tooljet_db" >> .env + echo "SSO_GIT_OAUTH2_CLIENT_ID=dummy" >> .env + echo "SSO_GIT_OAUTH2_CLIENT_SECRET=dummy" >> .env + echo "SSO_GIT_OAUTH2_HOST=dummy" >> .env + echo "SSO_GOOGLE_OAUTH2_CLIENT_ID=dummy" >> .env + echo "SUB_PATH=/apps/tooljet/" >> .env + echo "NODE_ENV=production" >> .env + echo "SERVE_CLIENT=true" >> .env + + - name: Pulling the docker-compose file + run: curl -LO https://tooljet-test.s3.us-west-1.amazonaws.com/docker-compose.yaml && mkdir postgres_data + + - name: Run docker-compose file + run: docker-compose up -d + + - name: Checking containers + run: docker ps -a + + - name: docker logs + run: sudo docker logs Tooljet-app + + - name: Wait for the server to be ready + run: | + timeout 1500 bash -c ' + until curl --silent --fail http://localhost:80/apps/tooljet/; do + sleep 5 + done' + + - name: Create Cypress environment file + id: create-json + uses: jsdaniell/create-json@1.1.2 + with: + name: "cypress.env.json" + json: ${{ secrets.CYPRESS_SECRETS }} + dir: "./cypress-tests" + + - name: Marketplace subpath + uses: cypress-io/github-action@v5 + with: + working-directory: ./cypress-tests + config: "baseUrl=http://localhost:80/apps/tooljet/" + config-file: cypress-marketplace.config.js + + - name: Capture Screenshots + uses: actions/upload-artifact@v3 + if: always() + with: + name: screenshots + path: cypress-tests/cypress/screenshots diff --git a/.github/workflows/cypress-platform.yml b/.github/workflows/cypress-platform.yml new file mode 100644 index 0000000000..df001669df --- /dev/null +++ b/.github/workflows/cypress-platform.yml @@ -0,0 +1,218 @@ +name: Cypress Platform + +on: + pull_request_target: + types: [labeled, unlabeled, closed] + + workflow_dispatch: + +env: + PR_NUMBER: ${{ github.event.number }} + BRANCH_NAME: ${{ github.head_ref || github.ref_name }} + +jobs: + Cypress-Platform: + runs-on: ubuntu-22.04 + + if: ${{ github.event.action == 'labeled' && github.event.label.name == 'run-cypress-workspace' }} + + steps: + - name: Setup Node.js + uses: actions/setup-node@v2 + with: + node-version: 18.3.0 + + - name: Set up Docker + uses: docker-practice/actions-setup-docker@master + + - name: Run PosgtreSQL Database Docker Container + run: | + sudo docker network create tooljet + sudo docker run -d --name postgres -p 5432:5432 -e POSTGRES_PASSWORD=postgres -e POSTGRES_USER=postgres -e POSTGRES_PORT=5432 -d postgres:13 + + - name: Checkout + uses: actions/checkout@v3 + with: + ref: ${{ github.event.pull_request.head.ref }} + + - name: Install and build dependencies + run: | + npm cache clean --force + npm install + npm install --prefix server + npm install --prefix frontend + npm run build:plugins + + - name: Set up environment variables + run: | + echo "TOOLJET_HOST=http://localhost:8082" >> .env + echo "LOCKBOX_MASTER_KEY=cd97331a419c09387bef49787f7da8d2a81d30733f0de6bed23ad8356d2068b2" >> .env + echo "SECRET_KEY_BASE=7073b9a35a15dd20914ae17e36a693093f25b74b96517a5fec461fc901c51e011cd142c731bee48c5081ec8bac321c1f259ef097ef2a16f25df17a3798c03426" >> .env + echo "PG_DB=tooljet_development" >> .env + echo "PG_USER=postgres" >> .env + echo "PG_HOST=localhost" >> .env + echo "PG_PASS=postgres" >> .env + echo "PG_PORT=5432" >> .env + echo "ENABLE_TOOLJET_DB=true" >> .env + echo "TOOLJET_DB=tooljet" >> .env + echo "TOOLJET_DB_USER=postgres" >> .env + echo "TOOLJET_DB_HOST=localhost" >> .env + echo "TOOLJET_DB_PASS=postgres" >> .env + echo "PGRST_JWT_SECRET=r9iMKoe5CRMgvJBBtp4HrqN7QiPpUToj" >> .env + echo "PGRST_HOST=localhost:3001" >> .env + echo "SSO_GIT_OAUTH2_CLIENT_ID=dummy" >> .env + echo "SSO_GIT_OAUTH2_CLIENT_SECRET=dummy" >> .env + echo "SSO_GIT_OAUTH2_HOST=dummy" >> .env + echo "SSO_GOOGLE_OAUTH2_CLIENT_ID=dummy" >> .env + + - name: Set up database + run: | + npm run --prefix server db:create + npm run --prefix server db:reset + npm run --prefix server db:seed + + - name: sleep 5 + run: sleep 5 + + - name: Run PostgREST Docker Container + run: | + sudo docker run -d --name postgrest --network tooljet -p 3001:3000 \ + -e PGRST_DB_URI="postgres://postgres:postgres@postgres:5432/tooljet" -e PGRST_DB_ANON_ROLE="postgres" -e PGRST_JWT_SECRET="r9iMKoe5CRMgvJBBtp4HrqN7QiPpUToj" \ + postgrest/postgrest:v10.1.1.20221215 + + - name: Run plugins compilation in watch mode + run: cd plugins && npm start & + + - name: Run the server + run: cd server && npm run start:dev & + + - name: Run the client + run: cd frontend && npm start & + + - name: Wait for the server to be ready + run: | + timeout 1500 bash -c ' + until curl --silent --fail http://localhost:8082; do + sleep 5 + done' + + - name: docker logs + run: sudo docker logs postgrest + + - name: Create Cypress environment file + id: create-json + uses: jsdaniell/create-json@1.1.2 + with: + name: "cypress.env.json" + json: ${{ secrets.CYPRESS_SECRETS }} + dir: "./cypress-tests" + + - name: Platform + uses: cypress-io/github-action@v5 + with: + working-directory: ./cypress-tests + config: "baseUrl=http://localhost:8082" + config-file: cypress-workspace.config.js + + - name: Capture Screenshots + uses: actions/upload-artifact@v3 + if: always() + with: + name: screenshots + path: cypress-tests/cypress/screenshots + + Cypress-Platform-subpath: + runs-on: ubuntu-22.04 + + if: ${{ github.event.action == 'labeled' && github.event.label.name == 'run-cypress-workspace-subpath' }} + + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + ref: ${{ github.event.pull_request.head.ref }} + + # Create Docker Buildx builder with platform configuration + - name: Set up Docker Buildx + run: | + mkdir -p ~/.docker/cli-plugins + curl -SL https://github.com/docker/buildx/releases/download/v0.11.0/buildx-v0.11.0.linux-amd64 -o ~/.docker/cli-plugins/docker-buildx + chmod a+x ~/.docker/cli-plugins/docker-buildx + docker buildx create --name mybuilder --platform linux/arm64,linux/amd64,linux/amd64/v2,linux/riscv64,linux/ppc64le,linux/s390x,linux/386,linux/mips64le,linux/mips64,linux/arm/v7,linux/arm/v6 + docker buildx use mybuilder + + - name: Set DOCKER_CLI_EXPERIMENTAL + run: echo "DOCKER_CLI_EXPERIMENTAL=enabled" >> $GITHUB_ENV + + - name: use mybuilder buildx + run: docker buildx use mybuilder + + - name: Build docker image + run: docker buildx build --platform=linux/amd64 -f docker/production.Dockerfile . -t tooljet/tj-osv:cypress + + - name: Set up environment variables + run: | + echo "TOOLJET_HOST=http://localhost:3000" >> .env + echo "LOCKBOX_MASTER_KEY=cd97331a419c09387bef49787f7da8d2a81d30733f0de6bed23ad8356d2068b2" >> .env + echo "SECRET_KEY_BASE=7073b9a35a15dd20914ae17e36a693093f25b74b96517a5fec461fc901c51e011cd142c731bee48c5081ec8bac321c1f259ef097ef2a16f25df17a3798c03426" >> .env + echo "PG_DB=tooljet_development" >> .env + echo "PG_USER=postgres" >> .env + echo "PG_HOST=postgres" >> .env + echo "PG_PASS=postgres" >> .env + echo "PG_PORT=5432" >> .env + echo "ENABLE_TOOLJET_DB=true" >> .env + echo "TOOLJET_DB=tooljet_db" >> .env + echo "TOOLJET_DB_USER=postgres" >> .env + echo "TOOLJET_DB_HOST=postgres" >> .env + echo "TOOLJET_DB_PASS=postgres" >> .env + echo "PGRST_JWT_SECRET=r9iMKoe5CRMgvJBBtp4HrqN7QiPpUToj" >> .env + echo "PGRST_HOST=postgrest" >> .env + echo "PGRST_DB_URI=postgres://postgres:postgres@postgres/tooljet_db" >> .env + echo "SSO_GIT_OAUTH2_CLIENT_ID=dummy" >> .env + echo "SSO_GIT_OAUTH2_CLIENT_SECRET=dummy" >> .env + echo "SSO_GIT_OAUTH2_HOST=dummy" >> .env + echo "SSO_GOOGLE_OAUTH2_CLIENT_ID=dummy" >> .env + echo "SUB_PATH=/apps/tooljet/" >> .env + echo "NODE_ENV=production" >> .env + echo "SERVE_CLIENT=true" >> .env + + - name: Pulling the docker-compose file + run: curl -LO https://tooljet-test.s3.us-west-1.amazonaws.com/docker-compose.yaml && mkdir postgres_data + + - name: Run docker-compose file + run: docker-compose up -d + + - name: Checking containers + run: docker ps -a + + - name: docker logs + run: sudo docker logs Tooljet-app + + - name: Wait for the server to be ready + run: | + timeout 1500 bash -c ' + until curl --silent --fail http://localhost:80/apps/tooljet/; do + sleep 5 + done' + + - name: Create Cypress environment file + id: create-json + uses: jsdaniell/create-json@1.1.2 + with: + name: "cypress.env.json" + json: ${{ secrets.CYPRESS_SECRETS }} + dir: "./cypress-tests" + + - name: Platform-subpath + uses: cypress-io/github-action@v5 + with: + working-directory: ./cypress-tests + config: "baseUrl=http://localhost:80/apps/tooljet/" + config-file: cypress-workspace.config.js + + - name: Capture Screenshots + uses: actions/upload-artifact@v3 + if: always() + with: + name: screenshots + path: cypress-tests/cypress/screenshots diff --git a/.github/workflows/render-preview-deploy-pro.yml b/.github/workflows/render-preview-deploy-pro.yml deleted file mode 100644 index 5ae9cf06b2..0000000000 --- a/.github/workflows/render-preview-deploy-pro.yml +++ /dev/null @@ -1,351 +0,0 @@ -name: Render cypress app deploy -on: - pull_request_target: - types: [labeled, unlabeled, closed] -env: - PR_NUMBER: ${{ github.event.number }} - BRANCH_NAME: ${{ github.head_ref || github.ref_name }} - -permissions: - pull-requests: write - issues: write - -jobs: - create-review-cypress-app: - if: ${{ github.event.action == 'labeled' && github.event.label.name == 'create-review-cypress-app' }} - runs-on: ubuntu-latest - - steps: - - name: Create deployment - id: create-deployment - run: | - export RESPONSE=$(curl --request POST \ - --url https://api.render.com/v1/services \ - --header 'accept: application/json' \ - --header 'content-type: application/json' \ - --header 'Authorization: Bearer ${{ secrets.RENDER_API_KEY }}' \ - --data ' - { - "autoDeploy": "yes", - "branch": "${{ env.BRANCH_NAME }}", - "name": "ToolJet PR CYPRESS #${{ env.PR_NUMBER }}", - "notifyOnFail": "default", - "ownerId": "tea-caeo4bj19n072h3dddc0", - "repo": "${{ github.event.pull_request.head.repo.git_url }}", - "slug": "tooljet-pr-cypress-${{ env.PR_NUMBER }}", - "suspended": "not_suspended", - "suspenders": [], - "type": "web_service", - "envVars": [ - { - "key": "PG_HOST", - "value": "${{ secrets.RENDER_PG_HOST }}" - }, - { - "key": "PG_PORT", - "value": "5432" - }, - { - "key": "PG_USER", - "value": "${{ secrets.RENDER_PG_USER }}" - }, - { - "key": "PG_PASS", - "value": "${{ secrets.RENDER_PG_PASS }}" - }, - { - "key": "PG_DB", - "value": "${{ env.PR_NUMBER }}_cypress" - }, - { - "key": "ENABLE_TOOLJET_DB", - "value": "true" - }, - { - "key": "TOOLJET_DB", - "value": "${{ env.PR_NUMBER }}_cypress" - }, - { - "key": "TOOLJET_DB_HOST", - "value": "${{ secrets.RENDER_PG_HOST }}" - }, - { - "key": "TOOLJET_DB_USER", - "value": "${{ secrets.RENDER_PG_USER }}" - }, - { - "key": "TOOLJET_DB_PASS", - "value": "${{ secrets.RENDER_PG_PASS }}" - }, - { - "key": "TOOLJET_DB_PORT", - "value": "5432" - }, - { - "key": "PGRST_DB_URI", - "value": "postgres://${{ secrets.RENDER_PG_USER }}:${{ secrets.RENDER_PG_PASS }}@${{ secrets.RENDER_PG_HOST }}/${{ env.PR_NUMBER }}_cypress" - }, - { - "key": "PGRST_HOST", - "value": "127.0.0.1:3000" - }, - { - "key": "PGRST_JWT_SECRET", - "value": "r9iMKoe5CRMgvJBBtp4HrqN7QiPpUToj" - }, - { - "key": "PGRST_LOG_LEVEL", - "value": "info" - }, - { - "key": "PORT", - "value": "80" - }, - { - "key": "TOOLJET_HOST", - "value": "https://tooljet-pr-cypress-${{ env.PR_NUMBER }}.onrender.com" - }, - { - "key": "DISABLE_TOOLJET_TELEMETRY", - "value": "true" - }, - { - "key": "SMTP_ADDRESS", - "value": "smtp.mailtrap.io" - }, - { - "key": "SMTP_DOMAIN", - "value": "smtp.mailtrap.io" - }, - { - "key": "SMTP_PORT", - "value": "2525" - }, - { - "key": "SMTP_USERNAME", - "value": "${{ secrets.RENDER_SMTP_USERNAME }}" - }, - { - "key": "SMTP_PASSWORD", - "value": "${{ secrets.RENDER_SMTP_PASSWORD }}" - }, - { - "key": "ENABLE_MARKETPLACE_FEATURE", - "value": "true" - }, - { - "key": "SSO_GIT_OAUTH2_CLIENT_ID", - "value": "dummy" - }, - { - "key": "SSO_GIT_OAUTH2_CLIENT_SECRET", - "value": "dummy" - }, - { - "key": "SSO_GIT_OAUTH2_HOST", - "value": "dummy" - }, - { - "key": "SSO_GOOGLE_OAUTH2_CLIENT_ID", - "value": "dummy" - } - ], - "serviceDetails": { - "disk": null, - "env": "docker", - "envSpecificDetails": { - "dockerCommand": "", - "dockerContext": "./", - "dockerfilePath": "./docker/preview.Dockerfile" - }, - "healthCheckPath": "/api/health", - "numInstances": 1, - "openPorts": [{ - "port": 80, - "protocol": "TCP" - }], - "plan": "pro", - "pullRequestPreviewsEnabled": "no", - "region": "oregon", - "url": "https://tooljet-pr-cypress-${{ env.PR_NUMBER }}.onrender.com" - } - }') - - echo "response: $RESPONSE" - export SERVICE_ID=$(echo $RESPONSE | jq -r '.service.id') - echo "SERVICE_ID=$SERVICE_ID" >> $GITHUB_ENV - - - name: Comment deployment URL - uses: actions/github-script@v5 - with: - github-token: ${{secrets.GITHUB_TOKEN}} - script: | - github.rest.issues.createComment({ - issue_number: context.issue.number, - owner: context.repo.owner, - repo: context.repo.repo, - body: 'Deployment: https://tooljet-pr-cypress-${{ env.PR_NUMBER }}.onrender.com \n Dashboard: https://dashboard.render.com/web/${{ env.SERVICE_ID }}' - }) - - - uses: actions/github-script@v6 - with: - script: | - try { - await github.rest.issues.removeLabel({ - issue_number: context.issue.number, - owner: context.repo.owner, - repo: context.repo.repo, - name: 'create-review-cypress-app' - }) - } catch (e) { - console.log(e) - } - - await github.rest.issues.addLabels({ - issue_number: context.issue.number, - owner: context.repo.owner, - repo: context.repo.repo, - labels: ['active-review-cypress-app'] - }) - - destroy-review-cypress-app: - if: ${{ (github.event.action == 'labeled' && github.event.label.name == 'destroy-review-cypress-app') || github.event.action == 'closed' }} - runs-on: ubuntu-latest - - steps: - - name: Delete service - run: | - export SERVICE_ID=$(curl --request GET \ - --url 'https://api.render.com/v1/services?name=ToolJet%20PR%20CYPRESS%20%23${{ env.PR_NUMBER }}&limit=1' \ - --header 'accept: application/json' \ - --header 'authorization: Bearer ${{ secrets.RENDER_API_KEY }}' | \ - jq -r '.[0].service.id') - - curl --request DELETE \ - --url https://api.render.com/v1/services/$SERVICE_ID \ - --header 'accept: application/json' \ - --header 'authorization: Bearer ${{ secrets.RENDER_API_KEY }}' - - - uses: actions/github-script@v6 - with: - script: | - try { - await github.rest.issues.removeLabel({ - issue_number: context.issue.number, - owner: context.repo.owner, - repo: context.repo.repo, - name: 'destroy-review-cypress-app' - }) - } catch (e) { - console.log(e) - } - - try { - await github.rest.issues.removeLabel({ - issue_number: context.issue.number, - owner: context.repo.owner, - repo: context.repo.repo, - name: 'suspend-review-cypress-app' - }) - } catch (e) { - console.log(e) - } - - try { - await github.rest.issues.removeLabel({ - issue_number: context.issue.number, - owner: context.repo.owner, - repo: context.repo.repo, - name: 'active-review-cypress-app' - }) - } catch (e) { - console.log(e) - } - - - name: Install PostgreSQL client - run: | - sudo apt update - sudo apt install postgresql-client -y - - - name: Wait after installing PostgreSQL - run: sleep 25 - - - name: Drop PostgreSQL PR database - env: - PGHOST: ${{ secrets.RENDER_DS_PG_HOST }} - PGPORT: 5432 - PGUSER: ${{ secrets.RENDER_DS_PG_USER }} - PGDATABASE: ${{ env.PR_NUMBER }}_cypress - run: | - PGPASSWORD=${{ secrets.RENDER_DS_PG_PASS }} psql -h $PGHOST -p $PGPORT -U $PGUSER -d postgres -c "drop database \"$PGDATABASE\" ;" - - suspend-review-cypress-app: - if: ${{ github.event.action == 'labeled' && github.event.label.name == 'suspend-review-cypress-app' }} - runs-on: ubuntu-latest - - steps: - - name: Suspend service - run: | - export SERVICE_ID=$(curl --request GET \ - --url 'https://api.render.com/v1/services?name=ToolJet%20PR%20CYPRESS%20%23${{ env.PR_NUMBER }}&limit=1' \ - --header 'accept: application/json' \ - --header 'authorization: Bearer ${{ secrets.RENDER_API_KEY }}' | \ - jq -r '.[0].service.id') - - curl --request POST \ - --url https://api.render.com/v1/services/$SERVICE_ID/suspend \ - --header 'accept: application/json' \ - --header 'authorization: Bearer ${{ secrets.RENDER_API_KEY }}' - - - uses: actions/github-script@v6 - with: - script: | - try { - await github.rest.issues.removeLabel({ - issue_number: context.issue.number, - owner: context.repo.owner, - repo: context.repo.repo, - name: 'active-review-cypress-app' - }) - } catch (e) { - console.log(e) - } - - resume-review-cypress-app: - if: ${{ github.event.action == 'unlabeled' && github.event.label.name == 'suspend-review-cypress-app' }} - runs-on: ubuntu-latest - - steps: - - name: Resume service - run: | - export SERVICE_ID=$(curl --request GET \ - --url 'https://api.render.com/v1/services?name=ToolJet%20PR%20CYPRESS%20%23${{ env.PR_NUMBER }}&limit=1' \ - --header 'accept: application/json' \ - --header 'authorization: Bearer ${{ secrets.RENDER_API_KEY }}' | \ - jq -r '.[0].service.id') - - curl --request POST \ - --url https://api.render.com/v1/services/$SERVICE_ID/resume \ - --header 'accept: application/json' \ - --header 'authorization: Bearer ${{ secrets.RENDER_API_KEY }}' - - - uses: actions/github-script@v6 - with: - script: | - await github.rest.issues.addLabels({ - issue_number: context.issue.number, - owner: context.repo.owner, - repo: context.repo.repo, - labels: ['active-review-cypress-app'] - }) - - try { - await github.rest.issues.removeLabel({ - issue_number: context.issue.number, - owner: context.repo.owner, - repo: context.repo.repo, - name: 'suspend-review-cypress-app' - }) - } catch (e) { - console.log(e) - } diff --git a/.github/workflows/render-suspend-labeler-pro.yml b/.github/workflows/render-suspend-labeler-pro.yml deleted file mode 100644 index b35323aa5d..0000000000 --- a/.github/workflows/render-suspend-labeler-pro.yml +++ /dev/null @@ -1,45 +0,0 @@ -name: Label for stale render cypress app deploy -on: - workflow_dispatch: - schedule: - - cron: '0 0 * * *' - -permissions: - issues: write - -jobs: - label-stale-deploys: - runs-on: ubuntu-latest - permissions: - pull-requests: write - steps: - - uses: akshaysasidrn/stale-label-fetch@v1.1 - id: stale-label - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - stale-label: 'active-review-cypress-app' - stale-time: '86400' - type: 'pull_request' - - name: Get stale numbers - run: echo "Matched PR numbers - ${{ steps.stale-label.outputs.stale-numbers }}" - - name: Add suspend label - uses: actions/github-script@v6 - env: - STALE_NUMBERS: ${{ steps.stale-label.outputs.stale-numbers }} - with: - github-token: ${{ secrets.TJ_BOT_PAT }} - script: | - if (!process.env.STALE_NUMBERS) return - - const prNumbers = process.env.STALE_NUMBERS.split(",") - - console.log(`Adding suspend labels for: ${prNumbers}`) - - for (const prNumber of prNumbers) { - github.rest.issues.addLabels({ - issue_number: prNumber, - owner: context.repo.owner, - repo: context.repo.repo, - labels: ['suspend-review-cypress-app'] - }) - } From 89ca19fcf9e34f024437fb37ffba6f8134d5bc68 Mon Sep 17 00:00:00 2001 From: Shubhendra Singh Chauhan Date: Mon, 16 Oct 2023 12:01:35 +0530 Subject: [PATCH 25/67] Updated CONTRIBUTING.md (#7887) --- CONTRIBUTING.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 786388589d..d5e9f4f00f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -17,10 +17,9 @@ We use GitHub to host code, to track issues and feature requests, as well as acc ## First-time contributors We've tagged some issues to make it easy to get started :smile: -[Good first issues](https://github.com/ToolJet/ToolJet/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) -Looking for ReactJS issues? Check out our [Frontend issues](https://github.com/ToolJet/ToolJet/issues?q=is%3Aissue+is%3Aopen+label%3Afrontend) +[Good first issues](https://github.com/ToolJet/ToolJet/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) -Add a comment on the issue and wait for the issue to be assigned before you start working on it. This helps to avoid multiple people working on similar issues. +If you're interested in working on an issue, make sure it has either a `good-first-issue` or `up-for-grabs` label added. Add a comment on the issue and wait for the issue to be assigned before you start working on it. This helps to avoid multiple people working on similar issues. ## We Use [GitHub Flow](https://docs.github.com/en/get-started/quickstart/github-flow), So All Code Changes Happen Through Pull Requests Pull requests are the best way to propose changes to the codebase (we use [Git-Flow](https://nvie.com/posts/a-successful-git-branching-model/)). We actively welcome your pull requests: From 2611db85213aa2ce0523911af370ae27e772200c Mon Sep 17 00:00:00 2001 From: Muhsin Shah C P Date: Mon, 16 Oct 2023 16:37:07 +0530 Subject: [PATCH 26/67] fix: failed library e2e test cases (#7891) --- server/test/controllers/library_apps.e2e-spec.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/test/controllers/library_apps.e2e-spec.ts b/server/test/controllers/library_apps.e2e-spec.ts index 12bb5cdefd..64573b145a 100644 --- a/server/test/controllers/library_apps.e2e-spec.ts +++ b/server/test/controllers/library_apps.e2e-spec.ts @@ -42,12 +42,12 @@ describe('library apps controller', () => { response = await request(app.getHttpServer()) .post('/api/library_apps') - .send({ identifier: 'supply-chain-management' }) + .send({ identifier: 'github-contributors' }) .set('tj-workspace-id', adminUserData.user.defaultOrganizationId) .set('Cookie', adminUserData['tokenCookie']); expect(response.statusCode).toBe(201); - expect(response.body.app[0].name).toContain('Supply Chain Management'); + expect(response.body.app[0].name).toContain('GitHub Contributor Leaderboard'); }); it('should return error if template identifier is not found', async () => { From 78b7136924e875f7a201f0814698dd898e4e63bf Mon Sep 17 00:00:00 2001 From: Adish M Date: Mon, 16 Oct 2023 17:19:37 +0530 Subject: [PATCH 27/67] docs pr app --- .github/workflows/docs-pr-app.yml | 237 ++++++++++++++++++++++++++++++ docs/previewpr.Dockerfile | 27 ++++ 2 files changed, 264 insertions(+) create mode 100644 .github/workflows/docs-pr-app.yml create mode 100644 docs/previewpr.Dockerfile diff --git a/.github/workflows/docs-pr-app.yml b/.github/workflows/docs-pr-app.yml new file mode 100644 index 0000000000..c770107d65 --- /dev/null +++ b/.github/workflows/docs-pr-app.yml @@ -0,0 +1,237 @@ +name: Render docs review deploy +on: + pull_request_target: + types: [labeled, unlabeled, closed] +env: + PR_NUMBER: ${{ github.event.number }} + BRANCH_NAME: ${{ github.head_ref || github.ref_name }} + +permissions: + pull-requests: write + issues: write + +jobs: + create-docs-app: + if: ${{ github.event.action == 'labeled' && github.event.label.name == 'create-docs-app' }} + runs-on: ubuntu-latest + + steps: + - name: Create deployment + id: create-deployment + run: | + export RESPONSE=$(curl --request POST \ + --url https://api.render.com/v1/services \ + --header 'accept: application/json' \ + --header 'content-type: application/json' \ + --header 'Authorization: Bearer ${{ secrets.RENDER_API_KEY }}' \ + --data ' + { + "autoDeploy": "yes", + "branch": "develop", + "name": "ToolJet PR #12", + "notifyOnFail": "default", + "ownerId": "tea-caeo4bj19n072h3dddc0", + "repo": "${{ github.event.pull_request.head.repo.git_url }}", + "slug": "tooljet-pr-${{ env.PR_NUMBER }}", + "suspended": "not_suspended", + "suspenders": [], + "type": "static_site", + "rootDir": "/docs", + "envVars": [ + { + "key": "NODE_ENV", + "value": "production" + }, + "serviceDetails": { + "buildCommand": "npm run build", + "publishPath": "build", + "openPorts": [{ + "port": 3000, + "protocol": "TCP" + }], + "pullRequestPreviewsEnabled": "no", + "url": "https://tooljet-pr-${{ env.PR_NUMBER }}.onrender.com", + "buildEnvironment": { + "nodeVersion": "16.14.2" + } + } + }') + + echo "response: $RESPONSE" + export SERVICE_ID=$(echo $RESPONSE | jq -r '.service.id') + echo "SERVICE_ID=$SERVICE_ID" >> $GITHUB_ENV + + - name: Comment deployment URL + uses: actions/github-script@v5 + with: + github-token: ${{secrets.GITHUB_TOKEN}} + script: | + github.rest.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: 'Deployment: https://tooljet-pr-${{ env.PR_NUMBER }}.onrender.com \n Dashboard: https://dashboard.render.com/web/${{ env.SERVICE_ID }}' + }) + + - uses: actions/github-script@v6 + with: + script: | + try { + await github.rest.issues.removeLabel({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + name: 'create-review-app' + }) + } catch (e) { + console.log(e) + } + + await github.rest.issues.addLabels({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + labels: ['active-review-app'] + }) + + destroy-docs-app: + if: ${{ (github.event.action == 'labeled' && github.event.label.name == 'destroy-docs-app') || github.event.action == 'closed' }} + runs-on: ubuntu-latest + + steps: + - name: Delete service + run: | + export SERVICE_ID=$(curl --request GET \ + --url 'https://api.render.com/v1/services?name=ToolJet%20PR%20%23${{ env.PR_NUMBER }}&limit=1' \ + --header 'accept: application/json' \ + --header 'authorization: Bearer ${{ secrets.RENDER_API_KEY }}' | \ + jq -r '.[0].service.id') + + curl --request DELETE \ + --url https://api.render.com/v1/services/$SERVICE_ID \ + --header 'accept: application/json' \ + --header 'authorization: Bearer ${{ secrets.RENDER_API_KEY }}' + + - uses: actions/github-script@v6 + with: + script: | + try { + await github.rest.issues.removeLabel({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + name: 'destroy-review-app' + }) + } catch (e) { + console.log(e) + } + + try { + await github.rest.issues.removeLabel({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + name: 'suspend-review-app' + }) + } catch (e) { + console.log(e) + } + + try { + await github.rest.issues.removeLabel({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + name: 'active-review-app' + }) + } catch (e) { + console.log(e) + } + + - name: Install PostgreSQL client + run: | + sudo apt update + sudo apt install postgresql-client -y + + - name: Wait after installing PostgreSQL + run: sleep 25 + + - name: Drop PostgreSQL PR database + env: + PGHOST: ${{ secrets.RENDER_DS_PG_HOST }} + PGPORT: 5432 + PGUSER: ${{ secrets.RENDER_DS_PG_USER }} + PGDATABASE: ${{ env.PR_NUMBER }} + run: | + PGPASSWORD=${{ secrets.RENDER_DS_PG_PASS }} psql -h $PGHOST -p $PGPORT -U $PGUSER -d postgres -c "drop database \"$PGDATABASE\" ;" + + suspend-docs-app: + if: ${{ github.event.action == 'labeled' && github.event.label.name == 'suspend-docs-app' }} + runs-on: ubuntu-latest + + steps: + - name: Suspend service + run: | + export SERVICE_ID=$(curl --request GET \ + --url 'https://api.render.com/v1/services?name=ToolJet%20PR%20%23${{ env.PR_NUMBER }}&limit=1' \ + --header 'accept: application/json' \ + --header 'authorization: Bearer ${{ secrets.RENDER_API_KEY }}' | \ + jq -r '.[0].service.id') + + curl --request POST \ + --url https://api.render.com/v1/services/$SERVICE_ID/suspend \ + --header 'accept: application/json' \ + --header 'authorization: Bearer ${{ secrets.RENDER_API_KEY }}' + + - uses: actions/github-script@v6 + with: + script: | + try { + await github.rest.issues.removeLabel({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + name: 'active-review-app' + }) + } catch (e) { + console.log(e) + } + + resume-docs-app: + if: ${{ github.event.action == 'unlabeled' && github.event.label.name == 'suspend-docs-app' }} + runs-on: ubuntu-latest + + steps: + - name: Resume service + run: | + export SERVICE_ID=$(curl --request GET \ + --url 'https://api.render.com/v1/services?name=ToolJet%20PR%20%23${{ env.PR_NUMBER }}&limit=1' \ + --header 'accept: application/json' \ + --header 'authorization: Bearer ${{ secrets.RENDER_API_KEY }}' | \ + jq -r '.[0].service.id') + + curl --request POST \ + --url https://api.render.com/v1/services/$SERVICE_ID/resume \ + --header 'accept: application/json' \ + --header 'authorization: Bearer ${{ secrets.RENDER_API_KEY }}' + + - uses: actions/github-script@v6 + with: + script: | + await github.rest.issues.addLabels({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + labels: ['active-review-app'] + }) + + try { + await github.rest.issues.removeLabel({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + name: 'suspend-review-app' + }) + } catch (e) { + console.log(e) + } diff --git a/docs/previewpr.Dockerfile b/docs/previewpr.Dockerfile new file mode 100644 index 0000000000..b9bf52e4af --- /dev/null +++ b/docs/previewpr.Dockerfile @@ -0,0 +1,27 @@ +# Use the official Node.js image as the base image +FROM node:16.14 + +# Fix for JS heap limit allocation issue +ENV NODE_OPTIONS="--max-old-space-size=4096" + +# Create a working directory for the app +WORKDIR /app + +# Copy your Docusaurus project files into the container +COPY package*.json ./ +COPY docs ./docs +COPY src ./src +COPY static ./static +COPY versioned_docs ./versioned_docs +COPY versioned_sidebars ./versioned_sidebars +COPY babel.config.js ./ +COPY docusaurus.config.js ./ +COPY sidebars.js ./ +COPY versions.json ./ +COPY yarn.lock ./ + +# Install project dependencies +RUN npm install + +# Start the application using npm start +CMD ["npm", "start"] From 67666498d75532134eeea9c243f87bacff7eb0de Mon Sep 17 00:00:00 2001 From: Adish M Date: Mon, 16 Oct 2023 17:26:11 +0530 Subject: [PATCH 28/67] removed yarn.lock from dockerfile --- docs/previewpr.Dockerfile | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/previewpr.Dockerfile b/docs/previewpr.Dockerfile index b9bf52e4af..1491d316ad 100644 --- a/docs/previewpr.Dockerfile +++ b/docs/previewpr.Dockerfile @@ -18,7 +18,6 @@ COPY babel.config.js ./ COPY docusaurus.config.js ./ COPY sidebars.js ./ COPY versions.json ./ -COPY yarn.lock ./ # Install project dependencies RUN npm install From 19cc4dbdc148306b8466014ec98bb4fc6473e031 Mon Sep 17 00:00:00 2001 From: Manish Kushare <37823141+manishkushare@users.noreply.github.com> Date: Mon, 16 Oct 2023 17:45:22 +0530 Subject: [PATCH 29/67] When pagination is disabled setting page size equal to rows length in table component (#7859) * bug fixed * bump verion to 2.20.2 --- .version | 2 +- frontend/.version | 2 +- frontend/src/Editor/Components/Table/Table.jsx | 2 ++ server/.version | 2 +- 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.version b/.version index 4e2200b98e..83ecbf1d7a 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -2.20.1 +2.20.2 diff --git a/frontend/.version b/frontend/.version index 4e2200b98e..83ecbf1d7a 100644 --- a/frontend/.version +++ b/frontend/.version @@ -1 +1 @@ -2.20.1 +2.20.2 diff --git a/frontend/src/Editor/Components/Table/Table.jsx b/frontend/src/Editor/Components/Table/Table.jsx index 36e9a82c65..48854b1492 100644 --- a/frontend/src/Editor/Components/Table/Table.jsx +++ b/frontend/src/Editor/Components/Table/Table.jsx @@ -752,6 +752,8 @@ export function Table({ if (!serverSidePagination && clientSidePagination) { setPageSize(rowsPerPage || 10); } + } else { + setPageSize(rows?.length || 10); } }, [clientSidePagination, serverSidePagination, rows, rowsPerPage]); useEffect(() => { diff --git a/server/.version b/server/.version index 4e2200b98e..83ecbf1d7a 100644 --- a/server/.version +++ b/server/.version @@ -1 +1 @@ -2.20.1 +2.20.2 From 51efe360c01c1bb37f4558314d3a0bea21c9b9c1 Mon Sep 17 00:00:00 2001 From: Adish M Date: Mon, 16 Oct 2023 19:50:39 +0530 Subject: [PATCH 30/67] build error fixed --- .github/workflows/docs-pr-app.yml | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/.github/workflows/docs-pr-app.yml b/.github/workflows/docs-pr-app.yml index c770107d65..5e2ba5cdf0 100644 --- a/.github/workflows/docs-pr-app.yml +++ b/.github/workflows/docs-pr-app.yml @@ -41,19 +41,28 @@ jobs: { "key": "NODE_ENV", "value": "production" - }, + }, + { + "key": "NODE_VERSION" + "value": "16.18.1." + }, + { + "key": "NPM_VERSION" + "value": "8.19.2" + }, + { + "key": "GA_MID" + "value": "dummy" + } "serviceDetails": { - "buildCommand": "npm run build", - "publishPath": "build", + "buildCommand": "npm i; npm run build", + "publishPath": "/build", "openPorts": [{ "port": 3000, "protocol": "TCP" }], "pullRequestPreviewsEnabled": "no", "url": "https://tooljet-pr-${{ env.PR_NUMBER }}.onrender.com", - "buildEnvironment": { - "nodeVersion": "16.14.2" - } } }') From 95b6871ad416ff19b2e472d7a6ff92a58378bf08 Mon Sep 17 00:00:00 2001 From: Adish M Date: Mon, 16 Oct 2023 20:48:25 +0530 Subject: [PATCH 31/67] corrections --- .github/workflows/docs-pr-app.yml | 45 +++++++++++++------------------ 1 file changed, 19 insertions(+), 26 deletions(-) diff --git a/.github/workflows/docs-pr-app.yml b/.github/workflows/docs-pr-app.yml index 5e2ba5cdf0..7b94b99fc4 100644 --- a/.github/workflows/docs-pr-app.yml +++ b/.github/workflows/docs-pr-app.yml @@ -1,4 +1,4 @@ -name: Render docs review deploy +name: Render review deploy on: pull_request_target: types: [labeled, unlabeled, closed] @@ -11,8 +11,8 @@ permissions: issues: write jobs: - create-docs-app: - if: ${{ github.event.action == 'labeled' && github.event.label.name == 'create-docs-app' }} + create-review-app: + if: ${{ github.event.action == 'labeled' && github.event.label.name == 'create-review-app' }} runs-on: ubuntu-latest steps: @@ -27,8 +27,8 @@ jobs: --data ' { "autoDeploy": "yes", - "branch": "develop", - "name": "ToolJet PR #12", + "branch": "${{ env.BRANCH_NAME }}", + "name": "ToolJet PR #${{ env.PR_NUMBER }}", "notifyOnFail": "default", "ownerId": "tea-caeo4bj19n072h3dddc0", "repo": "${{ github.event.pull_request.head.repo.git_url }}", @@ -36,34 +36,27 @@ jobs: "suspended": "not_suspended", "suspenders": [], "type": "static_site", - "rootDir": "/docs", + "rootDir": "docs", "envVars": [ { "key": "NODE_ENV", "value": "production" }, { - "key": "NODE_VERSION" - "value": "16.18.1." + "key": "NODE_VERSION", + "value": "16.18.1" }, { - "key": "NPM_VERSION" + "key": "ENABLE_MARKETPLACE_FEATURE", "value": "8.19.2" - }, - { - "key": "GA_MID" - "value": "dummy" - } + } + ], "serviceDetails": { "buildCommand": "npm i; npm run build", "publishPath": "/build", - "openPorts": [{ - "port": 3000, - "protocol": "TCP" - }], "pullRequestPreviewsEnabled": "no", - "url": "https://tooljet-pr-${{ env.PR_NUMBER }}.onrender.com", - } + "url": "https://tooljet-pr-${{ env.PR_NUMBER }}.onrender.com" + } }') echo "response: $RESPONSE" @@ -103,8 +96,8 @@ jobs: labels: ['active-review-app'] }) - destroy-docs-app: - if: ${{ (github.event.action == 'labeled' && github.event.label.name == 'destroy-docs-app') || github.event.action == 'closed' }} + destroy-review-app: + if: ${{ (github.event.action == 'labeled' && github.event.label.name == 'destroy-review-app') || github.event.action == 'closed' }} runs-on: ubuntu-latest steps: @@ -174,8 +167,8 @@ jobs: run: | PGPASSWORD=${{ secrets.RENDER_DS_PG_PASS }} psql -h $PGHOST -p $PGPORT -U $PGUSER -d postgres -c "drop database \"$PGDATABASE\" ;" - suspend-docs-app: - if: ${{ github.event.action == 'labeled' && github.event.label.name == 'suspend-docs-app' }} + suspend-review-app: + if: ${{ github.event.action == 'labeled' && github.event.label.name == 'suspend-review-app' }} runs-on: ubuntu-latest steps: @@ -206,8 +199,8 @@ jobs: console.log(e) } - resume-docs-app: - if: ${{ github.event.action == 'unlabeled' && github.event.label.name == 'suspend-docs-app' }} + resume-review-app: + if: ${{ github.event.action == 'unlabeled' && github.event.label.name == 'suspend-review-app' }} runs-on: ubuntu-latest steps: From 0bb19d518efb5dc7db99a4a00d36c83a05a963ab Mon Sep 17 00:00:00 2001 From: Adish M Date: Mon, 16 Oct 2023 20:53:58 +0530 Subject: [PATCH 32/67] adding stale workflow --- .github/workflows/docs-pr-app.yml | 34 +++++++------- .github/workflows/stale-PR-render-deploys.yml | 45 +++++++++++++++++++ 2 files changed, 62 insertions(+), 17 deletions(-) create mode 100644 .github/workflows/stale-PR-render-deploys.yml diff --git a/.github/workflows/docs-pr-app.yml b/.github/workflows/docs-pr-app.yml index 7b94b99fc4..18bbef4de1 100644 --- a/.github/workflows/docs-pr-app.yml +++ b/.github/workflows/docs-pr-app.yml @@ -1,4 +1,4 @@ -name: Render review deploy +name: Render PR deploy on: pull_request_target: types: [labeled, unlabeled, closed] @@ -11,8 +11,8 @@ permissions: issues: write jobs: - create-review-app: - if: ${{ github.event.action == 'labeled' && github.event.label.name == 'create-review-app' }} + create-review-pr-app: + if: ${{ github.event.action == 'labeled' && github.event.label.name == 'create-review-pr-app' }} runs-on: ubuntu-latest steps: @@ -83,7 +83,7 @@ jobs: issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, - name: 'create-review-app' + name: 'create-review-pr-app' }) } catch (e) { console.log(e) @@ -93,11 +93,11 @@ jobs: issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, - labels: ['active-review-app'] + labels: ['active-review-pr-app'] }) - destroy-review-app: - if: ${{ (github.event.action == 'labeled' && github.event.label.name == 'destroy-review-app') || github.event.action == 'closed' }} + destroy-review-pr-app: + if: ${{ (github.event.action == 'labeled' && github.event.label.name == 'destroy-review-pr-app') || github.event.action == 'closed' }} runs-on: ubuntu-latest steps: @@ -122,7 +122,7 @@ jobs: issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, - name: 'destroy-review-app' + name: 'destroy-review-pr-app' }) } catch (e) { console.log(e) @@ -133,7 +133,7 @@ jobs: issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, - name: 'suspend-review-app' + name: 'suspend-review-pr-app' }) } catch (e) { console.log(e) @@ -144,7 +144,7 @@ jobs: issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, - name: 'active-review-app' + name: 'active-review-pr-app' }) } catch (e) { console.log(e) @@ -167,8 +167,8 @@ jobs: run: | PGPASSWORD=${{ secrets.RENDER_DS_PG_PASS }} psql -h $PGHOST -p $PGPORT -U $PGUSER -d postgres -c "drop database \"$PGDATABASE\" ;" - suspend-review-app: - if: ${{ github.event.action == 'labeled' && github.event.label.name == 'suspend-review-app' }} + suspend-review-pr-app: + if: ${{ github.event.action == 'labeled' && github.event.label.name == 'suspend-review-pr-app' }} runs-on: ubuntu-latest steps: @@ -193,14 +193,14 @@ jobs: issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, - name: 'active-review-app' + name: 'active-review-pr-app' }) } catch (e) { console.log(e) } - resume-review-app: - if: ${{ github.event.action == 'unlabeled' && github.event.label.name == 'suspend-review-app' }} + resume-review-pr-app: + if: ${{ github.event.action == 'unlabeled' && github.event.label.name == 'suspend-review-pr-app' }} runs-on: ubuntu-latest steps: @@ -224,7 +224,7 @@ jobs: issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, - labels: ['active-review-app'] + labels: ['active-review-pr-app'] }) try { @@ -232,7 +232,7 @@ jobs: issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, - name: 'suspend-review-app' + name: 'suspend-review-pr-app' }) } catch (e) { console.log(e) diff --git a/.github/workflows/stale-PR-render-deploys.yml b/.github/workflows/stale-PR-render-deploys.yml new file mode 100644 index 0000000000..f9be11032f --- /dev/null +++ b/.github/workflows/stale-PR-render-deploys.yml @@ -0,0 +1,45 @@ +name: Label for stale PR render deploys +on: + workflow_dispatch: + schedule: + - cron: "0 0 * * *" + +permissions: + issues: write + +jobs: + label-stale-deploys: + runs-on: ubuntu-latest + permissions: + pull-requests: write + steps: + - uses: akshaysasidrn/stale-label-fetch@v1.1 + id: stale-label + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + stale-label: "active-review-pr-app" + stale-time: "86400" + type: "pull_request" + - name: Get stale numbers + run: echo "Matched PR numbers - ${{ steps.stale-label.outputs.stale-numbers }}" + - name: Add suspend label + uses: actions/github-script@v6 + env: + STALE_NUMBERS: ${{ steps.stale-label.outputs.stale-numbers }} + with: + github-token: ${{ secrets.TJ_BOT_PAT }} + script: | + if (!process.env.STALE_NUMBERS) return + + const prNumbers = process.env.STALE_NUMBERS.split(",") + + console.log(`Adding suspend labels for: ${prNumbers}`) + + for (const prNumber of prNumbers) { + github.rest.issues.addLabels({ + issue_number: prNumber, + owner: context.repo.owner, + repo: context.repo.repo, + labels: ['suspend-review-pr-app'] + }) + } From fe71e88b721a378c78cd56f3253f68d9f4255e84 Mon Sep 17 00:00:00 2001 From: Adish M Date: Mon, 16 Oct 2023 20:55:18 +0530 Subject: [PATCH 33/67] removed dockerfile --- docs/previewpr.Dockerfile | 26 -------------------------- 1 file changed, 26 deletions(-) delete mode 100644 docs/previewpr.Dockerfile diff --git a/docs/previewpr.Dockerfile b/docs/previewpr.Dockerfile deleted file mode 100644 index 1491d316ad..0000000000 --- a/docs/previewpr.Dockerfile +++ /dev/null @@ -1,26 +0,0 @@ -# Use the official Node.js image as the base image -FROM node:16.14 - -# Fix for JS heap limit allocation issue -ENV NODE_OPTIONS="--max-old-space-size=4096" - -# Create a working directory for the app -WORKDIR /app - -# Copy your Docusaurus project files into the container -COPY package*.json ./ -COPY docs ./docs -COPY src ./src -COPY static ./static -COPY versioned_docs ./versioned_docs -COPY versioned_sidebars ./versioned_sidebars -COPY babel.config.js ./ -COPY docusaurus.config.js ./ -COPY sidebars.js ./ -COPY versions.json ./ - -# Install project dependencies -RUN npm install - -# Start the application using npm start -CMD ["npm", "start"] From f8db1c5048d687f2d187b8542d28713d4f6f5cec Mon Sep 17 00:00:00 2001 From: Adish M Date: Mon, 16 Oct 2023 21:06:16 +0530 Subject: [PATCH 34/67] dashboard url fix --- .github/workflows/docs-pr-app.yml | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/.github/workflows/docs-pr-app.yml b/.github/workflows/docs-pr-app.yml index 18bbef4de1..59a2bf7cb8 100644 --- a/.github/workflows/docs-pr-app.yml +++ b/.github/workflows/docs-pr-app.yml @@ -72,7 +72,7 @@ jobs: issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, - body: 'Deployment: https://tooljet-pr-${{ env.PR_NUMBER }}.onrender.com \n Dashboard: https://dashboard.render.com/web/${{ env.SERVICE_ID }}' + body: 'Deployment: https://tooljet-pr-${{ env.PR_NUMBER }}.onrender.com \n Dashboard: https://dashboard.render.com/static/${{ env.SERVICE_ID }}' }) - uses: actions/github-script@v6 @@ -150,23 +150,6 @@ jobs: console.log(e) } - - name: Install PostgreSQL client - run: | - sudo apt update - sudo apt install postgresql-client -y - - - name: Wait after installing PostgreSQL - run: sleep 25 - - - name: Drop PostgreSQL PR database - env: - PGHOST: ${{ secrets.RENDER_DS_PG_HOST }} - PGPORT: 5432 - PGUSER: ${{ secrets.RENDER_DS_PG_USER }} - PGDATABASE: ${{ env.PR_NUMBER }} - run: | - PGPASSWORD=${{ secrets.RENDER_DS_PG_PASS }} psql -h $PGHOST -p $PGPORT -U $PGUSER -d postgres -c "drop database \"$PGDATABASE\" ;" - suspend-review-pr-app: if: ${{ github.event.action == 'labeled' && github.event.label.name == 'suspend-review-pr-app' }} runs-on: ubuntu-latest From c71708e70d8c43eedde7bd33046ec1ce48f59d58 Mon Sep 17 00:00:00 2001 From: Adish M Date: Tue, 17 Oct 2023 09:56:03 +0530 Subject: [PATCH 35/67] npm version fix --- .github/workflows/docs-pr-app.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docs-pr-app.yml b/.github/workflows/docs-pr-app.yml index 59a2bf7cb8..4b55e306f8 100644 --- a/.github/workflows/docs-pr-app.yml +++ b/.github/workflows/docs-pr-app.yml @@ -47,7 +47,7 @@ jobs: "value": "16.18.1" }, { - "key": "ENABLE_MARKETPLACE_FEATURE", + "key": "NPM_VERSION", "value": "8.19.2" } ], From 5c8ad8afcc05a59aa85be2be3ff1fa3f3768d82a Mon Sep 17 00:00:00 2001 From: Adish M Date: Tue, 17 Oct 2023 11:28:14 +0530 Subject: [PATCH 36/67] fix curl command --- .github/workflows/docs-pr-app.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/docs-pr-app.yml b/.github/workflows/docs-pr-app.yml index 4b55e306f8..0cc16fcb7d 100644 --- a/.github/workflows/docs-pr-app.yml +++ b/.github/workflows/docs-pr-app.yml @@ -26,16 +26,12 @@ jobs: --header 'Authorization: Bearer ${{ secrets.RENDER_API_KEY }}' \ --data ' { + "type": "static_site", "autoDeploy": "yes", "branch": "${{ env.BRANCH_NAME }}", "name": "ToolJet PR #${{ env.PR_NUMBER }}", - "notifyOnFail": "default", "ownerId": "tea-caeo4bj19n072h3dddc0", "repo": "${{ github.event.pull_request.head.repo.git_url }}", - "slug": "tooljet-pr-${{ env.PR_NUMBER }}", - "suspended": "not_suspended", - "suspenders": [], - "type": "static_site", "rootDir": "docs", "envVars": [ { @@ -49,12 +45,16 @@ jobs: { "key": "NPM_VERSION", "value": "8.19.2" + }, + { + "key": "GA_MID", + "value": "dummy" } ], "serviceDetails": { - "buildCommand": "npm i; npm run build", - "publishPath": "/build", "pullRequestPreviewsEnabled": "no", + "buildCommand": "npm i && npm run build", + "publishPath": "build/", "url": "https://tooljet-pr-${{ env.PR_NUMBER }}.onrender.com" } }') From 9135a071e84a7387ad7ccac9cd6c776b990c0586 Mon Sep 17 00:00:00 2001 From: Adish M Date: Tue, 17 Oct 2023 11:37:02 +0530 Subject: [PATCH 37/67] changed the label name --- .github/workflows/docs-pr-app.yml | 32 +++++++++---------- ...s.yml => stale-docs-pr-render-deploys.yml} | 6 ++-- 2 files changed, 19 insertions(+), 19 deletions(-) rename .github/workflows/{stale-PR-render-deploys.yml => stale-docs-pr-render-deploys.yml} (89%) diff --git a/.github/workflows/docs-pr-app.yml b/.github/workflows/docs-pr-app.yml index 0cc16fcb7d..69ef9a9306 100644 --- a/.github/workflows/docs-pr-app.yml +++ b/.github/workflows/docs-pr-app.yml @@ -11,8 +11,8 @@ permissions: issues: write jobs: - create-review-pr-app: - if: ${{ github.event.action == 'labeled' && github.event.label.name == 'create-review-pr-app' }} + create-review-docs-app: + if: ${{ github.event.action == 'labeled' && github.event.label.name == 'create-review-docs-app' }} runs-on: ubuntu-latest steps: @@ -83,7 +83,7 @@ jobs: issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, - name: 'create-review-pr-app' + name: 'create-review-docs-app' }) } catch (e) { console.log(e) @@ -93,11 +93,11 @@ jobs: issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, - labels: ['active-review-pr-app'] + labels: ['active-review-docs-app'] }) - destroy-review-pr-app: - if: ${{ (github.event.action == 'labeled' && github.event.label.name == 'destroy-review-pr-app') || github.event.action == 'closed' }} + destroy-review-docs-app: + if: ${{ (github.event.action == 'labeled' && github.event.label.name == 'destroy-review-docs-app') || github.event.action == 'closed' }} runs-on: ubuntu-latest steps: @@ -122,7 +122,7 @@ jobs: issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, - name: 'destroy-review-pr-app' + name: 'destroy-review-docs-app' }) } catch (e) { console.log(e) @@ -133,7 +133,7 @@ jobs: issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, - name: 'suspend-review-pr-app' + name: 'suspend-review-docs-app' }) } catch (e) { console.log(e) @@ -144,14 +144,14 @@ jobs: issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, - name: 'active-review-pr-app' + name: 'active-review-docs-app' }) } catch (e) { console.log(e) } - suspend-review-pr-app: - if: ${{ github.event.action == 'labeled' && github.event.label.name == 'suspend-review-pr-app' }} + suspend-review-docs-app: + if: ${{ github.event.action == 'labeled' && github.event.label.name == 'suspend-review-docs-app' }} runs-on: ubuntu-latest steps: @@ -176,14 +176,14 @@ jobs: issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, - name: 'active-review-pr-app' + name: 'active-review-docs-app' }) } catch (e) { console.log(e) } - resume-review-pr-app: - if: ${{ github.event.action == 'unlabeled' && github.event.label.name == 'suspend-review-pr-app' }} + resume-review-docs-app: + if: ${{ github.event.action == 'unlabeled' && github.event.label.name == 'suspend-review-docs-app' }} runs-on: ubuntu-latest steps: @@ -207,7 +207,7 @@ jobs: issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, - labels: ['active-review-pr-app'] + labels: ['active-review-docs-app'] }) try { @@ -215,7 +215,7 @@ jobs: issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, - name: 'suspend-review-pr-app' + name: 'suspend-review-docs-app' }) } catch (e) { console.log(e) diff --git a/.github/workflows/stale-PR-render-deploys.yml b/.github/workflows/stale-docs-pr-render-deploys.yml similarity index 89% rename from .github/workflows/stale-PR-render-deploys.yml rename to .github/workflows/stale-docs-pr-render-deploys.yml index f9be11032f..a8cb4f2a7b 100644 --- a/.github/workflows/stale-PR-render-deploys.yml +++ b/.github/workflows/stale-docs-pr-render-deploys.yml @@ -1,4 +1,4 @@ -name: Label for stale PR render deploys +name: Label for stale Docs PR render deploys on: workflow_dispatch: schedule: @@ -17,7 +17,7 @@ jobs: id: stale-label with: github-token: ${{ secrets.GITHUB_TOKEN }} - stale-label: "active-review-pr-app" + stale-label: "active-review-docs-app" stale-time: "86400" type: "pull_request" - name: Get stale numbers @@ -40,6 +40,6 @@ jobs: issue_number: prNumber, owner: context.repo.owner, repo: context.repo.repo, - labels: ['suspend-review-pr-app'] + labels: ['suspend-review-docs-app'] }) } From 522bab99cdd3a7c95da4f9ce3e20ef7d981029ff Mon Sep 17 00:00:00 2001 From: gsmithun4 Date: Tue, 17 Oct 2023 12:44:28 +0530 Subject: [PATCH 38/67] bump version --- .version | 2 +- frontend/.version | 2 +- server/.version | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.version b/.version index 83ecbf1d7a..db65e2167e 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -2.20.2 +2.21.0 diff --git a/frontend/.version b/frontend/.version index 83ecbf1d7a..db65e2167e 100644 --- a/frontend/.version +++ b/frontend/.version @@ -1 +1 @@ -2.20.2 +2.21.0 diff --git a/server/.version b/server/.version index 83ecbf1d7a..db65e2167e 100644 --- a/server/.version +++ b/server/.version @@ -1 +1 @@ -2.20.2 +2.21.0 From 03e3fd950b02d62d3b6340beab30b2aa45959d82 Mon Sep 17 00:00:00 2001 From: Anantshree Chandola Date: Tue, 17 Oct 2023 13:18:18 +0530 Subject: [PATCH 39/67] New Improved App creation flow (#7209) * App creation flow * Add separate footer and divider * added create app dto, updated tests * update test * Update server/src/dto/app-create.dto.ts Co-authored-by: Midhun G S * Update server/src/dto/app-create.dto.ts Co-authored-by: Midhun G S * updates * Removed comments * small updates * rename app flow * Import App, Create App From Template, Clone App (BE+FE) * Edit app updates * remove comments * updates * updates * styling updates * handle spaces in app name * update * styling updates * Update permissions * updates * don't show toast failure message * Update frontend/src/Editor/Header/EditAppName.jsx Co-authored-by: Muhsin Shah C P * styling updates * Update server/src/controllers/app_import_export.controller.ts Co-authored-by: Muhsin Shah C P * remove comments * remove comments and small corrections * removed logs and deleted unwanted files * correct lint error * resolve failing tests + handled trimmed app names * resolve failing tests + handle trimmed app names * updates * duplicate imports removed * updates * Rebase corrections and updates * update * resolve failing e2e test * fix error * fix * length fix * fix --------- Co-authored-by: Midhun G S Co-authored-by: Muhsin Shah C P --- frontend/src/Editor/Header/EditAppName.jsx | 137 ++++++-- frontend/src/Editor/Header/InfoOrErrorBox.jsx | 38 +++ frontend/src/HomePage/AppCard.jsx | 8 +- frontend/src/HomePage/AppMenu.jsx | 12 +- frontend/src/HomePage/BlankPage.jsx | 44 +-- frontend/src/HomePage/HomePage.jsx | 298 +++++++++++++----- frontend/src/HomePage/Modal.jsx | 8 +- .../TemplateLibraryModal.jsx | 36 +-- frontend/src/_components/AppModal.jsx | 187 +++++++++++ frontend/src/_components/index.js | 1 + frontend/src/_helpers/utils.js | 16 + frontend/src/_services/app.service.js | 18 +- frontend/src/_services/library-app.service.js | 3 +- frontend/src/_styles/theme.scss | 13 + .../app_import_export.controller.ts | 6 +- server/src/controllers/apps.controller.ts | 15 +- .../controllers/library_apps.controller.ts | 7 +- server/src/dto/app-clone.dto.ts | 8 + server/src/dto/app-create.dto.ts | 12 + server/src/dto/app-import.dto.ts | 11 + server/src/dto/import-resources.dto.ts | 3 + .../src/services/app_import_export.service.ts | 36 ++- server/src/services/apps.service.ts | 71 ++--- .../import_export_resources.service.ts | 3 +- .../services/library_app_creation.service.ts | 4 +- server/test/controllers/apps.e2e-spec.ts | 34 +- .../test/controllers/library_apps.e2e-spec.ts | 4 +- .../app_import_export.service.spec.ts | 10 +- 28 files changed, 793 insertions(+), 250 deletions(-) create mode 100644 frontend/src/Editor/Header/InfoOrErrorBox.jsx create mode 100644 frontend/src/_components/AppModal.jsx create mode 100644 server/src/dto/app-clone.dto.ts create mode 100644 server/src/dto/app-create.dto.ts create mode 100644 server/src/dto/app-import.dto.ts diff --git a/frontend/src/Editor/Header/EditAppName.jsx b/frontend/src/Editor/Header/EditAppName.jsx index 35400201e9..4ece167329 100644 --- a/frontend/src/Editor/Header/EditAppName.jsx +++ b/frontend/src/Editor/Header/EditAppName.jsx @@ -1,57 +1,132 @@ -import React from 'react'; +import React, { useRef, useEffect, useState } from 'react'; import { ToolTip } from '@/_components'; import { appService } from '@/_services'; -import { handleHttpErrorMessages, validateName } from '../../_helpers/utils'; +import { handleHttpErrorMessages, validateAppName, validateName } from '@/_helpers/utils'; +import InfoOrErrorBox from './InfoOrErrorBox'; +import { toast } from 'react-hot-toast'; function EditAppName({ appId, appName = '', onNameChanged }) { const darkMode = localStorage.getItem('darkMode') === 'true'; - const [name, setName] = React.useState(appName); + const [name, setName] = useState(appName); + const [isValid, setIsValid] = useState(true); + const [isEditing, setIsEditing] = useState(false); + const [isError, setIsError] = useState(false); + const [errorMessage, setErrorMessage] = useState(''); + const [warningText, setWarningText] = useState(''); - React.useEffect(() => { + const inputRef = useRef(null); + + useEffect(() => { setName(appName); }, [appName]); - const saveAppName = async (name) => { - const newName = name.trim(); - if (!validateName(name, 'App name').status) { - return; - } - if (newName === appName) { - //will set back name without starting and ending spaces - setName(newName); - return; - } - await appService - .saveApp(appId, { name: newName }) - .then(() => { - onNameChanged(newName); - }) - .catch((error) => { - handleHttpErrorMessages(error, 'app'); - }); + const clearError = () => { + setIsError(false); + setErrorMessage(''); }; + const setError = (message) => { + setIsError(true); + setErrorMessage(message); + }; + + const saveAppName = async (newName) => { + const trimmedName = newName.trim(); + if (validateName(trimmedName, 'App name', true)?.errorMsg) { + setName(appName); + clearError(); + setIsEditing(false); + return; + } + + if (trimmedName === appName) { + setIsValid(true); + setIsEditing(false); + setName(appName); + return; + } + + try { + await appService.saveApp(appId, { name: trimmedName }); + onNameChanged(trimmedName); + setIsValid(true); + setIsEditing(false); + toast.success('App name successfully updated!'); + } catch (error) { + if (error.statusCode === 409) { + setError('App name already exists'); + } else { + clearError(); + setName(appName); + setIsEditing(false); + handleHttpErrorMessages(error, 'app'); + } + } + }; + + const handleBlur = () => { + saveAppName(name); + }; + + const handleFocus = () => { + setIsValid(true); + setIsEditing(true); + }; + + const handleInput = (e) => { + const newValue = e.target.value; + setName(newValue); + if (newValue.length >= 50) { + setWarningText('Maximum length has been reached'); + } else { + setWarningText(''); + clearError(); + } + }; + + const borderColor = isError + ? 'var(--light-tomato-10, #DB4324)' // Apply error border color + : darkMode + ? 'var(--dark-border-color, #2D3748)' // Change this to the appropriate dark border color + : 'var(--light-border-color, #FFF0EE)'; + return ( - -
+
+ { + onChange={() => { //this was quick fix. replace this with actual tooltip props and state later if (document.getElementsByClassName('tooltip').length) { document.getElementsByClassName('tooltip')[0].style.display = 'none'; } - validateName(e.target.value, 'App name', true); - setName(e.target.value); }} - onBlur={(e) => saveAppName(e.target.value)} - className="form-control-plaintext form-control-plaintext-sm" + onInput={handleInput} + onBlur={handleBlur} + onFocus={handleFocus} + onClick={() => { + inputRef.current.select(); + setIsEditing(true); + }} + className={`form-control-plaintext form-control-plaintext-sm ${ + (!isError && !isEditing) || isValid ? '' : 'is-invalid' + } ${isError ? 'error' : ''}`} // Add the 'error' class when there's an error + style={{ border: `1px solid ${borderColor}` }} value={name} maxLength={50} data-cy="app-name-input" /> -
- + + +
); } diff --git a/frontend/src/Editor/Header/InfoOrErrorBox.jsx b/frontend/src/Editor/Header/InfoOrErrorBox.jsx new file mode 100644 index 0000000000..755e20630a --- /dev/null +++ b/frontend/src/Editor/Header/InfoOrErrorBox.jsx @@ -0,0 +1,38 @@ +import React from 'react'; + +function InfoOrErrorBox({ active, message, isError, isWarning, darkMode, additionalClassName }) { + const color = isError ? 'var(--light-tomato-10, #DB4324)' : isWarning ? '#ED5F00' : 'var(--slate-light-10, #7E868C)'; + const boxStyle = { + display: active ? 'flex' : 'none', + flexDirection: 'column', + justifyContent: 'center', + alignItems: 'flex-start', + gap: '2px', + width: '200px', + height: '32px', + borderRadius: '6px', + border: `1px solid ${darkMode ? 'var(--dark-border-color, #2D3748)' : 'var(--light-border-color, #FFF0EE)'}`, + background: darkMode ? 'var(--dark-bg-01, #1E293B)' : 'var(--base-white-00, #FFF)', + boxShadow: '0px 1px 2px 0px rgba(16, 24, 40, 0.05)', + color: color, + zIndex: 10000, + position: 'absolute', + fontFamily: 'IBM Plex Sans', + fontSize: '10px', + fontStyle: 'normal', + fontWeight: 500, + lineHeight: '16px', + padding: '2px 8px', + ...(additionalClassName && { + ...additionalClassName.split(' ').reduce((acc, cls) => ({ ...acc, [cls]: true }), {}), + }), + }; + + return ( +
+ {message &&
{message}
} +
+ ); +} + +export default InfoOrErrorBox; diff --git a/frontend/src/HomePage/AppCard.jsx b/frontend/src/HomePage/AppCard.jsx index b0612991e5..79cd2b88e6 100644 --- a/frontend/src/HomePage/AppCard.jsx +++ b/frontend/src/HomePage/AppCard.jsx @@ -2,7 +2,7 @@ import React, { useState, useCallback, useEffect } from 'react'; import cx from 'classnames'; import { AppMenu } from './AppMenu'; import moment from 'moment'; -import { ToolTip } from '@/_components'; +import { ToolTip } from '@/_components/index'; import useHover from '@/_hooks/useHover'; import configs from './Configs/AppIcon.json'; import { Link, useNavigate } from 'react-router-dom'; @@ -66,18 +66,18 @@ export default function AppCard({ return (
-
+
-
+
{AppIcon && AppIcon}
- {(canCreateApp(app) || canDeleteApp(app)) && ( + {(canCreateApp(app) || canDeleteApp(app) || canUpdateApp(app)) && (
+ {canUpdateApp && ( + openAppActionModal('rename-app')} + /> + )} {canUpdateApp && ( openAppActionModal('remove-app-from-folder')} /> )} - + openAppActionModal('clone-app')} + /> )} diff --git a/frontend/src/HomePage/BlankPage.jsx b/frontend/src/HomePage/BlankPage.jsx index 433da87e99..4be5433ea8 100644 --- a/frontend/src/HomePage/BlankPage.jsx +++ b/frontend/src/HomePage/BlankPage.jsx @@ -1,20 +1,18 @@ import React, { useState } from 'react'; -import { toast } from 'react-hot-toast'; import TemplateLibraryModal from './TemplateLibraryModal/'; import { useTranslation } from 'react-i18next'; -import { libraryAppService } from '@/_services'; import EmptyIllustration from '@assets/images/no-apps.svg'; import { ButtonSolid } from '@/_ui/AppButton/AppButton'; -import { getWorkspaceId } from '../_helpers/utils'; import { useNavigate } from 'react-router-dom'; export const BlankPage = function BlankPage({ - createApp, - darkMode, - creatingApp, - handleImportApp, + readAndImport, isImportingApp, fileInput, + openCreateAppModal, + openCreateAppFromTemplateModal, + creatingApp, + darkMode, showTemplateLibraryModal, hideTemplateLibraryModal, viewTemplateLibraryModal, @@ -29,26 +27,6 @@ export const BlankPage = function BlankPage({ { id: 'whatsapp-and-sms-crm', name: 'Whatsapp and sms crm' }, ]; - function deployApp(id) { - if (!deploying) { - const loadingToastId = toast.loading('Deploying app...'); - setDeploying(true); - libraryAppService - .deploy(id) - .then((data) => { - setDeploying(false); - toast.dismiss(loadingToastId); - toast.success('App created.'); - navigate(`/${getWorkspaceId()}/apps/${data.id}`); - }) - .catch((e) => { - toast.dismiss(loadingToastId); - toast.error(e.error); - setDeploying(false); - }); - } - } - return (
@@ -70,7 +48,7 @@ export const BlankPage = function BlankPage({
{staticTemplates.map(({ id, name }) => { return ( -
deployApp(id)}> +
{ + openCreateAppFromTemplateModal({ id, name }); + }} + >
{ + createApp = async (appName) => { let _self = this; _self.setState({ creatingApp: true }); - appService - .createApp({ icon: sample(iconList) }) - .then((data) => { - const workspaceId = getWorkspaceId(); - _self.props.navigate(`/${workspaceId}/apps/${data.id}`); - }) - .catch(({ error }) => { - toast.error(error); + try { + const data = await appService.createApp({ icon: sample(iconList), name: appName }); + + const workspaceId = getWorkspaceId(); + _self.props.navigate(`/${workspaceId}/apps/${data.id}`); + toast.success('App created successfully!'); + return true; + } catch (errorResponse) { + if (errorResponse.statusCode === 409) { _self.setState({ creatingApp: false }); - }); + return false; + } else { + throw errorResponse; + } + } + }; + + renameApp = async (newAppName, appId) => { + let _self = this; + _self.setState({ renamingApp: true }); + try { + await appService.saveApp(appId, { name: newAppName }); + await this.fetchApps(); + toast.success('App name has been updated!'); + return true; + } catch (errorResponse) { + if (errorResponse.statusCode === 409) { + console.log(errorResponse); + _self.setState({ renamingApp: false }); + return false; + } else { + throw errorResponse; + } + } }; deleteApp = (app) => { this.setState({ showAppDeletionConfirmation: true, appToBeDeleted: app }); }; - cloneApp = (app) => { + cloneApp = async (appId, appName) => { this.setState({ isCloningApp: true }); - appService - .cloneResource({ app: [{ id: app.id }], organization_id: getWorkspaceId() }) - .then((data) => { - toast.success('App cloned successfully.'); - this.setState({ isCloningApp: false }); - this.props.navigate(`/${getWorkspaceId()}/apps/${data.imports.app[0].id}`); - }) - .catch(({ _error }) => { - toast.error('Could not clone the app.'); - this.setState({ isCloningApp: false }); - console.log(_error); - }); + try { + const data = await appService.cloneApp(appName, appId); + toast.success('App cloned successfully!'); + this.setState({ isCloningApp: false }); + this.props.navigate(`/${getWorkspaceId()}/apps/${data.id}`); + return true; + } catch (_error) { + this.setState({ isCloningApp: false }); + if (_error.statusCode === 409) { + return false; + } else { + throw _error; + } + } }; exportApp = async (app) => { this.setState({ isExportingApp: true, app: app }); }; - handleImportApp = (event) => { - const fileReader = new FileReader(); - fileReader.readAsText(event.target.files[0], 'UTF-8'); - fileReader.onload = (event) => { - const fileContent = event.target.result; - this.setState({ isImportingApp: true }); - try { - const organization_id = getWorkspaceId(); - let importJSON = JSON.parse(fileContent); - // For backward compatibility with legacy app import - const isLegacyImport = isEmpty(importJSON.tooljet_version); - if (isLegacyImport) { - importJSON = { app: [{ definition: importJSON }], tooljet_version: importJSON.tooljetVersion }; - } - const requestBody = { organization_id, ...importJSON }; - appService - .importResource(requestBody) - .then((data) => { - toast.success('Imported successfully.'); - this.setState({ - isImportingApp: false, - }); - if (!isEmpty(data.imports.app)) { - this.props.navigate(`/${getWorkspaceId()}/apps/${data.imports.app[0].id}`); - } else if (!isEmpty(data.imports.tooljet_database)) { - this.props.navigate(`/${getWorkspaceId()}/database`); - } - }) - .catch(({ error }) => { - toast.error(`Could not import: ${error}`); - this.setState({ - isImportingApp: false, - }); - }); - } catch (error) { - toast.error(`Could not import: ${error}`); - this.setState({ - isImportingApp: false, - }); - } - // set file input as null to handle same file upload + readAndImport = (event) => { + try { + const file = event.target.files[0]; + if (!file) return; + + const fileReader = new FileReader(); + const fileName = file.name.replace('.json', '').substring(0, 50); + fileReader.readAsText(file, 'UTF-8'); + fileReader.onload = (event) => { + const result = event.target.result; + const fileContent = JSON.parse(result); + this.setState({ fileContent, fileName, showImportAppModal: true }); + }; + fileReader.onerror = (error) => { + throw new Error(`Could not import the app: ${error}`); + }; event.target.value = null; - }; + } catch (error) { + toast.error(error.message); + } + }; + + importFile = async (importJSON, appName) => { + this.setState({ isImportingApp: true }); + // For backward compatibility with legacy app import + const organization_id = getWorkspaceId(); + const isLegacyImport = isEmpty(importJSON.tooljet_version); + if (isLegacyImport) { + importJSON = { app: [{ definition: importJSON }], tooljet_version: importJSON.tooljetVersion }; + } + const requestBody = { organization_id, appName, ...importJSON }; + try { + const data = await appService.importResource(requestBody); + toast.success('App imported successfully.'); + this.setState({ + isImportingApp: false, + }); + if (!isEmpty(data.imports.app)) { + this.props.navigate(`/${getWorkspaceId()}/apps/${data.imports.app[0].id}`); + } else if (!isEmpty(data.imports.tooljet_database)) { + this.props.navigate(`/${getWorkspaceId()}/database`); + } + } catch (error) { + this.setState({ + isImportingApp: false, + }); + if (error.statusCode === 409) { + return false; + } + } + }; + + deployApp = async (event, appName, selectedApp) => { + event.preventDefault(); + const id = selectedApp.id; + this.setState({ deploying: true }); + try { + const data = await libraryAppService.deploy(id, appName); + this.setState({ deploying: false }); + toast.success('App created successfully!', { position: 'top-center' }); + this.props.navigate(`/${getWorkspaceId()}/apps/${data.app[0].id}`); + } catch (e) { + this.setState({ deploying: false }); + if (e.statusCode === 409) { + return false; + } else { + return e; + } + } }; canUserPerform(user, action, app) { @@ -387,6 +448,18 @@ class HomePageComponent extends React.Component { showRemoveAppFromFolderConfirmation: true, }); break; + case 'clone-app': + this.setState({ + appOperations: { ...appOperations, selectedApp: app, selectedIcon: app?.icon }, + showCloneAppModal: true, + }); + break; + case 'rename-app': + this.setState({ + appOperations: { ...appOperations, selectedApp: app }, + showRenameAppModal: true, + }); + break; } }; @@ -442,6 +515,22 @@ class HomePageComponent extends React.Component { this.setState({ showTemplateLibraryModal: false }); }; + openCreateAppFromTemplateModal = (template) => { + this.setState({ showCreateAppFromTemplateModal: true, selectedTemplate: template }); + }; + + closeCreateAppFromTemplateModal = () => { + this.setState({ showCreateAppFromTemplateModal: false, selectedTemplate: null }); + }; + + openCreateAppModal = () => { + this.setState({ showCreateAppModal: true }); + }; + + closeCreateAppModal = () => { + this.setState({ showCreateAppModal: false }); + }; + render() { const { apps, @@ -457,14 +546,78 @@ class HomePageComponent extends React.Component { appSearchKey, showAddToFolderModal, showChangeIconModal, + showCloneAppModal, appOperations, isExportingApp, appToBeDeleted, app, + showCreateAppModal, + showImportAppModal, + fileContent, + fileName, + showRenameAppModal, + showCreateAppFromTemplateModal, } = this.state; return (
+ {showCreateAppModal && ( + + )} + {showCloneAppModal && ( + this.setState({ showCloneAppModal: false })} + processApp={this.cloneApp} + show={() => this.setState({ showCloneAppModal: true })} + selectedAppId={appOperations?.selectedApp?.id} + selectedAppName={appOperations?.selectedApp?.name} + title={'Clone app'} + actionButton={'Clone app'} + actionLoadingButton={'Cloning'} + /> + )} + {showImportAppModal && ( + this.setState({ showImportAppModal: false })} + processApp={this.importFile} + fileContent={fileContent} + show={() => this.setState({ showImportAppModal: true })} + selectedAppName={fileName} + title={'Import app'} + actionButton={'Import app'} + actionLoadingButton={'Importing'} + /> + )} + {showCreateAppFromTemplateModal && ( + + )} + {showRenameAppModal && ( + this.setState({ showRenameAppModal: true })} + closeModal={() => this.setState({ showRenameAppModal: false })} + processApp={this.renameApp} + selectedAppId={appOperations.selectedApp.id} + selectedAppName={appOperations.selectedApp.name} + title={'Rename app'} + actionButton={'Rename app'} + actionLoadingButton={'Renaming'} + /> + )} this.cancelDeleteAppDialog()} darkMode={this.props.darkMode} /> -
diff --git a/frontend/src/HomePage/Modal.jsx b/frontend/src/HomePage/Modal.jsx index e752886a79..ce33b08d45 100644 --- a/frontend/src/HomePage/Modal.jsx +++ b/frontend/src/HomePage/Modal.jsx @@ -1,8 +1,13 @@ import React from 'react'; import { default as BootstrapModal } from 'react-bootstrap/Modal'; -export default function Modal({ title, show, closeModal, customClassName, children }) { +export default function Modal({ title, show, closeModal, customClassName, children, footerContent = null }) { const darkMode = localStorage.getItem('darkMode') === 'true'; + const modalFooter = footerContent ? ( + + {footerContent} + + ) : null; return ( closeModal(false)} @@ -31,6 +36,7 @@ export default function Modal({ title, show, closeModal, customClassName, childr > {children} + {modalFooter ? modalFooter : <>} ); } diff --git a/frontend/src/HomePage/TemplateLibraryModal/TemplateLibraryModal.jsx b/frontend/src/HomePage/TemplateLibraryModal/TemplateLibraryModal.jsx index 7ada977916..5151c670e1 100644 --- a/frontend/src/HomePage/TemplateLibraryModal/TemplateLibraryModal.jsx +++ b/frontend/src/HomePage/TemplateLibraryModal/TemplateLibraryModal.jsx @@ -1,4 +1,4 @@ -import React, { useEffect, useState } from 'react'; +import React, { useState, useEffect } from 'react'; import { Modal, Container, Row, Col } from 'react-bootstrap'; import Categories from './Categories'; import AppList from './AppList'; @@ -25,6 +25,7 @@ export default function TemplateLibraryModal(props) { (app) => selectedCategory.id === 'all' || app.category === selectedCategory.id ); const [selectedApp, selectApp] = useState(undefined); + const [showCreateAppFromTemplateModal, setShowCreateAppFromTemplateModal] = useState(false); const { t } = useTranslation(); useEffect(() => { @@ -51,31 +52,10 @@ export default function TemplateLibraryModal(props) { const [deploying, setDeploying] = useState(false); - function deployApp(event) { - event.preventDefault(); - const id = selectedApp.id; - setDeploying(true); - libraryAppService - .deploy(id) - .then((data) => { - setDeploying(false); - props.onCloseButtonClick(); - toast.success('App created.', { - position: 'top-center', - }); - navigate(`/${getWorkspaceId()}/apps/${data.app[0].id}`); - }) - .catch((e) => { - toast.error(e.error, { - position: 'top-center', - }); - setDeploying(false); - }); - } - return ( { - deployApp(e); + onClick={() => { + props.openCreateAppFromTemplateModal(selectedApp); + setShowCreateAppFromTemplateModal(false); + props.onCloseButtonClick(); }} isLoading={deploying} - className=" ms-2 " + className="ms-2" > {t('homePage.templateLibraryModal.createAppfromTemplate', 'Create application from template')} diff --git a/frontend/src/_components/AppModal.jsx b/frontend/src/_components/AppModal.jsx new file mode 100644 index 0000000000..5e5ea64c2e --- /dev/null +++ b/frontend/src/_components/AppModal.jsx @@ -0,0 +1,187 @@ +import React, { useState, useEffect, useContext, useRef } from 'react'; +import { toast } from 'react-hot-toast'; +import Modal from '../HomePage/Modal'; +import { ButtonSolid } from '@/_ui/AppButton/AppButton'; +import _ from 'lodash'; +import { validateAppName } from '@/_helpers/utils'; + +export function AppModal({ + closeModal, + processApp, + show, + fileContent = null, + templateDetails = null, + selectedAppId = null, + selectedAppName = null, + title, + actionButton, + actionLoadingButton, +}) { + if (!selectedAppName && templateDetails) { + selectedAppName = templateDetails?.name || ''; + } else if (!selectedAppName) { + selectedAppName = ''; + } + + if (actionButton === 'Clone app') { + if (selectedAppName.length >= 45) { + selectedAppName = selectedAppName.slice(0, 45) + '_Copy'; + } else { + selectedAppName = selectedAppName + '_Copy'; + } + } + + const [deploying, setDeploying] = useState(false); + const [newAppName, setNewAppName] = useState(selectedAppName); + const [errorText, setErrorText] = useState(''); + const [infoText, setInfoText] = useState(''); + const [isLoading, setIsLoading] = useState(false); + const [isNameChanged, setIsNameChanged] = useState(false); + const [isSuccess, setIsSuccess] = useState(false); + const [clearInput, setClearInput] = useState(false); + const inputRef = useRef(null); + + useEffect(() => { + setIsNameChanged(newAppName?.trim() !== selectedAppName); + }, [newAppName, selectedAppName]); + + useEffect(() => { + setIsSuccess(false); + }, [show]); + + useEffect(() => { + inputRef.current?.select(); + }, [show]); + + useEffect(() => { + setIsSuccess(false); + setClearInput(false); + setNewAppName(selectedAppName); + }, [selectedAppName]); + + const handleAction = async (e) => { + setDeploying(true); + const trimmedAppName = newAppName.trim(); + setNewAppName(trimmedAppName); + if (!errorText) { + setIsLoading(true); + try { + let success = true; + //create app from template + if (templateDetails) { + success = await processApp(e, trimmedAppName, templateDetails); + //import app + } else if (fileContent) { + success = await processApp(fileContent, trimmedAppName); + //rename app/clone existing app + } else if (selectedAppId) { + success = await processApp(trimmedAppName, selectedAppId); + //create app from scratch + } else { + success = await processApp(trimmedAppName); + } + if (success === false) { + setErrorText('App name already exists'); + setInfoText(''); + } else { + setErrorText(''); + setInfoText(''); + closeModal(); + } + } catch (error) { + toast.error(e.error, { + position: 'top-center', + }); + } + } + setIsLoading(false); + }; + + const handleInputChange = (e) => { + const newAppName = e.target.value; + const trimmedName = newAppName.trim(); + setNewAppName(newAppName); + if (newAppName.length >= 50) { + setInfoText('Maximum length has been reached'); + } else { + setInfoText(''); + const error = validateAppName(trimmedName); + setErrorText(error?.errorMsg || ''); + } + }; + + const createBtnDisableState = + isLoading || + errorText || + (actionButton === 'Rename app' && (!isNameChanged || newAppName.trim().length === 0 || newAppName.length > 50)) || // For rename case + (actionButton !== 'Rename app' && (newAppName.length > 50 || newAppName.trim().length === 0)); + + return ( + + + Cancel + + handleAction(e)} data-cy={actionButton} disabled={createBtnDisableState}> + {isLoading ? actionLoadingButton : actionButton} + + + } + > +
+
+ + + {errorText ? ( + + {errorText} + + ) : infoText ? ( + + {infoText} + + ) : ( + + App name must be unique and max 50 characters + + )} +
+
+
+ ); +} diff --git a/frontend/src/_components/index.js b/frontend/src/_components/index.js index 9eee8a94bb..cc691843ba 100644 --- a/frontend/src/_components/index.js +++ b/frontend/src/_components/index.js @@ -4,6 +4,7 @@ export * from './ConfirmDialog'; export * from './DarkModeToggle'; export * from './SearchBox'; export * from './ToolTip'; +export * from './AppModal'; export * from './ImageWithSpinner'; export * from './Menu'; export * from './LoginLoader'; diff --git a/frontend/src/_helpers/utils.js b/frontend/src/_helpers/utils.js index 0233d1e96f..f3fb99001d 100644 --- a/frontend/src/_helpers/utils.js +++ b/frontend/src/_helpers/utils.js @@ -920,6 +920,22 @@ export function isExpectedDataType(data, expectedDataType) { return data; } +export const validateAppName = (name, showError = false) => { + const newName = name.trim(); + let errorMsg = ''; + if (newName.length > 50) { + errorMsg = `Maximum length has been reached`; + showError && + toast.error(errorMsg, { + id: '1', + }); + } + return { + status: !(errorMsg.length > 0), + errorMsg, + }; +}; + export const validateName = (name, nameType, showError = false, allowSpecialChars = true) => { const newName = name.trim(); let errorMsg = ''; diff --git a/frontend/src/_services/app.service.js b/frontend/src/_services/app.service.js index 0329954eac..a937abba5c 100644 --- a/frontend/src/_services/app.service.js +++ b/frontend/src/_services/app.service.js @@ -48,8 +48,13 @@ function createApp(body = {}) { return fetch(`${config.apiUrl}/apps`, requestOptions).then(handleResponse); } -function cloneApp(id) { - const requestOptions = { method: 'POST', headers: authHeader(), credentials: 'include' }; +function cloneApp(id, name) { + const requestOptions = { + method: 'POST', + headers: authHeader(), + credentials: 'include', + body: JSON.stringify({ name }), + }; return fetch(`${config.apiUrl}/apps/${id}/clone`, requestOptions).then(handleResponse); } @@ -97,8 +102,13 @@ function getVersions(id) { return fetch(`${config.apiUrl}/apps/${id}/versions`, requestOptions).then(handleResponse); } -function importApp(body) { - const requestOptions = { method: 'POST', headers: authHeader(), credentials: 'include', body: JSON.stringify(body) }; +function importApp(app, name) { + const requestOptions = { + method: 'POST', + headers: authHeader(), + credentials: 'include', + body: JSON.stringify({ app, name }), + }; return fetch(`${config.apiUrl}/apps/import`, requestOptions).then(handleResponse); } diff --git a/frontend/src/_services/library-app.service.js b/frontend/src/_services/library-app.service.js index 799e9cca92..4f60ae4b3a 100644 --- a/frontend/src/_services/library-app.service.js +++ b/frontend/src/_services/library-app.service.js @@ -6,9 +6,10 @@ export const libraryAppService = { templateManifests, }; -function deploy(identifier) { +function deploy(identifier, appName) { const body = { identifier, + appName, }; const requestOptions = { method: 'POST', headers: authHeader(), credentials: 'include', body: JSON.stringify(body) }; diff --git a/frontend/src/_styles/theme.scss b/frontend/src/_styles/theme.scss index ab62b43304..96e8ce13d2 100644 --- a/frontend/src/_styles/theme.scss +++ b/frontend/src/_styles/theme.scss @@ -10226,6 +10226,9 @@ tbody { border: 1px solid var(--indigo9) !important; box-shadow: none !important; } + &.input-error-border { + border-color: #DB4324 !important; + } &:-webkit-autofill { box-shadow: 0 0 0 1000px var(--base) inset !important; @@ -11298,6 +11301,16 @@ tbody { background-color: #F1F3F5; color: #C1C8CD; } +} + +.modal-divider { + border-top: 1px solid #dee2e6; + padding: 10px; +} + +.dark-theme-modal-divider { + border-top: 1px solid var(--slate5) !important; + padding: 10px; .nav-item { background-color: transparent !important; diff --git a/server/src/controllers/app_import_export.controller.ts b/server/src/controllers/app_import_export.controller.ts index 5269aa092a..4865706868 100644 --- a/server/src/controllers/app_import_export.controller.ts +++ b/server/src/controllers/app_import_export.controller.ts @@ -6,6 +6,7 @@ import { AppsAbilityFactory } from 'src/modules/casl/abilities/apps-ability.fact import { App } from 'src/entities/app.entity'; import { AppImportExportService } from '@services/app_import_export.service'; import { User } from 'src/decorators/user.decorator'; +import { AppImportDto } from '@dto/app-import.dto'; @Controller('apps') export class AppsImportExportController { @@ -17,13 +18,14 @@ export class AppsImportExportController { @UseGuards(JwtAuthGuard) @Post('/import') - async import(@User() user, @Body() body) { + async import(@User() user, @Body() appImportDto: AppImportDto) { const ability = await this.appsAbilityFactory.appsActions(user); if (!ability.can('createApp', App)) { throw new ForbiddenException('You do not have permissions to perform this action'); } - const app = await this.appImportExportService.import(user, body); + const { name: appName, app: appContent } = appImportDto; + const app = await this.appImportExportService.import(user, appContent, appName); return decamelizeKeys(app); } diff --git a/server/src/controllers/apps.controller.ts b/server/src/controllers/apps.controller.ts index 45873792d0..7564af0850 100644 --- a/server/src/controllers/apps.controller.ts +++ b/server/src/controllers/apps.controller.ts @@ -21,12 +21,14 @@ import { FoldersService } from '@services/folders.service'; import { App } from 'src/entities/app.entity'; import { User } from 'src/decorators/user.decorator'; import { AppUpdateDto } from '@dto/app-update.dto'; +import { AppCreateDto } from '@dto/app-create.dto'; import { VersionCreateDto } from '@dto/version-create.dto'; import { VersionEditDto } from '@dto/version-edit.dto'; import { dbTransactionWrap } from 'src/helpers/utils.helper'; import { EntityManager } from 'typeorm'; import { ValidAppInterceptor } from 'src/interceptors/valid.app.interceptor'; import { AppDecorator } from 'src/decorators/app.decorator'; +import { AppCloneDto } from '@dto/app-clone.dto'; @Controller('apps') export class AppsController { @@ -38,17 +40,20 @@ export class AppsController { @UseGuards(JwtAuthGuard) @Post() - async create(@User() user, @Body('icon') icon: string) { + async create(@User() user, @Body() appCreateDto: AppCreateDto) { const ability = await this.appsAbilityFactory.appsActions(user); + const name = appCreateDto.name; + const icon = appCreateDto.icon; if (!ability.can('createApp', App)) { throw new ForbiddenException('You do not have permissions to perform this action'); } return await dbTransactionWrap(async (manager: EntityManager) => { - const app = await this.appsService.create(user, manager); + const app = await this.appsService.create(name, user, manager); const appUpdateDto = new AppUpdateDto(); + appUpdateDto.name = name; appUpdateDto.slug = app.id; appUpdateDto.icon = icon; await this.appsService.update(app.id, appUpdateDto, manager); @@ -154,14 +159,14 @@ export class AppsController { @UseGuards(JwtAuthGuard) @UseInterceptors(ValidAppInterceptor) @Post(':id/clone') - async clone(@User() user, @AppDecorator() app: App) { + async clone(@User() user, @AppDecorator() app: App, @Body() appCloneDto: AppCloneDto) { const ability = await this.appsAbilityFactory.appsActions(user, app.id); if (!ability.can('cloneApp', app)) { throw new ForbiddenException('You do not have permissions to perform this action'); } - - const result = await this.appsService.clone(app, user); + const appName = appCloneDto.name; + const result = await this.appsService.clone(app, user, appName); const response = decamelizeKeys(result); return response; diff --git a/server/src/controllers/library_apps.controller.ts b/server/src/controllers/library_apps.controller.ts index 67c96f83d8..78a058ceef 100644 --- a/server/src/controllers/library_apps.controller.ts +++ b/server/src/controllers/library_apps.controller.ts @@ -15,14 +15,15 @@ export class LibraryAppsController { @Post() @UseGuards(JwtAuthGuard) - async create(@User() user, @Body('identifier') identifier) { + async create(@User() user, @Body('identifier') identifier, @Body('appName') appName) { const ability = await this.appsAbilityFactory.appsActions(user); if (!ability.can('createApp', App)) { throw new ForbiddenException('You do not have permissions to perform this action'); } - const result = await this.libraryAppCreationService.perform(user, identifier); - return result; + const newApp = await this.libraryAppCreationService.perform(user, identifier, appName); + + return newApp; } @Get() diff --git a/server/src/dto/app-clone.dto.ts b/server/src/dto/app-clone.dto.ts new file mode 100644 index 0000000000..139883d736 --- /dev/null +++ b/server/src/dto/app-clone.dto.ts @@ -0,0 +1,8 @@ +import { IsString, IsNotEmpty, MaxLength } from 'class-validator'; + +export class AppCloneDto { + @IsNotEmpty() + @IsString() + @MaxLength(50, { message: 'Maximum length has been reached.' }) + name: string; +} diff --git a/server/src/dto/app-create.dto.ts b/server/src/dto/app-create.dto.ts new file mode 100644 index 0000000000..e2b959838b --- /dev/null +++ b/server/src/dto/app-create.dto.ts @@ -0,0 +1,12 @@ +import { IsString, IsOptional, IsNotEmpty, MaxLength } from 'class-validator'; + +export class AppCreateDto { + @IsNotEmpty() + @IsString() + @MaxLength(50, { message: 'Maximum length has been reached.' }) + name: string; + + @IsOptional() + @IsString() + icon?: string; +} diff --git a/server/src/dto/app-import.dto.ts b/server/src/dto/app-import.dto.ts new file mode 100644 index 0000000000..85863c08e2 --- /dev/null +++ b/server/src/dto/app-import.dto.ts @@ -0,0 +1,11 @@ +import { IsString, IsNotEmpty, MaxLength } from 'class-validator'; + +export class AppImportDto { + @IsNotEmpty() + @IsString() + @MaxLength(50, { message: 'Maximum length has been reached.' }) + name: string; + + @IsNotEmpty() + app: object; +} diff --git a/server/src/dto/import-resources.dto.ts b/server/src/dto/import-resources.dto.ts index 50cefcfb21..9d6257d4af 100644 --- a/server/src/dto/import-resources.dto.ts +++ b/server/src/dto/import-resources.dto.ts @@ -10,6 +10,9 @@ export class ImportResourcesDto { @IsOptional() app: ImportAppDto[]; + @IsOptional() + appName: string; + @IsOptional() tooljet_database: ImportTooljetDatabaseDto[]; } diff --git a/server/src/services/app_import_export.service.ts b/server/src/services/app_import_export.service.ts index f9e2f611c4..3d3066ba15 100644 --- a/server/src/services/app_import_export.service.ts +++ b/server/src/services/app_import_export.service.ts @@ -11,11 +11,12 @@ import { GroupPermission } from 'src/entities/group_permission.entity'; import { User } from 'src/entities/user.entity'; import { EntityManager } from 'typeorm'; import { DataSourcesService } from './data_sources.service'; -import { dbTransactionWrap, defaultAppEnvironments, truncateAndReplace } from 'src/helpers/utils.helper'; +import { dbTransactionWrap, defaultAppEnvironments, catchDbException } from 'src/helpers/utils.helper'; import { AppEnvironmentService } from './app_environments.service'; import { convertAppDefinitionFromSinglePageToMultiPage } from '../../lib/single-page-to-and-from-multipage-definition-conversion'; import { DataSourceScopes, DataSourceTypes } from 'src/helpers/data_source.constants'; import { Organization } from 'src/entities/organization.entity'; +import { DataBaseConstraints } from 'src/helpers/db_constraints.constants'; import { QueryDeepPartialEntity } from 'typeorm/query-builder/QueryPartialEntity'; import { Plugin } from 'src/entities/plugin.entity'; @@ -151,7 +152,7 @@ export class AppImportExportService { }); } - async import(user: User, appParamsObj: any, externalResourceMappings = {}): Promise { + async import(user: User, appParamsObj: any, appName: string, externalResourceMappings = {}): Promise { if (typeof appParamsObj !== 'object') { throw new BadRequestException('Invalid params for app import'); } @@ -171,6 +172,7 @@ export class AppImportExportService { const schemaUnifiedAppParams = appParams?.schemaDetails?.multiPages ? appParams : convertSinglePageSchemaToMultiPageSchema(appParams); + schemaUnifiedAppParams.name = appName; await dbTransactionWrap(async (manager) => { importedApp = await this.createImportedAppForUser(manager, schemaUnifiedAppParams, user); @@ -194,18 +196,24 @@ export class AppImportExportService { } async createImportedAppForUser(manager: EntityManager, appParams: any, user: User): Promise { - const importedApp = manager.create(App, { - name: truncateAndReplace(appParams.name), - organizationId: user.organizationId, - userId: user.id, - slug: null, // Prevent db unique constraint error. - icon: appParams.icon, - isPublic: false, - createdAt: new Date(), - updatedAt: new Date(), - }); - await manager.save(importedApp); - return importedApp; + return await catchDbException( + async () => { + const importedApp = manager.create(App, { + name: appParams.name, + organizationId: user.organizationId, + userId: user.id, + slug: null, + icon: appParams.icon, + isPublic: false, + createdAt: new Date(), + updatedAt: new Date(), + }); + await manager.save(importedApp); + return importedApp; + }, + DataBaseConstraints.APP_NAME_UNIQUE, + 'This app name is already taken.' + ); } extractImportDataFromAppParams(appParams: Record): { diff --git a/server/src/services/apps.service.ts b/server/src/services/apps.service.ts index a55a90cd72..8996fb368d 100644 --- a/server/src/services/apps.service.ts +++ b/server/src/services/apps.service.ts @@ -12,13 +12,7 @@ import { AppGroupPermission } from 'src/entities/app_group_permission.entity'; import { AppImportExportService } from './app_import_export.service'; import { DataSourcesService } from './data_sources.service'; import { Credential } from 'src/entities/credential.entity'; -import { - catchDbException, - cleanObject, - dbTransactionWrap, - defaultAppEnvironments, - generateNextName, -} from 'src/helpers/utils.helper'; +import { catchDbException, cleanObject, dbTransactionWrap, defaultAppEnvironments } from 'src/helpers/utils.helper'; import { AppUpdateDto } from '@dto/app-update.dto'; import { viewableAppsQuery } from 'src/helpers/queries'; import { VersionEditDto } from '@dto/version-edit.dto'; @@ -103,35 +97,40 @@ export class AppsService { }); } - async create(user: User, manager: EntityManager): Promise { + async create(name: string, user: User, manager: EntityManager): Promise { return await dbTransactionWrap(async (manager: EntityManager) => { - const name = await generateNextName('My app'); - const app = await manager.save( - manager.create(App, { - name, - createdAt: new Date(), - updatedAt: new Date(), - organizationId: user.organizationId, - userId: user.id, - }) + return await catchDbException( + async () => { + const app = await manager.save( + manager.create(App, { + name, + createdAt: new Date(), + updatedAt: new Date(), + organizationId: user.organizationId, + userId: user.id, + }) + ); + + //create default app version + await this.createVersion(user, app, 'v1', null, null, manager); + + await manager.save( + manager.create(AppUser, { + userId: user.id, + appId: app.id, + role: 'admin', + createdAt: new Date(), + updatedAt: new Date(), + }) + ); + + await this.createAppGroupPermissionsForAdmin(app, manager); + return app; + }, + DataBaseConstraints.APP_NAME_UNIQUE, + 'This app name is already taken.' ); - - //create default app version - await this.createVersion(user, app, 'v1', null, null, manager); - - await manager.save( - manager.create(AppUser, { - userId: user.id, - appId: app.id, - role: 'admin', - createdAt: new Date(), - updatedAt: new Date(), - }) - ); - - await this.createAppGroupPermissionsForAdmin(app, manager); - return app; - }, manager); + }); } async createAppGroupPermissionsForAdmin(app: App, manager: EntityManager): Promise { @@ -170,9 +169,9 @@ export class AppsService { } } - async clone(existingApp: App, user: User): Promise { + async clone(existingApp: App, user: User, appName: string): Promise { const appWithRelations = await this.appImportExportService.export(user, existingApp.id); - const clonedApp = await this.appImportExportService.import(user, appWithRelations); + const clonedApp = await this.appImportExportService.import(user, appWithRelations, appName); return clonedApp; } diff --git a/server/src/services/import_export_resources.service.ts b/server/src/services/import_export_resources.service.ts index 2ca413c15e..fce758c0cf 100644 --- a/server/src/services/import_export_resources.service.ts +++ b/server/src/services/import_export_resources.service.ts @@ -59,9 +59,10 @@ export class ImportExportResourcesService { } if (importResourcesDto.app) { + const appName = importResourcesDto.appName; for (const appImportDto of importResourcesDto.app) { user.organizationId = importResourcesDto.organization_id; - const createdApp = await this.appImportExportService.import(user, appImportDto.definition, { + const createdApp = await this.appImportExportService.import(user, appImportDto.definition, appName, { tooljet_database: tableNameMapping, }); imports.app.push({ id: createdApp.id, name: createdApp.name }); diff --git a/server/src/services/library_app_creation.service.ts b/server/src/services/library_app_creation.service.ts index 49a231418b..1830c12883 100644 --- a/server/src/services/library_app_creation.service.ts +++ b/server/src/services/library_app_creation.service.ts @@ -14,7 +14,7 @@ export class LibraryAppCreationService { private readonly logger: Logger ) {} - async perform(currentUser: User, identifier: string) { + async perform(currentUser: User, identifier: string, appName: string) { const templateDefinition = this.findTemplateDefinition(identifier); const importDto = new ImportResourcesDto(); importDto.organization_id = currentUser.organizationId; @@ -24,7 +24,7 @@ export class LibraryAppCreationService { if (this.isVersionGreaterThanOrEqual(templateDefinition.tooljet_version, '2.16.0')) { return await this.importExportResourcesService.import(currentUser, importDto); } else { - const importedApp = await this.appImportExportService.import(currentUser, templateDefinition); + const importedApp = await this.appImportExportService.import(currentUser, templateDefinition, appName); return { app: [importedApp], tooljet_database: [], diff --git a/server/test/controllers/apps.e2e-spec.ts b/server/test/controllers/apps.e2e-spec.ts index 754d54d93a..278654f13d 100644 --- a/server/test/controllers/apps.e2e-spec.ts +++ b/server/test/controllers/apps.e2e-spec.ts @@ -82,11 +82,15 @@ describe('apps controller', () => { }); await createApplicationVersion(app, application); + const appName = 'My app'; for (const userData of [viewerUserData, developerUserData]) { const response = await request(app.getHttpServer()) .post(`/api/apps`) .set('tj-workspace-id', userData.user.defaultOrganizationId) - .set('Cookie', userData['tokenCookie']); + .set('Cookie', userData['tokenCookie']) + .send({ + name: appName, + }); expect(response.statusCode).toBe(403); } @@ -94,7 +98,10 @@ describe('apps controller', () => { const response = await request(app.getHttpServer()) .post(`/api/apps`) .set('tj-workspace-id', adminUserData.user.defaultOrganizationId) - .set('Cookie', adminUserData['tokenCookie']); + .set('Cookie', adminUserData['tokenCookie']) + .send({ + name: appName, + }); expect(response.statusCode).toBe(201); expect(response.body.name).toContain('My app'); @@ -115,10 +122,14 @@ describe('apps controller', () => { await createAppEnvironments(app, adminUserData.organization.id); + const appName = 'My app'; const response = await request(app.getHttpServer()) .post(`/api/apps`) .set('tj-workspace-id', adminUserData.user.defaultOrganizationId) - .set('Cookie', loggedUser.tokenCookie); + .set('Cookie', loggedUser.tokenCookie) + .send({ + name: appName, + }); expect(response.statusCode).toBe(201); expect(response.body.name).toContain('My app'); @@ -535,7 +546,8 @@ describe('apps controller', () => { let response = await request(app.getHttpServer()) .post(`/api/apps/${application.id}/clone`) .set('tj-workspace-id', adminUserData.user.defaultOrganizationId) - .set('Cookie', adminUserData['tokenCookie']); + .set('Cookie', adminUserData['tokenCookie']) + .send({ name: 'App to clone_Copy' }); expect(response.statusCode).toBe(201); @@ -546,14 +558,16 @@ describe('apps controller', () => { response = await request(app.getHttpServer()) .post(`/api/apps/${application.id}/clone`) .set('tj-workspace-id', developerUserData.user.defaultOrganizationId) - .set('Cookie', developerUserData['tokenCookie']); + .set('Cookie', developerUserData['tokenCookie']) + .send({ name: 'App to clone_Copy' }); expect(response.statusCode).toBe(403); response = await request(app.getHttpServer()) .post(`/api/apps/${application.id}/clone`) .set('tj-workspace-id', viewerUserData.user.defaultOrganizationId) - .set('Cookie', viewerUserData['tokenCookie']); + .set('Cookie', viewerUserData['tokenCookie']) + .send({ name: 'App to clone_Copy' }); expect(response.statusCode).toBe(403); @@ -583,7 +597,8 @@ describe('apps controller', () => { const response = await request(app.getHttpServer()) .post(`/api/apps/${application.id}/clone`) .set('tj-workspace-id', anotherOrgAdminUserData.user.defaultOrganizationId) - .set('Cookie', loggedUser.tokenCookie); + .set('Cookie', loggedUser.tokenCookie) + .send({ name: 'name_Copy' }); expect(response.statusCode).toBe(403); @@ -2121,7 +2136,8 @@ describe('apps controller', () => { const response = await request(app.getHttpServer()) .post('/api/apps/import') .set('tj-workspace-id', userData.user.defaultOrganizationId) - .set('Cookie', userData['tokenCookie']); + .set('Cookie', userData['tokenCookie']) + .send({ app: application, name: 'name' }); expect(response.statusCode).toBe(403); } @@ -2130,7 +2146,7 @@ describe('apps controller', () => { .post('/api/apps/import') .set('tj-workspace-id', adminUserData.user.defaultOrganizationId) .set('Cookie', adminUserData['tokenCookie']) - .send({ name: 'Imported App' }); + .send({ app: application, name: 'Imported App' }); expect(response.statusCode).toBe(201); diff --git a/server/test/controllers/library_apps.e2e-spec.ts b/server/test/controllers/library_apps.e2e-spec.ts index 64573b145a..95b02133e2 100644 --- a/server/test/controllers/library_apps.e2e-spec.ts +++ b/server/test/controllers/library_apps.e2e-spec.ts @@ -34,7 +34,7 @@ describe('library apps controller', () => { let response = await request(app.getHttpServer()) .post('/api/library_apps') - .send({ identifier: 'github-contributors' }) + .send({ identifier: 'github-contributors', appName: 'Github Contributors' }) .set('tj-workspace-id', nonAdminUserData.user.defaultOrganizationId) .set('Cookie', nonAdminUserData['tokenCookie']); @@ -61,7 +61,7 @@ describe('library apps controller', () => { const response = await request(app.getHttpServer()) .post('/api/library_apps') - .send({ identifier: 'non-existent-template' }) + .send({ identifier: 'non-existent-template', appName: 'Non existent template' }) .set('tj-workspace-id', adminUserData.user.defaultOrganizationId) .set('Cookie', adminUserData['tokenCookie']); diff --git a/server/test/services/app_import_export.service.spec.ts b/server/test/services/app_import_export.service.spec.ts index eea2c15bd0..a3e39ea8e9 100644 --- a/server/test/services/app_import_export.service.spec.ts +++ b/server/test/services/app_import_export.service.spec.ts @@ -164,7 +164,8 @@ describe('AppImportExportService', () => { groups: ['all_users', 'admin'], }); const adminUser = adminUserData.user; - await expect(service.import(adminUser, 'hello world')).rejects.toThrow('Invalid params for app import'); + const appName = 'my app'; + await expect(service.import(adminUser, 'hello world', appName)).rejects.toThrow('Invalid params for app import'); }); it('should import app with empty related associations', async () => { @@ -180,8 +181,8 @@ describe('AppImportExportService', () => { }); const { appV2: exportedApp } = await service.export(adminUser, app.id); - - const result = await service.import(adminUser, exportedApp); + const appName = 'my app'; + const result = await service.import(adminUser, exportedApp, appName); const importedApp = await getAppWithAllDetails(result.id); expect(importedApp.id == exportedApp.id).toBeFalsy(); @@ -261,7 +262,8 @@ describe('AppImportExportService', () => { }); const { appV2: exportedApp } = await service.export(adminUser, application.id); - const result = await service.import(adminUser, exportedApp); + const appName = 'my app'; + const result = await service.import(adminUser, exportedApp, appName); const importedApp = await getAppWithAllDetails(result.id); expect(importedApp.id == exportedApp.id).toBeFalsy(); From d4b436dd3157de7f78482725bb2f6cce5ea25870 Mon Sep 17 00:00:00 2001 From: Anantshree Chandola Date: Tue, 17 Oct 2023 14:58:57 +0530 Subject: [PATCH 40/67] fix failing test --- server/test/controllers/library_apps.e2e-spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/test/controllers/library_apps.e2e-spec.ts b/server/test/controllers/library_apps.e2e-spec.ts index 95b02133e2..34f4c77b06 100644 --- a/server/test/controllers/library_apps.e2e-spec.ts +++ b/server/test/controllers/library_apps.e2e-spec.ts @@ -42,7 +42,7 @@ describe('library apps controller', () => { response = await request(app.getHttpServer()) .post('/api/library_apps') - .send({ identifier: 'github-contributors' }) + .send({ identifier: 'github-contributors', appName: 'GitHub Contributor Leaderboard' }) .set('tj-workspace-id', adminUserData.user.defaultOrganizationId) .set('Cookie', adminUserData['tokenCookie']); From 82a8b096faf01935e747f352f6a07dca8711fe04 Mon Sep 17 00:00:00 2001 From: Anantshree Chandola Date: Tue, 17 Oct 2023 15:36:24 +0530 Subject: [PATCH 41/67] fix --- frontend/src/Editor/Header/EditAppName.jsx | 8 ++++++-- frontend/src/_components/AppModal.jsx | 4 ++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/frontend/src/Editor/Header/EditAppName.jsx b/frontend/src/Editor/Header/EditAppName.jsx index 4ece167329..097ae8aa31 100644 --- a/frontend/src/Editor/Header/EditAppName.jsx +++ b/frontend/src/Editor/Header/EditAppName.jsx @@ -120,8 +120,12 @@ function EditAppName({ appId, appName = '', onNameChanged }) { = 50 + ? 'Maximum length has been reached' + : 'App name should be unique and max 50 characters' + } + isWarning={warningText || name.length >= 50} isError={isError} darkMode={darkMode} additionalClassName={isError ? 'error' : ''} diff --git a/frontend/src/_components/AppModal.jsx b/frontend/src/_components/AppModal.jsx index 5e5ea64c2e..6ff81c6b79 100644 --- a/frontend/src/_components/AppModal.jsx +++ b/frontend/src/_components/AppModal.jsx @@ -159,7 +159,7 @@ export function AppModal({ > {errorText} - ) : infoText ? ( + ) : infoText || newAppName.length >= 50 ? ( - {infoText} + {infoText || 'Maximum length has been reached'} ) : ( Date: Tue, 17 Oct 2023 16:56:54 +0530 Subject: [PATCH 42/67] updates (#7931) --- frontend/src/HomePage/BlankPage.jsx | 78 +++++++++++-------- frontend/src/HomePage/HomePage.jsx | 2 + .../TemplateLibraryModal.jsx | 1 + 3 files changed, 48 insertions(+), 33 deletions(-) diff --git a/frontend/src/HomePage/BlankPage.jsx b/frontend/src/HomePage/BlankPage.jsx index 4be5433ea8..c7a8c54a25 100644 --- a/frontend/src/HomePage/BlankPage.jsx +++ b/frontend/src/HomePage/BlankPage.jsx @@ -16,6 +16,7 @@ export const BlankPage = function BlankPage({ showTemplateLibraryModal, hideTemplateLibraryModal, viewTemplateLibraryModal, + canCreateApp, }) { const { t } = useTranslation(); const [deploying, setDeploying] = useState(false); @@ -27,6 +28,8 @@ export const BlankPage = function BlankPage({ { id: 'whatsapp-and-sms-crm', name: 'Whatsapp and sms crm' }, ]; + const appCreationDisabled = !canCreateApp(); + return (
@@ -53,6 +56,7 @@ export const BlankPage = function BlankPage({ data-cy="button-new-app-from-scratch" className="col" fill={'#FDFDFE'} + disabled={appCreationDisabled} > Create new application @@ -63,12 +67,14 @@ export const BlankPage = function BlankPage({ isLoading={isImportingApp} data-cy="button-import-an-app" className="col" - variant="tertiary" + disabled={appCreationDisabled} + variant={!appCreationDisabled ? 'tertiary' : 'primary'} > @@ -86,41 +93,45 @@ export const BlankPage = function BlankPage({
-
- Or choose from templates -
-
- {staticTemplates.map(({ id, name }) => { - return ( -
{ - openCreateAppFromTemplateModal({ id, name }); - }} - > -
+ {!appCreationDisabled && ( +
+
+ Or choose from templates +
+
+ {staticTemplates.map(({ id, name }) => { + return (
-
-

{ + openCreateAppFromTemplateModal({ id, name }); + }} + > +
- {name} -

+
+
+

+ {name} +

+
+
-
-
- ); - })} -
+ ); + })} +
+
+ )}
); diff --git a/frontend/src/HomePage/HomePage.jsx b/frontend/src/HomePage/HomePage.jsx index 2b9a4c03b5..84b8130b8a 100644 --- a/frontend/src/HomePage/HomePage.jsx +++ b/frontend/src/HomePage/HomePage.jsx @@ -823,6 +823,7 @@ class HomePageComponent extends React.Component { showTemplateLibraryModal={this.state.showTemplateLibraryModal} viewTemplateLibraryModal={this.showTemplateLibraryModal} hideTemplateLibraryModal={this.hideTemplateLibraryModal} + canCreateApp={this.canCreateApp} /> )} {!isLoading && meta.total_count === 0 && appSearchKey && ( @@ -868,6 +869,7 @@ class HomePageComponent extends React.Component { onCloseButtonClick={() => this.setState({ showTemplateLibraryModal: false })} darkMode={this.props.darkMode} openCreateAppFromTemplateModal={this.openCreateAppFromTemplateModal} + appCreationDisabled={!this.canCreateApp()} />
diff --git a/frontend/src/HomePage/TemplateLibraryModal/TemplateLibraryModal.jsx b/frontend/src/HomePage/TemplateLibraryModal/TemplateLibraryModal.jsx index 5151c670e1..0773a98fc2 100644 --- a/frontend/src/HomePage/TemplateLibraryModal/TemplateLibraryModal.jsx +++ b/frontend/src/HomePage/TemplateLibraryModal/TemplateLibraryModal.jsx @@ -101,6 +101,7 @@ export default function TemplateLibraryModal(props) { }} isLoading={deploying} className="ms-2" + disabled={props.appCreationDisabled} > {t('homePage.templateLibraryModal.createAppfromTemplate', 'Create application from template')} From bfdd2880789ceba99926328e38caeeddbbfe7b07 Mon Sep 17 00:00:00 2001 From: Anantshree Chandola Date: Tue, 17 Oct 2023 17:15:52 +0530 Subject: [PATCH 43/67] very small change --- frontend/src/Editor/Header/EditAppName.jsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/src/Editor/Header/EditAppName.jsx b/frontend/src/Editor/Header/EditAppName.jsx index 097ae8aa31..8ac727e5be 100644 --- a/frontend/src/Editor/Header/EditAppName.jsx +++ b/frontend/src/Editor/Header/EditAppName.jsx @@ -121,9 +121,9 @@ function EditAppName({ appId, appName = '', onNameChanged }) { = 50 - ? 'Maximum length has been reached' - : 'App name should be unique and max 50 characters' + errorMessage || + warningText || + (name.length >= 50 ? 'Maximum length has been reached' : 'App name should be unique and max 50 characters') } isWarning={warningText || name.length >= 50} isError={isError} From a6b6935327a9fc201aac104e88a0af27dca9893e Mon Sep 17 00:00:00 2001 From: Anantshree Chandola Date: Tue, 17 Oct 2023 17:41:06 +0530 Subject: [PATCH 44/67] remove option to see all templates for user with no permission --- frontend/src/HomePage/BlankPage.jsx | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/frontend/src/HomePage/BlankPage.jsx b/frontend/src/HomePage/BlankPage.jsx index c7a8c54a25..e2407b31cc 100644 --- a/frontend/src/HomePage/BlankPage.jsx +++ b/frontend/src/HomePage/BlankPage.jsx @@ -130,17 +130,17 @@ export const BlankPage = function BlankPage({ ); })}
+
+ +
)} -
- -
From cbb92dfbe243c337654c43e88e57e3c60a6471b3 Mon Sep 17 00:00:00 2001 From: Ajith KV Date: Tue, 17 Oct 2023 17:58:12 +0530 Subject: [PATCH 45/67] Modify test cases (#7935) --- cypress-tests/cypress/commands/commands.js | 2 + .../cypress/constants/texts/dashboard.js | 2 +- .../e2e/editor/app-version/version.cy.js | 3 +- .../cypress/e2e/workspace/dashboard.cy.js | 31 +-- .../cypress/e2e/workspace/shareApp.cy.js | 204 +++++++++--------- .../e2e/workspace/userPermissions.cy.js | 29 ++- .../e2e/workspace/workspaceConstants.cy.js | 3 +- 7 files changed, 136 insertions(+), 138 deletions(-) diff --git a/cypress-tests/cypress/commands/commands.js b/cypress-tests/cypress/commands/commands.js index 53ca1b7375..016af0bf06 100644 --- a/cypress-tests/cypress/commands/commands.js +++ b/cypress-tests/cypress/commands/commands.js @@ -56,6 +56,8 @@ Cypress.Commands.add("createApp", (appName) => { cy.get("body").then(($title) => { cy.get(getAppButtonSelector($title)).click(); + cy.clearAndType('[data-cy="app-name-input"]', appName); + cy.get('[data-cy="+ Create app"]').click(); }); cy.waitForAppLoad(); cy.skipEditorPopover(); diff --git a/cypress-tests/cypress/constants/texts/dashboard.js b/cypress-tests/cypress/constants/texts/dashboard.js index 47131ff553..3e8f1ab913 100644 --- a/cypress-tests/cypress/constants/texts/dashboard.js +++ b/cypress-tests/cypress/constants/texts/dashboard.js @@ -37,7 +37,7 @@ export const dashboardText = { }, seeAllAppsTemplateButton: "See all templates", addToFolderTitle: "Add to folder", - appClonedToast: "App cloned successfully.", + appClonedToast: "App cloned successfully!", darkModeText: "Dark Mode", lightModeText: "Light Mode", dashboardAppsHeaderLabel: " All apps", diff --git a/cypress-tests/cypress/e2e/editor/app-version/version.cy.js b/cypress-tests/cypress/e2e/editor/app-version/version.cy.js index a890da5760..b3ade9630e 100644 --- a/cypress-tests/cypress/e2e/editor/app-version/version.cy.js +++ b/cypress-tests/cypress/e2e/editor/app-version/version.cy.js @@ -42,9 +42,8 @@ describe("App Version Functionality", () => { }); it("Verify the elements of the version module", () => { - cy.createApp(); + cy.createApp(data.appName); cy.get(appVersionSelectors.appVersionLabel).should("be.visible"); - cy.renameApp(data.appName); cy.get(commonSelectors.appNameInput).verifyVisibleElement( "have.value", data.appName diff --git a/cypress-tests/cypress/e2e/workspace/dashboard.cy.js b/cypress-tests/cypress/e2e/workspace/dashboard.cy.js index 3a9274b1a7..e7d5c84ffb 100644 --- a/cypress-tests/cypress/e2e/workspace/dashboard.cy.js +++ b/cypress-tests/cypress/e2e/workspace/dashboard.cy.js @@ -168,12 +168,10 @@ describe("dashboard", () => { it("Should verify app card elements and app card operations", () => { cy.apiLogin(); - cy.apiCreateApp(); + cy.apiCreateApp(data.appName); cy.openApp(); - cy.renameApp(data.appName); cy.dragAndDropWidget("Table", 250, 250); - cy.get(commonSelectors.editorPageLogo).click(); cy.wait(500); @@ -192,7 +190,6 @@ describe("dashboard", () => { expect($el.contents().last().text().trim()).to.eq("The Developer"); }); }); - cy.reloadAppForTheElement(data.appName); viewAppCardOptions(data.appName); cy.get( @@ -213,7 +210,6 @@ describe("dashboard", () => { modifyAndVerifyAppCardIcon(data.appName); createFolder(data.folderName); - cy.reloadAppForTheElement(data.appName); viewAppCardOptions(data.appName); cy.get( @@ -246,7 +242,7 @@ describe("dashboard", () => { cy.get(commonSelectors.appCard(data.appName)) .contains(data.appName) .should("be.visible"); - cy.reloadAppForTheElement(data.appName); + viewAppCardOptions(data.appName); cy.get(commonSelectors.appCardOptions(commonText.removeFromFolderOption)) @@ -256,7 +252,6 @@ describe("dashboard", () => { cancelModal(commonText.cancelButton); - cy.reloadAppForTheElement(data.appName); viewAppCardOptions(data.appName); cy.get( commonSelectors.appCardOptions(commonText.removeFromFolderOption) @@ -276,17 +271,13 @@ describe("dashboard", () => { deleteFolder(data.folderName); cy.get(commonSelectors.allApplicationsLink).click(); - cy.reloadAppForTheElement(data.appName); viewAppCardOptions(data.appName); cy.get(commonSelectors.appCardOptions(commonText.cloneAppOption)).click(); - cy.verifyToastMessage( - commonSelectors.toastMessage, - dashboardText.appClonedToast - ); - // cy.waitForAppLoad(); - cy.wait(2000); - cy.clearAndType(commonSelectors.appNameInput, data.cloneAppName); + cy.get('[data-cy="Clone app"]').click(); + cy.get('.go3958317564').should('be.visible').and('have.text', dashboardText.appClonedToast) + cy.wait(3000); + cy.renameApp(data.cloneAppName); cy.dragAndDropWidget("button", 25, 25); cy.get(commonSelectors.editorPageLogo).click(); cy.wait("@appLibrary"); @@ -341,12 +332,11 @@ describe("dashboard", () => { it("Should verify the app CRUD operation", () => { data.appName = `${fake.companyName}-App`; cy.appUILogin(); - cy.createApp(); - cy.renameApp(data.appName); + cy.createApp(data.appName); cy.dragAndDropWidget("Button", 450, 450); cy.get(commonSelectors.editorPageLogo).click(); - cy.reloadAppForTheElement(data.appName); + cy.get(commonSelectors.appCard(data.appName)).should( "contain.text", data.appName @@ -368,8 +358,7 @@ describe("dashboard", () => { it("Should verify the folder CRUD operation", () => { data.appName = `${fake.companyName}-App`; cy.appUILogin(); - cy.createApp(); - cy.renameApp(data.appName); + cy.createApp(data.appName); cy.dragAndDropWidget("Button", 100, 100); cy.get(commonSelectors.editorPageLogo).click(); @@ -431,7 +420,7 @@ describe("dashboard", () => { .should("be.visible") .and("have.text", "Edit folder"); - cy.get(commonSelectors.folderNameInput).should("be.visible") + cy.get(commonSelectors.folderNameInput).should("be.visible"); // verifyModal( // commonText.updateFolderTitle, diff --git a/cypress-tests/cypress/e2e/workspace/shareApp.cy.js b/cypress-tests/cypress/e2e/workspace/shareApp.cy.js index ff6c9452ed..b9391d303d 100644 --- a/cypress-tests/cypress/e2e/workspace/shareApp.cy.js +++ b/cypress-tests/cypress/e2e/workspace/shareApp.cy.js @@ -13,119 +13,121 @@ describe("App share functionality", () => { data.email = fake.email.toLowerCase(); const slug = data.appName.toLowerCase().replace(/\s+/g, "-"); const firstUserEmail = data.email + const envVar = Cypress.env("environment"); beforeEach(() => { cy.appUILogin(); }); - it("Verify private and public app share funtionality", () => { - cy.apiLogin(); - cy.apiCreateApp(); - cy.openApp(); - cy.renameApp(data.appName); - cy.dragAndDropWidget("Table", 250, 250); + if (envVar === "Community") { + it("Verify private and public app share funtionality", () => { + cy.apiLogin(); + cy.apiCreateApp(data.appName); + cy.openApp(); + cy.dragAndDropWidget("Table", 250, 250); - cy.get(commonWidgetSelector.shareAppButton).click(); + cy.get(commonWidgetSelector.shareAppButton).click(); - for (const elements in commonWidgetSelector.shareModalElements) { - cy.get( - commonWidgetSelector.shareModalElements[elements] - ).verifyVisibleElement( + for (const elements in commonWidgetSelector.shareModalElements) { + cy.get( + commonWidgetSelector.shareModalElements[elements] + ).verifyVisibleElement( + "have.text", + commonText.shareModalElements[elements] + ); + } + + cy.get(commonWidgetSelector.makePublicAppToggle).should("be.visible"); + cy.get(commonWidgetSelector.appLink).should("be.visible"); + cy.get(commonWidgetSelector.appNameSlugInput).should("be.visible"); + // cy.get(commonWidgetSelector.iframeLink).should("be.visible"); + cy.get(commonWidgetSelector.modalCloseButton).should("be.visible"); + + cy.clearAndType(commonWidgetSelector.appNameSlugInput, `${slug}`); + cy.get(commonWidgetSelector.modalCloseButton).click(); + cy.forceClickOnCanvas() + cy.dragAndDropWidget("Button", 50, 50); + cy.get(commonSelectors.editorPageLogo).click(); + + logout(); + cy.visit(`/applications/${slug}`); + + cy.get(commonSelectors.loginButton).should("be.visible"); + + cy.clearAndType(commonSelectors.workEmailInputField, "dev@tooljet.io"); + cy.clearAndType(commonSelectors.passwordInputField, "password"); + cy.get(commonSelectors.loginButton).click(); + + cy.wait(500); + cy.get('[data-cy="draggable-widget-table1"]').should("be.visible"); + cy.get(commonSelectors.viewerPageLogo).click(); + + navigateToAppEditor(data.appName); + cy.get(commonWidgetSelector.shareAppButton).click(); + cy.get(commonWidgetSelector.makePublicAppToggle).check(); + cy.get(commonWidgetSelector.modalCloseButton).click(); + cy.get(commonSelectors.editorPageLogo).click(); + + logout(); + cy.visit(`/applications/${slug}`); + cy.wait(500); + cy.get('[data-cy="draggable-widget-table1"]').should("be.visible"); + }); + + it("Verify app private and public app visibility for the same workspace user", () => { + addNewUserMW(data.firstName, data.email); + + logout(); + cy.visit(`/applications/${slug}`); + cy.get('[data-cy="draggable-widget-table1"]').should("be.visible"); + + cy.appUILogin(); + navigateToAppEditor(data.appName); + cy.skipEditorPopover() + cy.get(commonWidgetSelector.shareAppButton).click(); + cy.get(commonWidgetSelector.makePublicAppToggle).uncheck(); + cy.get(commonWidgetSelector.modalCloseButton).click(); + cy.get(commonSelectors.editorPageLogo).click(); + + logout(); + cy.visit(`/applications/${slug}`); + + cy.login(data.email, "password"); + cy.get(commonSelectors.allApplicationLink).verifyVisibleElement( "have.text", - commonText.shareModalElements[elements] + commonText.allApplicationLink ); - } + }); - cy.get(commonWidgetSelector.makePublicAppToggle).should("be.visible"); - cy.get(commonWidgetSelector.appLink).should("be.visible"); - cy.get(commonWidgetSelector.appNameSlugInput).should("be.visible"); - // cy.get(commonWidgetSelector.iframeLink).should("be.visible"); - cy.get(commonWidgetSelector.modalCloseButton).should("be.visible"); + it("Verify app private and public app visibility for the same instance user", () => { + data.firstName = fake.firstName; + data.email = fake.email.toLowerCase(); - cy.clearAndType(commonWidgetSelector.appNameSlugInput, `${slug}`); - cy.get(commonWidgetSelector.modalCloseButton).click(); - cy.forceClickOnCanvas() - cy.dragAndDropWidget("Button", 50, 50); - cy.get(commonSelectors.editorPageLogo).click(); + logout(); + userSignUp(data.firstName, data.email, "Test"); + cy.visit(`/applications/${slug}`); + cy.wait(1000); - logout(); - cy.visit(`/applications/${slug}`); + cy.clearAndType(commonSelectors.workEmailInputField, data.email); + cy.clearAndType(commonSelectors.passwordInputField, "password"); + cy.get(commonSelectors.signInButton).click(); + cy.wait(1000); - cy.get(commonSelectors.loginButton).should("be.visible"); + cy.visit("/"); + cy.wait(2000); + logout(); + cy.appUILogin(); - cy.clearAndType(commonSelectors.workEmailInputField, "dev@tooljet.io"); - cy.clearAndType(commonSelectors.passwordInputField, "password"); - cy.get(commonSelectors.loginButton).click(); + navigateToAppEditor(data.appName); + cy.skipEditorPopover(); + cy.get(commonWidgetSelector.shareAppButton).click(); + cy.get(commonWidgetSelector.makePublicAppToggle).check(); + cy.get(commonWidgetSelector.modalCloseButton).click(); + cy.get(commonSelectors.editorPageLogo).click(); - cy.wait(500); - cy.get('[data-cy="draggable-widget-table1"]').should("be.visible"); - cy.get(commonSelectors.viewerPageLogo).click(); - - navigateToAppEditor(data.appName); - cy.get(commonWidgetSelector.shareAppButton).click(); - cy.get(commonWidgetSelector.makePublicAppToggle).check(); - cy.get(commonWidgetSelector.modalCloseButton).click(); - cy.get(commonSelectors.editorPageLogo).click(); - - logout(); - cy.visit(`/applications/${slug}`); - cy.wait(500); - cy.get('[data-cy="draggable-widget-table1"]').should("be.visible"); - }); - - it("Verify app private and public app visibility for the same workspace user", () => { - addNewUserMW(data.firstName, data.email); - - logout(); - cy.visit(`/applications/${slug}`); - cy.get('[data-cy="draggable-widget-table1"]').should("be.visible"); - - cy.appUILogin(); - navigateToAppEditor(data.appName); - cy.skipEditorPopover() - cy.get(commonWidgetSelector.shareAppButton).click(); - cy.get(commonWidgetSelector.makePublicAppToggle).uncheck(); - cy.get(commonWidgetSelector.modalCloseButton).click(); - cy.get(commonSelectors.editorPageLogo).click(); - - logout(); - cy.visit(`/applications/${slug}`); - - cy.login(data.email, "password"); - cy.get(commonSelectors.allApplicationLink).verifyVisibleElement( - "have.text", - commonText.allApplicationLink - ); - }); - - it("Verify app private and public app visibility for the same instance user", () => { - data.firstName = fake.firstName; - data.email = fake.email.toLowerCase(); - - logout(); - userSignUp(data.firstName, data.email, "Test"); - cy.visit(`/applications/${slug}`); - cy.wait(1000); - - cy.clearAndType(commonSelectors.workEmailInputField, data.email); - cy.clearAndType(commonSelectors.passwordInputField, "password"); - cy.get(commonSelectors.signInButton).click(); - cy.wait(1000); - - cy.visit("/"); - cy.wait(2000); - logout(); - cy.appUILogin(); - - navigateToAppEditor(data.appName); - cy.skipEditorPopover(); - cy.get(commonWidgetSelector.shareAppButton).click(); - cy.get(commonWidgetSelector.makePublicAppToggle).check(); - cy.get(commonWidgetSelector.modalCloseButton).click(); - cy.get(commonSelectors.editorPageLogo).click(); - - logout(); - cy.visit(`/applications/${slug}`); - cy.get('[data-cy="draggable-widget-table1"]').should("be.visible"); - cy.get(commonSelectors.viewerPageLogo).click(); - }); + logout(); + cy.visit(`/applications/${slug}`); + cy.get('[data-cy="draggable-widget-table1"]').should("be.visible"); + cy.get(commonSelectors.viewerPageLogo).click(); + }); + } }); \ No newline at end of file diff --git a/cypress-tests/cypress/e2e/workspace/userPermissions.cy.js b/cypress-tests/cypress/e2e/workspace/userPermissions.cy.js index b6ebcf5416..6911368965 100644 --- a/cypress-tests/cypress/e2e/workspace/userPermissions.cy.js +++ b/cypress-tests/cypress/e2e/workspace/userPermissions.cy.js @@ -23,11 +23,9 @@ describe("User permissions", () => { permissions.reset(); cy.get(commonSelectors.homePageLogo).click(); cy.wait("@homePage"); - cy.createApp(); - cy.renameApp(data.appName); + cy.createApp(data.appName); cy.dragAndDropWidget("Table", 250, 250); cy.get(commonSelectors.editorPageLogo).click(); - cy.reloadAppForTheElement(data.appName); permissions.addNewUserMW(data.firstName, data.email); common.logout(); }); @@ -41,11 +39,7 @@ describe("User permissions", () => { cy.login(data.email, usersText.password); cy.get("body").then(($title) => { if ($title.text().includes(dashboardText.emptyPageDescription)) { - cy.get(commonSelectors.dashboardAppCreateButton).click(); - cy.verifyToastMessage( - commonSelectors.toastMessage, - usersText.createAppPermissionToast - ); + cy.get(commonSelectors.dashboardAppCreateButton).should('be.disabled'); } else { cy.contains(dashboardText.createAppButton).should("not.exist"); } @@ -120,7 +114,21 @@ describe("User permissions", () => { }); it("Should verify the Create and Delete app permission", () => { + data.appName = `${fake.companyName}-App`; + cy.createApp(data.appName); + cy.get(commonSelectors.editorPageLogo).click(); + cy.wait(1000); common.navigateToManageGroups(); + cy.get(groupsSelector.appSearchBox).click(); + cy.get(groupsSelector.searchBoxOptions).contains(data.appName).click(); + cy.get(groupsSelector.selectAddButton).click(); + cy.get("table").contains("td", data.appName); + cy.contains("td", data.appName) + .parent() + .within(() => { + cy.get("td input").first().should("be.checked"); + }); + cy.wait(500) cy.get(groupsSelector.permissionsLink).click(); cy.get(groupsSelector.appsCreateCheck).check(); cy.get(groupsSelector.permissionsLink).click(); @@ -141,11 +149,10 @@ describe("User permissions", () => { common.viewAppCardOptions(data.appName); cy.contains("Delete app").should("not.exist"); - cy.createApp(); - cy.renameApp(data.email); + cy.createApp(data.email); + cy.dragAndDropWidget("Table", 50, 50); cy.get(commonSelectors.editorPageLogo).click(); - cy.reloadAppForTheElement(data.email); common.viewAppCardOptions(data.email); cy.contains("Delete app").should("exist"); cy.get(commonSelectors.appCardOptions(commonText.deleteAppOption)).click(); diff --git a/cypress-tests/cypress/e2e/workspace/workspaceConstants.cy.js b/cypress-tests/cypress/e2e/workspace/workspaceConstants.cy.js index e5c4f3b26b..0d8258136b 100644 --- a/cypress-tests/cypress/e2e/workspace/workspaceConstants.cy.js +++ b/cypress-tests/cypress/e2e/workspace/workspaceConstants.cy.js @@ -279,8 +279,7 @@ describe("Workspace constants", () => { cy.get(commonSelectors.homePageLogo).click(); cy.wait("@homePage"); - cy.createApp(); - cy.renameApp(data.appName); + cy.createApp(data.appName); selectQueryFromLandingPage("runjs", "JavaScript"); addInputOnQueryField("runjs", `return constants.${data.constantsName}`); From 2f6d38462197dc6bde232d5e67c8b77337682792 Mon Sep 17 00:00:00 2001 From: gsmithun4 Date: Tue, 17 Oct 2023 23:52:18 +0530 Subject: [PATCH 46/67] bump version --- .version | 2 +- frontend/.version | 2 +- server/.version | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.version b/.version index db65e2167e..3fe7dd19b6 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -2.21.0 +2.21.1 diff --git a/frontend/.version b/frontend/.version index db65e2167e..3fe7dd19b6 100644 --- a/frontend/.version +++ b/frontend/.version @@ -1 +1 @@ -2.21.0 +2.21.1 diff --git a/server/.version b/server/.version index db65e2167e..3fe7dd19b6 100644 --- a/server/.version +++ b/server/.version @@ -1 +1 @@ -2.21.0 +2.21.1 From 5e9366bfe4e0684c83413abb6267c630d617afd4 Mon Sep 17 00:00:00 2001 From: Anantshree Chandola Date: Tue, 17 Oct 2023 23:54:53 +0530 Subject: [PATCH 47/67] Revamp: Remove duplicate function (#7937) * revamp * update --- frontend/src/Editor/Header/EditAppName.jsx | 4 ++-- frontend/src/_components/AppModal.jsx | 4 ++-- frontend/src/_helpers/utils.js | 20 ++------------------ 3 files changed, 6 insertions(+), 22 deletions(-) diff --git a/frontend/src/Editor/Header/EditAppName.jsx b/frontend/src/Editor/Header/EditAppName.jsx index 8ac727e5be..304e964eb2 100644 --- a/frontend/src/Editor/Header/EditAppName.jsx +++ b/frontend/src/Editor/Header/EditAppName.jsx @@ -1,7 +1,7 @@ import React, { useRef, useEffect, useState } from 'react'; import { ToolTip } from '@/_components'; import { appService } from '@/_services'; -import { handleHttpErrorMessages, validateAppName, validateName } from '@/_helpers/utils'; +import { handleHttpErrorMessages, validateName } from '@/_helpers/utils'; import InfoOrErrorBox from './InfoOrErrorBox'; import { toast } from 'react-hot-toast'; @@ -32,7 +32,7 @@ function EditAppName({ appId, appName = '', onNameChanged }) { const saveAppName = async (newName) => { const trimmedName = newName.trim(); - if (validateName(trimmedName, 'App name', true)?.errorMsg) { + if (validateName(trimmedName, 'App', false, true)?.errorMsg) { setName(appName); clearError(); setIsEditing(false); diff --git a/frontend/src/_components/AppModal.jsx b/frontend/src/_components/AppModal.jsx index 6ff81c6b79..ab9773a5d8 100644 --- a/frontend/src/_components/AppModal.jsx +++ b/frontend/src/_components/AppModal.jsx @@ -3,7 +3,7 @@ import { toast } from 'react-hot-toast'; import Modal from '../HomePage/Modal'; import { ButtonSolid } from '@/_ui/AppButton/AppButton'; import _ from 'lodash'; -import { validateAppName } from '@/_helpers/utils'; +import { validateName } from '@/_helpers/utils'; export function AppModal({ closeModal, @@ -105,7 +105,7 @@ export function AppModal({ setInfoText('Maximum length has been reached'); } else { setInfoText(''); - const error = validateAppName(trimmedName); + const error = validateName(trimmedName, 'App', false); setErrorText(error?.errorMsg || ''); } }; diff --git a/frontend/src/_helpers/utils.js b/frontend/src/_helpers/utils.js index f3fb99001d..fd562ce24f 100644 --- a/frontend/src/_helpers/utils.js +++ b/frontend/src/_helpers/utils.js @@ -920,26 +920,10 @@ export function isExpectedDataType(data, expectedDataType) { return data; } -export const validateAppName = (name, showError = false) => { +export const validateName = (name, nameType, emptyCheck = true, showError = false, allowSpecialChars = true) => { const newName = name.trim(); let errorMsg = ''; - if (newName.length > 50) { - errorMsg = `Maximum length has been reached`; - showError && - toast.error(errorMsg, { - id: '1', - }); - } - return { - status: !(errorMsg.length > 0), - errorMsg, - }; -}; - -export const validateName = (name, nameType, showError = false, allowSpecialChars = true) => { - const newName = name.trim(); - let errorMsg = ''; - if (!newName) { + if (emptyCheck && !newName) { errorMsg = `${nameType} can't be empty`; showError && toast.error(errorMsg, { From 2799f2dffcd5edfe953e2009d8f11ae57bd45e91 Mon Sep 17 00:00:00 2001 From: gsmithun4 Date: Tue, 17 Oct 2023 23:57:21 +0530 Subject: [PATCH 48/67] bump version --- .version | 2 +- frontend/.version | 2 +- server/.version | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.version b/.version index db65e2167e..f48f82fa2c 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -2.21.0 +2.22.0 diff --git a/frontend/.version b/frontend/.version index db65e2167e..f48f82fa2c 100644 --- a/frontend/.version +++ b/frontend/.version @@ -1 +1 @@ -2.21.0 +2.22.0 diff --git a/server/.version b/server/.version index db65e2167e..f48f82fa2c 100644 --- a/server/.version +++ b/server/.version @@ -1 +1 @@ -2.21.0 +2.22.0 From 94707a2bf8f9dea3bc2a022e7279f53f17a860c9 Mon Sep 17 00:00:00 2001 From: Anantshree Chandola Date: Wed, 18 Oct 2023 10:24:18 +0530 Subject: [PATCH 49/67] Revamps related to app import and app clone resources (#7939) * revamps * remove console log * open cloned app * remove extra cloneApp func call * cleanup --------- Co-authored-by: gsmithun4 --- frontend/src/HomePage/AppCard.jsx | 2 -- frontend/src/HomePage/AppList.jsx | 1 - frontend/src/HomePage/HomePage.jsx | 22 ++++++++++--------- server/src/dto/clone-resources.dto.ts | 5 ++++- server/src/dto/import-resources.dto.ts | 6 ++--- .../import_export_resources.service.ts | 13 +++++++---- 6 files changed, 28 insertions(+), 21 deletions(-) diff --git a/frontend/src/HomePage/AppCard.jsx b/frontend/src/HomePage/AppCard.jsx index 79cd2b88e6..380f1281e9 100644 --- a/frontend/src/HomePage/AppCard.jsx +++ b/frontend/src/HomePage/AppCard.jsx @@ -20,7 +20,6 @@ export default function AppCard({ canCreateApp, canDeleteApp, deleteApp, - cloneApp, exportApp, appActionModal, canUpdateApp, @@ -85,7 +84,6 @@ export default function AppCard({ canDeleteApp={canDeleteApp(app)} canUpdateApp={canUpdateApp(app)} deleteApp={() => deleteApp(app)} - cloneApp={() => cloneApp(app)} exportApp={() => exportApp(app)} isMenuOpen={isMenuOpen} darkMode={darkMode} diff --git a/frontend/src/HomePage/AppList.jsx b/frontend/src/HomePage/AppList.jsx index 0ff33cc6b0..80efa14b0f 100644 --- a/frontend/src/HomePage/AppList.jsx +++ b/frontend/src/HomePage/AppList.jsx @@ -39,7 +39,6 @@ const AppList = (props) => { canDeleteApp={props.canDeleteApp} canUpdateApp={props.canUpdateApp} deleteApp={props.deleteApp} - cloneApp={props.cloneApp} exportApp={props.exportApp} appActionModal={props.appActionModal} /> diff --git a/frontend/src/HomePage/HomePage.jsx b/frontend/src/HomePage/HomePage.jsx index 84b8130b8a..0c16707f54 100644 --- a/frontend/src/HomePage/HomePage.jsx +++ b/frontend/src/HomePage/HomePage.jsx @@ -133,14 +133,14 @@ class HomePageComponent extends React.Component { _self.setState({ creatingApp: true }); try { const data = await appService.createApp({ icon: sample(iconList), name: appName }); - const workspaceId = getWorkspaceId(); _self.props.navigate(`/${workspaceId}/apps/${data.id}`); toast.success('App created successfully!'); + _self.setState({ creatingApp: false }); return true; } catch (errorResponse) { + _self.setState({ creatingApp: false }); if (errorResponse.statusCode === 409) { - _self.setState({ creatingApp: false }); return false; } else { throw errorResponse; @@ -155,11 +155,11 @@ class HomePageComponent extends React.Component { await appService.saveApp(appId, { name: newAppName }); await this.fetchApps(); toast.success('App name has been updated!'); + _self.setState({ renamingApp: false }); return true; } catch (errorResponse) { + _self.setState({ renamingApp: false }); if (errorResponse.statusCode === 409) { - console.log(errorResponse); - _self.setState({ renamingApp: false }); return false; } else { throw errorResponse; @@ -171,13 +171,16 @@ class HomePageComponent extends React.Component { this.setState({ showAppDeletionConfirmation: true, appToBeDeleted: app }); }; - cloneApp = async (appId, appName) => { + cloneApp = async (appName, appId) => { this.setState({ isCloningApp: true }); try { - const data = await appService.cloneApp(appName, appId); + const data = await appService.cloneResource({ + app: [{ id: appId, name: appName }], + organization_id: getWorkspaceId(), + }); toast.success('App cloned successfully!'); + this.props.navigate(`/${getWorkspaceId()}/apps/${data?.imports?.app[0]?.id}`); this.setState({ isCloningApp: false }); - this.props.navigate(`/${getWorkspaceId()}/apps/${data.id}`); return true; } catch (_error) { this.setState({ isCloningApp: false }); @@ -221,9 +224,9 @@ class HomePageComponent extends React.Component { const organization_id = getWorkspaceId(); const isLegacyImport = isEmpty(importJSON.tooljet_version); if (isLegacyImport) { - importJSON = { app: [{ definition: importJSON }], tooljet_version: importJSON.tooljetVersion }; + importJSON = { app: [{ definition: importJSON, appName: appName }], tooljet_version: importJSON.tooljetVersion }; } - const requestBody = { organization_id, appName, ...importJSON }; + const requestBody = { organization_id, ...importJSON }; try { const data = await appService.importResource(requestBody); toast.success('App imported successfully.'); @@ -841,7 +844,6 @@ class HomePageComponent extends React.Component { canDeleteApp={this.canDeleteApp} canUpdateApp={this.canUpdateApp} deleteApp={this.deleteApp} - cloneApp={this.cloneApp} exportApp={this.exportApp} meta={meta} currentFolder={currentFolder} diff --git a/server/src/dto/clone-resources.dto.ts b/server/src/dto/clone-resources.dto.ts index 5dc6c3ab7a..4641410b87 100644 --- a/server/src/dto/clone-resources.dto.ts +++ b/server/src/dto/clone-resources.dto.ts @@ -1,4 +1,4 @@ -import { IsUUID, IsOptional } from 'class-validator'; +import { IsUUID, IsOptional, IsString } from 'class-validator'; export class CloneResourcesDto { @IsOptional() @@ -14,6 +14,9 @@ export class CloneResourcesDto { export class CloneAppDto { @IsUUID() id: string; + + @IsString() + name: string; } export class CloneTooljetDatabaseDto { diff --git a/server/src/dto/import-resources.dto.ts b/server/src/dto/import-resources.dto.ts index 9d6257d4af..723da20405 100644 --- a/server/src/dto/import-resources.dto.ts +++ b/server/src/dto/import-resources.dto.ts @@ -10,9 +10,6 @@ export class ImportResourcesDto { @IsOptional() app: ImportAppDto[]; - @IsOptional() - appName: string; - @IsOptional() tooljet_database: ImportTooljetDatabaseDto[]; } @@ -20,6 +17,9 @@ export class ImportResourcesDto { export class ImportAppDto { @IsDefined() definition: any; + + @IsString() + appName: string; } export class ImportTooljetDatabaseDto { diff --git a/server/src/services/import_export_resources.service.ts b/server/src/services/import_export_resources.service.ts index fce758c0cf..30e6740064 100644 --- a/server/src/services/import_export_resources.service.ts +++ b/server/src/services/import_export_resources.service.ts @@ -59,12 +59,16 @@ export class ImportExportResourcesService { } if (importResourcesDto.app) { - const appName = importResourcesDto.appName; for (const appImportDto of importResourcesDto.app) { user.organizationId = importResourcesDto.organization_id; - const createdApp = await this.appImportExportService.import(user, appImportDto.definition, appName, { - tooljet_database: tableNameMapping, - }); + const createdApp = await this.appImportExportService.import( + user, + appImportDto.definition, + appImportDto.appName, + { + tooljet_database: tableNameMapping, + } + ); imports.app.push({ id: createdApp.id, name: createdApp.name }); } } @@ -82,6 +86,7 @@ export class ImportExportResourcesService { const resourceExport = await this.export(user, exportResourcesDto); resourceExport['organization_id'] = cloneResourcesDto.organization_id; + resourceExport['app'][0]['appName'] = cloneResourcesDto.app[0].name; const clonedResource = await this.import(user, resourceExport as ImportResourcesDto, true); return clonedResource; From 8a4af60fe792afce9bbfa7722280e522542c71f8 Mon Sep 17 00:00:00 2001 From: Adish M Date: Wed, 18 Oct 2023 11:01:55 +0530 Subject: [PATCH 50/67] subpath workflow fix --- .github/workflows/cypress-platform.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cypress-platform.yml b/.github/workflows/cypress-platform.yml index df001669df..b259796d38 100644 --- a/.github/workflows/cypress-platform.yml +++ b/.github/workflows/cypress-platform.yml @@ -148,7 +148,7 @@ jobs: run: docker buildx use mybuilder - name: Build docker image - run: docker buildx build --platform=linux/amd64 -f docker/production.Dockerfile . -t tooljet/tj-osv:cypress + run: docker buildx build --platform=linux/amd64 -f docker/production.Dockerfile . -t tooljet/tj-osv:cypress1 - name: Set up environment variables run: | From 63db13d1c7d66d376d109f8f472638e8493a68da Mon Sep 17 00:00:00 2001 From: Adish M Date: Wed, 18 Oct 2023 11:03:22 +0530 Subject: [PATCH 51/67] adding the changes to other files --- .github/workflows/cypress-appbuilder.yml | 2 +- .github/workflows/cypress-marketplace.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cypress-appbuilder.yml b/.github/workflows/cypress-appbuilder.yml index b7d1177183..2dae3363dc 100644 --- a/.github/workflows/cypress-appbuilder.yml +++ b/.github/workflows/cypress-appbuilder.yml @@ -144,7 +144,7 @@ jobs: run: docker buildx use mybuilder - name: Build docker image - run: docker buildx build --platform=linux/amd64 -f docker/production.Dockerfile . -t tooljet/tj-osv:cypress + run: docker buildx build --platform=linux/amd64 -f docker/production.Dockerfile . -t tooljet/tj-osv:cypress1 - name: Set up environment variables run: | diff --git a/.github/workflows/cypress-marketplace.yml b/.github/workflows/cypress-marketplace.yml index 79c3ad776b..e3d58be518 100644 --- a/.github/workflows/cypress-marketplace.yml +++ b/.github/workflows/cypress-marketplace.yml @@ -131,7 +131,7 @@ jobs: run: docker buildx use mybuilder - name: Build docker image - run: docker buildx build --platform=linux/amd64 -f docker/production.Dockerfile . -t tooljet/tj-osv:cypress + run: docker buildx build --platform=linux/amd64 -f docker/production.Dockerfile . -t tooljet/tj-osv:cypress1 - name: Set up environment variables run: | From 6b2a958123b1a0633fdff7d7052d79ca2321a5c8 Mon Sep 17 00:00:00 2001 From: Adish M Date: Wed, 18 Oct 2023 11:05:02 +0530 Subject: [PATCH 52/67] adding the changes to marketplace --- .github/workflows/cypress-marketplace.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cypress-marketplace.yml b/.github/workflows/cypress-marketplace.yml index e3d58be518..26ee89f514 100644 --- a/.github/workflows/cypress-marketplace.yml +++ b/.github/workflows/cypress-marketplace.yml @@ -38,7 +38,7 @@ jobs: run: docker buildx use mybuilder - name: Build docker image - run: docker buildx build --platform=linux/amd64 -f docker/production.Dockerfile . -t tooljet/tj-osv:cypress + run: docker buildx build --platform=linux/amd64 -f docker/production.Dockerfile . -t tooljet/tj-osv:cypress1 - name: Set up environment variables run: | From 80dc66d7427a58600e1046d21c5987de106f5a4e Mon Sep 17 00:00:00 2001 From: Adish M Date: Wed, 18 Oct 2023 11:38:48 +0530 Subject: [PATCH 53/67] cypress subpath fix --- .github/workflows/cypress-platform.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cypress-platform.yml b/.github/workflows/cypress-platform.yml index b259796d38..6eda6f4962 100644 --- a/.github/workflows/cypress-platform.yml +++ b/.github/workflows/cypress-platform.yml @@ -148,7 +148,7 @@ jobs: run: docker buildx use mybuilder - name: Build docker image - run: docker buildx build --platform=linux/amd64 -f docker/production.Dockerfile . -t tooljet/tj-osv:cypress1 + run: docker buildx build --platform=linux/amd64 -f docker/production.Dockerfile . -t tooljet/tj-osv:cypressplaform - name: Set up environment variables run: | From e63de846c87d9740c3a7aea58c9239a21a8abe1a Mon Sep 17 00:00:00 2001 From: Adish M Date: Wed, 18 Oct 2023 12:03:57 +0530 Subject: [PATCH 54/67] cypress subpath hot fix --- .github/workflows/cypress-appbuilder.yml | 2 +- .github/workflows/cypress-marketplace.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cypress-appbuilder.yml b/.github/workflows/cypress-appbuilder.yml index 2dae3363dc..2cbff90ea9 100644 --- a/.github/workflows/cypress-appbuilder.yml +++ b/.github/workflows/cypress-appbuilder.yml @@ -144,7 +144,7 @@ jobs: run: docker buildx use mybuilder - name: Build docker image - run: docker buildx build --platform=linux/amd64 -f docker/production.Dockerfile . -t tooljet/tj-osv:cypress1 + run: docker buildx build --platform=linux/amd64 -f docker/production.Dockerfile . -t tooljet/tj-osv:cypressplaform - name: Set up environment variables run: | diff --git a/.github/workflows/cypress-marketplace.yml b/.github/workflows/cypress-marketplace.yml index 26ee89f514..b2c138ff6c 100644 --- a/.github/workflows/cypress-marketplace.yml +++ b/.github/workflows/cypress-marketplace.yml @@ -38,7 +38,7 @@ jobs: run: docker buildx use mybuilder - name: Build docker image - run: docker buildx build --platform=linux/amd64 -f docker/production.Dockerfile . -t tooljet/tj-osv:cypress1 + run: docker buildx build --platform=linux/amd64 -f docker/production.Dockerfile . -t tooljet/tj-osv:cypressplaform - name: Set up environment variables run: | @@ -131,7 +131,7 @@ jobs: run: docker buildx use mybuilder - name: Build docker image - run: docker buildx build --platform=linux/amd64 -f docker/production.Dockerfile . -t tooljet/tj-osv:cypress1 + run: docker buildx build --platform=linux/amd64 -f docker/production.Dockerfile . -t tooljet/tj-osv:cypressplaform - name: Set up environment variables run: | From 3ea8d6e3ca5bd30ea661639917fb6007e2d46ed9 Mon Sep 17 00:00:00 2001 From: Muhsin Shah C P Date: Wed, 18 Oct 2023 13:00:17 +0530 Subject: [PATCH 55/67] [feature] Make workspace urls more readable (#6698) * working on replacing workspace id with workspace name * experimenting with zustand * added slug column to workspace table * working on workspace url * working on backward compatibility * fixing bugs * added not found error * fixed workspace switching issue * fix: switching b/w workspaces * fix: workspace login * changed workspace login url link * resolved conflicts * added create organization design * added backend validation * fixed constraint errors issue * fixed: creating new workspace * fixed: update workspace * fixed: update workspace bugs * fixed: auto created slug bugs * fixed: login slug * design changes * added folder slug * fixed: lint error * fixed: invite and first user issues * fixed: login page redirection * fixed: redirect path * added reserved word check * fix: edit workspace design * fix: folder query issue * fix: create and edit workspace modal validation issues * fixing failed test cases * fixing failed test cases - app.e2e * fixed organizations specs * fixed public app issue * working on app slug * Added app slug design to the general settings * Working on appId -> slug changes - Handling appId cases - Fixing issues * Worked on share modal design change - replaced slug functionality - Fixed backend slug issues - Fixed page handle issues * changed switch label * replace version param with query param * fix: possible uuid bug * fix: login app slug redirection issue * Worked on unique app slug * moved all apps related api calls to apps.service.js file * refactoring the code and fixing minor issues * Refactored and fixed some bugs * Fixed bugs: redirect cookie issue * Fixed dark-mode issues * removed duplicate code * Worked on develop branch conflicts * Moved handle app access check to private route * Added fix for navigate * Refactored the code. Added slug to failed sso login redirection path * again some redirect url fixes * onbaord navbar tj-icon onclick * Fix: viewer version id undefined issue * fix: multi-pages, invalid workspace slug * fix: removing the version search param while switching the pages * fix-sso: redirecting to prev tab's login organization slug * fix-sso: google signup * fix: preivew permission issue * Fixing merge issues * Fixed tjdb issues * dark mode fix of manage users button * fix: extra slash in url, tj-logo on click wrong org id * subpath workspace login url * resolved lint issue * fix: cannot clone apps * fixed switch workspace issue * fix: login page flashing issue * fix: back button issue * fix: private endless redirection * Update the modal with new UX * fixed all ui issues * fixed placeholder translation issues * fix: sso multi-request issues * fix: multi-pages crash while promoting a version * fix: error text msg delay * added default slug to the first workspace in the instance * subpath-fix: slug preview url * fix: same value check * fixed switch page query params issue * fix: folder query * fix: manage app users ui responsive issue * Backend PR changes --------- Co-authored-by: gsmithun4 --- .../cypress/constants/texts/common.js | 2 +- frontend/assets/translations/en.json | 8 +- .../LoginPage/GitSSOLoginButton.jsx | 3 +- .../LoginPage/GoogleSSOLoginButton.jsx | 1 + frontend/src/App/App.jsx | 168 +----- frontend/src/AppLoader/AppLoader.jsx | 61 +- .../src/Editor/Comment/CommentActions.jsx | 12 +- frontend/src/Editor/Comment/CommentHeader.jsx | 8 +- frontend/src/Editor/Comment/index.jsx | 23 +- .../Editor/CommentNotifications/Content.jsx | 3 +- .../src/Editor/CommentNotifications/index.jsx | 25 +- frontend/src/Editor/Comments.jsx | 12 +- frontend/src/Editor/Container.jsx | 17 +- frontend/src/Editor/Editor.jsx | 39 +- frontend/src/Editor/Header/EditAppName.jsx | 4 +- frontend/src/Editor/Header/GlobalSettings.jsx | 122 +++- frontend/src/Editor/Header/index.js | 10 +- .../src/Editor/LeftSidebar/SidebarComment.jsx | 15 +- frontend/src/Editor/LeftSidebar/index.jsx | 4 + frontend/src/Editor/ManageAppUsers.jsx | 268 ++++++--- frontend/src/Editor/RealtimeEditor.jsx | 13 +- frontend/src/Editor/ReleaseVersionButton.jsx | 4 +- frontend/src/Editor/Viewer.jsx | 166 +----- .../src/Editor/Viewer/ViewerNavigation.jsx | 3 +- frontend/src/HomePage/AppCard.jsx | 5 +- frontend/src/HomePage/ExportAppModal.jsx | 8 +- frontend/src/HomePage/Folders.jsx | 22 +- frontend/src/HomePage/HomePage.jsx | 29 +- .../HomePage/SwitchWorkspacePage/index.jsx | 19 +- frontend/src/LoginPage/LoginPage.jsx | 537 +++++++++--------- frontend/src/ManageSSO/GeneralSettings.jsx | 5 +- frontend/src/Oauth/Authorize.jsx | 11 +- .../src/OnBoardingForm/OnBoardingForm.jsx | 7 +- .../src/OnBoardingForm/OnbboardingFromSH.jsx | 7 +- .../VerificationSuccessInfoScreen.jsx | 7 +- .../TooljetDatabase/TableListItem/index.jsx | 4 +- .../NotificationCenter/Notification.jsx | 3 +- frontend/src/_components/OnboardingNavbar.jsx | 4 +- .../CreateOrganization.jsx | 238 ++++++-- .../OrganizationManager/EditOrganization.jsx | 254 +++++++-- .../_components/OrganizationManager/List.jsx | 11 +- frontend/src/_components/PrivateRoute.jsx | 94 +-- frontend/src/_helpers/authorizeWorkspace.js | 182 ++++++ frontend/src/_helpers/handle-response.js | 6 +- frontend/src/_helpers/handleAppAccess.js | 75 +++ frontend/src/_helpers/http-client.js | 2 +- frontend/src/_helpers/routes.js | 158 +++++- frontend/src/_helpers/utils.js | 179 +++--- frontend/src/_services/app.service.js | 181 ------ frontend/src/_services/apps.service.js | 206 +++++++ .../src/_services/authentication.service.js | 59 +- frontend/src/_services/index.js | 1 + .../src/_services/organization.service.js | 11 +- frontend/src/_styles/theme.scss | 204 ++++++- frontend/src/_ui/TJLoader/TJLoader.jsx | 13 + frontend/src/_ui/TJLoader/index.js | 1 + server/ee/services/oauth/oauth.service.ts | 14 +- ...5489093-AddUniqueConstraintToFolderName.ts | 4 +- .../1685952833787-AddSlugToWorkspace.ts | 28 + server/src/controllers/app.controller.ts | 31 +- server/src/controllers/apps.controller.ts | 72 ++- .../controllers/organizations.controller.ts | 10 +- server/src/dto/organization.dto.ts | 59 +- server/src/entities/organization.entity.ts | 3 + .../src/helpers/db_constraints.constants.ts | 2 + server/src/helpers/utils.helper.ts | 34 +- .../src/interceptors/valid.app.interceptor.ts | 2 +- .../organizations/organizations.module.ts | 1 + .../src/services/app_import_export.service.ts | 32 +- server/src/services/apps.service.ts | 89 +-- server/src/services/auth.service.ts | 33 +- server/src/services/folders.service.ts | 34 +- server/src/services/organizations.service.ts | 148 +++-- server/src/services/seeds.service.ts | 1 + server/src/services/users.service.ts | 1 + server/test/controllers/app.e2e-spec.ts | 4 +- .../oauth/oauth-git-instance.e2e-spec.ts | 9 +- .../controllers/oauth/oauth-git.e2e-spec.ts | 9 +- .../oauth/oauth-google-instance.e2e-spec.ts | 9 +- .../oauth/oauth-google.e2e-spec.ts | 9 +- .../controllers/organizations.e2e-spec.ts | 13 +- server/test/controllers/session.e2e-spec.ts | 2 +- 82 files changed, 2716 insertions(+), 1471 deletions(-) create mode 100644 frontend/src/_helpers/authorizeWorkspace.js create mode 100644 frontend/src/_helpers/handleAppAccess.js create mode 100644 frontend/src/_services/apps.service.js create mode 100644 frontend/src/_ui/TJLoader/TJLoader.jsx create mode 100644 frontend/src/_ui/TJLoader/index.js create mode 100644 server/migrations/1685952833787-AddSlugToWorkspace.ts diff --git a/cypress-tests/cypress/constants/texts/common.js b/cypress-tests/cypress/constants/texts/common.js index 22699a00f3..6856686179 100644 --- a/cypress-tests/cypress/constants/texts/common.js +++ b/cypress-tests/cypress/constants/texts/common.js @@ -164,7 +164,7 @@ export const commonText = { shareModalElements: { modalHeader: "Share", - makePublicAppToggleLabel: "Make application public?", + makePublicAppToggleLabel: "Make application public", shareableAppLink: "Get shareable link for this application", copyAppLinkButton: "copy", // iframeLinkLabel: "Get embeddable link for this application", diff --git a/frontend/assets/translations/en.json b/frontend/assets/translations/en.json index ff40b511e6..a8c46d9055 100644 --- a/frontend/assets/translations/en.json +++ b/frontend/assets/translations/en.json @@ -117,10 +117,10 @@ "preview": "Preview", "share": "Share", "shareModal": { - "makeApplicationPublic": "Make application public?", - "shareableLink": "Get shareable link for this application", + "makeApplicationPublic": "Make application public", + "shareableLink": "Shareable app link", "copy": "copy", - "embeddableLink": "Get embeddable link for this application", + "embeddableLink": "Embedded app link", "manageUsers": "Users" }, "appVersionManager": { @@ -234,7 +234,7 @@ "addNewWorkSpace": "Add new workspace", "loadOrganizations": "Load Organizations", "createWorkspace": "Create workspace", - "workspaceName": "workspace name", + "workspaceName": "Workspace name", "editWorkspace": "Edit workspace", "menus": { "addWorkspace": "Add workspace", diff --git a/frontend/ee/components/LoginPage/GitSSOLoginButton.jsx b/frontend/ee/components/LoginPage/GitSSOLoginButton.jsx index 3bac30ab25..c6d3d75f61 100644 --- a/frontend/ee/components/LoginPage/GitSSOLoginButton.jsx +++ b/frontend/ee/components/LoginPage/GitSSOLoginButton.jsx @@ -1,9 +1,10 @@ import React from 'react'; import { buildURLWithQuery } from '@/_helpers/utils'; -export default function GitSSOLoginButton({ configs, text }) { +export default function GitSSOLoginButton({ configs, text, setRedirectUrlToCookie }) { const gitLogin = (e) => { e.preventDefault(); + setRedirectUrlToCookie && setRedirectUrlToCookie(); window.location.href = buildURLWithQuery(`${configs.host_name || 'https://github.com'}/login/oauth/authorize`, { client_id: configs?.client_id, scope: 'user:email', diff --git a/frontend/ee/components/LoginPage/GoogleSSOLoginButton.jsx b/frontend/ee/components/LoginPage/GoogleSSOLoginButton.jsx index bd344ac31e..ff0cbe3fb1 100644 --- a/frontend/ee/components/LoginPage/GoogleSSOLoginButton.jsx +++ b/frontend/ee/components/LoginPage/GoogleSSOLoginButton.jsx @@ -12,6 +12,7 @@ export default function GoogleSSOLoginButton(props) { }; const googleLogin = (e) => { e.preventDefault(); + props.setRedirectUrlToCookie && props.setRedirectUrlToCookie(); const { client_id } = props.configs; const authUrl = buildURLWithQuery('https://accounts.google.com/o/oauth2/auth', { redirect_uri: `${window.public_config?.TOOLJET_HOST}${window.public_config?.SUB_PATH ?? '/'}sso/google${ diff --git a/frontend/src/App/App.jsx b/frontend/src/App/App.jsx index e72284077d..5958d6ea70 100644 --- a/frontend/src/App/App.jsx +++ b/frontend/src/App/App.jsx @@ -1,16 +1,8 @@ import React, { Suspense } from 'react'; // eslint-disable-next-line no-unused-vars -import config from 'config'; import { BrowserRouter, Navigate, Route, Routes } from 'react-router-dom'; - -import { - getWorkspaceIdFromURL, - appendWorkspaceId, - stripTrailingSlash, - getSubpath, - pathnameWithoutSubpath, -} from '@/_helpers/utils'; -import { authenticationService, tooljetService, organizationService } from '@/_services'; +import { authorizeWorkspace } from '@/_helpers/authorizeWorkspace'; +import { authenticationService, tooljetService } from '@/_services'; import { withRouter } from '@/_hoc/withRouter'; import { PrivateRoute, AdminRoute } from '@/_components'; import { HomePage } from '@/HomePage'; @@ -36,6 +28,7 @@ import { AppLoader } from '@/AppLoader'; import SetupScreenSelfHost from '../SuccessInfoScreen/SetupScreenSelfHost'; export const BreadCrumbContext = React.createContext({}); import 'react-tooltip/dist/react-tooltip.css'; +import { getWorkspaceIdOrSlugFromURL } from '@/_helpers/routes'; const AppWrapper = (props) => { return ( @@ -69,59 +62,8 @@ class AppComponent extends React.Component { }); }; - isThisExistedRoute = () => { - const existedPaths = [ - 'forgot-password', - 'reset-password', - 'invitations', - 'organization-invitations', - 'setup', - 'confirm', - 'confirm-invite', - ]; - - const subpath = getSubpath(); - const subpathArray = subpath ? subpath.split('/').filter((path) => path != '') : []; - const pathnames = window.location.pathname.split('/')?.filter((path) => path != ''); - const checkPath = () => existedPaths.find((path) => pathnames[subpath ? subpathArray.length : 0] === path); - return pathnames?.length > 0 ? (checkPath() ? true : false) : false; - }; - componentDidMount() { - if (!this.isThisExistedRoute()) { - const workspaceId = getWorkspaceIdFromURL(); - if (workspaceId) { - this.authorizeUserAndHandleErrors(workspaceId); - } else { - const isApplicationsPath = window.location.pathname.includes('/applications/'); - const appId = isApplicationsPath ? pathnameWithoutSubpath(window.location.pathname).split('/')[2] : null; - authenticationService - .validateSession(appId) - .then(({ current_organization_id }) => { - //check if the page is not switch-workspace, if then redirect to the page - if (window.location.pathname !== `${getSubpath() ?? ''}/switch-workspace`) { - this.authorizeUserAndHandleErrors(current_organization_id); - } else { - this.updateCurrentSession({ - current_organization_id, - }); - } - }) - .catch(() => { - if (!this.isThisWorkspaceLoginPage(true) && !isApplicationsPath) { - this.updateCurrentSession({ - authentication_status: false, - }); - } else if (isApplicationsPath) { - this.updateCurrentSession({ - authentication_failed: true, - load_app: true, - }); - } - }); - } - } - + authorizeWorkspace(); this.fetchMetadata(); setInterval(this.fetchMetadata, 1000 * 60 * 60 * 1); } @@ -136,8 +78,8 @@ class AppComponent extends React.Component { componentDidUpdate(prevProps) { // Check if the current location is the dashboard (homepage) if ( - this.props.location.pathname === `/${getWorkspaceIdFromURL()}` && - prevProps.location.pathname !== `/${getWorkspaceIdFromURL()}` && + this.props.location.pathname === `/${getWorkspaceIdOrSlugFromURL()}` && + prevProps.location.pathname !== `/${getWorkspaceIdOrSlugFromURL()}` && this.checkPreviousRoute(prevProps.location.pathname) && prevProps.location.pathname !== `/:workspaceId` ) { @@ -146,93 +88,6 @@ class AppComponent extends React.Component { } } - isThisWorkspaceLoginPage = (justLoginPage = false) => { - const subpath = window?.public_config?.SUB_PATH ? stripTrailingSlash(window?.public_config?.SUB_PATH) : null; - const pathname = location.pathname.replace(subpath, ''); - const pathnames = pathname.split('/').filter((path) => path !== ''); - return (justLoginPage && pathnames[0] === 'login') || (pathnames.length === 2 && pathnames[0] === 'login'); - }; - - authorizeUserAndHandleErrors = (workspaceId) => { - const subpath = getSubpath(); - this.updateCurrentSession({ - current_organization_id: workspaceId, - }); - authenticationService - .authorize() - .then((data) => { - organizationService.getOrganizations().then((response) => { - const current_organization_name = response.organizations.find((org) => org.id === workspaceId)?.name; - // this will add the other details like permission and user previlliage details to the subject - this.updateCurrentSession({ - ...data, - current_organization_name, - organizations: response.organizations, - load_app: true, - }); - - // if user is trying to load the workspace login page, then redirect to the dashboard - if (this.isThisWorkspaceLoginPage()) - return (window.location = appendWorkspaceId(workspaceId, '/:workspaceId')); - }); - }) - .catch((error) => { - // if the auth token didn't contain workspace-id, try switch workspace fn - if (error && error?.data?.statusCode === 401) { - //get current session workspace id - authenticationService - .validateSession() - .then(({ current_organization_id }) => { - // change invalid or not authorized org id to previous one - this.updateCurrentSession({ - current_organization_id, - }); - - organizationService - .switchOrganization(workspaceId) - .then((data) => { - this.updateCurrentSession(data); - if (this.isThisWorkspaceLoginPage()) - return (window.location = appendWorkspaceId(workspaceId, '/:workspaceId')); - this.authorizeUserAndHandleErrors(workspaceId); - }) - .catch(() => { - organizationService.getOrganizations().then((response) => { - const current_organization_name = response.organizations.find( - (org) => org.id === current_organization_id - )?.name; - - this.updateCurrentSession({ - current_organization_name, - load_app: true, - }); - - if (!this.isThisWorkspaceLoginPage()) - return (window.location = `${subpath ?? ''}/login/${workspaceId}`); - }); - }); - }) - .catch(() => this.logout()); - } else if ((error && error?.data?.statusCode == 422) || error?.data?.statusCode == 404) { - window.location = subpath ? `${subpath}${'/switch-workspace'}` : '/switch-workspace'; - } else { - if (!this.isThisWorkspaceLoginPage() && !this.isThisWorkspaceLoginPage(true)) - this.updateCurrentSession({ - authentication_status: false, - }); - } - }); - }; - - updateCurrentSession = (newSession) => { - const currentSession = authenticationService.currentSessionValue; - authenticationService.updateCurrentSession({ ...currentSession, ...newSession }); - }; - - logout = () => { - authenticationService.logout(); - }; - switchDarkMode = (newMode) => { this.setState({ darkMode: newMode }); localStorage.setItem('darkMode', newMode); @@ -314,22 +169,13 @@ class AppComponent extends React.Component { /> } /> - - - - } - /> { - const params = useParams(); - const appId = params.id; - - // eslint-disable-next-line react-hooks/exhaustive-deps - useEffect(() => loadAppDetails(), []); - - const loadAppDetails = () => { - appService.getApp(appId, 'edit').catch((error) => { - handleError(error); - }); - }; - - const switchOrganization = (orgId) => { - const path = `/apps/${appId}`; - const sub_path = window?.public_config?.SUB_PATH ? stripTrailingSlash(window?.public_config?.SUB_PATH) : ''; - organizationService.switchOrganization(orgId).then( - () => { - window.location.href = `${sub_path}/${orgId}${path}`; - }, - () => { - return (window.location.href = `${sub_path}/login/${orgId}?redirectTo=${path}`); - } - ); - }; - - const handleError = (error) => { - try { - if (error?.data) { - const statusCode = error.data?.statusCode; - if (statusCode === 403) { - const errorObj = safelyParseJSON(error.data?.message); - if ( - errorObj?.organizationId && - authenticationService.currentSessionValue.current_organization_id !== errorObj?.organizationId - ) { - switchOrganization(errorObj?.organizationId); - return; - } - redirectToDashboard(); - } else if (statusCode === 401) { - window.location = `${getSubpath() ?? ''}/login${ - !_.isEmpty(getWorkspaceId()) ? `/${getWorkspaceId()}` : '' - }?redirectTo=${this.props.location.pathname}`; - return; - } else if (statusCode === 404 || statusCode === 422) { - toast.error(error?.error ?? 'App not found'); - } - redirectToDashboard(); - } - } catch (err) { - redirectToDashboard(); - } - }; - return config.ENABLE_MULTIPLAYER_EDITING ? : ; }; diff --git a/frontend/src/Editor/Comment/CommentActions.jsx b/frontend/src/Editor/Comment/CommentActions.jsx index 836012b806..f63ee536a0 100644 --- a/frontend/src/Editor/Comment/CommentActions.jsx +++ b/frontend/src/Editor/Comment/CommentActions.jsx @@ -5,10 +5,11 @@ import { useSpring, animated } from 'react-spring'; import usePopover from '@/_hooks/use-popover'; import OptionsIcon from './icons/options.svg'; // import OptionsSelectedIcon from './icons/options-selected.svg'; -import useRouter from '@/_hooks/use-router'; import { commentsService } from '@/_services'; import { useTranslation } from 'react-i18next'; +import { useAppDataStore } from '@/_stores/appDataStore'; +import { shallow } from 'zustand/shallow'; const CommentActions = ({ socket, @@ -21,8 +22,13 @@ const CommentActions = ({ }) => { const [open, trigger, content, setOpen] = usePopover(false); const popoverFadeStyle = useSpring({ opacity: open ? 1 : 0 }); - const router = useRouter(); const { t } = useTranslation(); + const { appId } = useAppDataStore( + (state) => ({ + appId: state?.appId, + }), + shallow + ); const handleDelete = async () => { await commentsService.deleteComment(commentId); @@ -31,7 +37,7 @@ const CommentActions = ({ socket.send( JSON.stringify({ event: 'events', - data: { message: 'notifications', appId: router.query.id }, + data: { message: 'notifications', appId }, }) ); }; diff --git a/frontend/src/Editor/Comment/CommentHeader.jsx b/frontend/src/Editor/Comment/CommentHeader.jsx index 0232be8521..828c46d899 100644 --- a/frontend/src/Editor/Comment/CommentHeader.jsx +++ b/frontend/src/Editor/Comment/CommentHeader.jsx @@ -7,14 +7,12 @@ import { commentsService } from '@/_services'; import { pluralize } from '@/_helpers/utils'; import Spinner from '@/_ui/Spinner'; -import useRouter from '@/_hooks/use-router'; import UnResolvedIcon from './icons/unresolved.svg'; import ResolvedIcon from './icons/resolved.svg'; -const CommentHeader = ({ socket, count = 0, threadId, isResolved, isThreadOwner, fetchThreads, close }) => { +const CommentHeader = ({ socket, count = 0, threadId, isResolved, isThreadOwner, fetchThreads, close, appId }) => { const [spinning, setSpinning] = React.useState(false); - const router = useRouter(); const handleResolved = async () => { setSpinning(true); @@ -24,7 +22,7 @@ const CommentHeader = ({ socket, count = 0, threadId, isResolved, isThreadOwner, socket.send( JSON.stringify({ event: 'events', - data: { message: 'notifications', appId: router.query.id }, + data: { message: 'notifications', appId }, }) ); if (!isResolved) { @@ -41,7 +39,7 @@ const CommentHeader = ({ socket, count = 0, threadId, isResolved, isThreadOwner, socket.send( JSON.stringify({ event: 'events', - data: { message: 'notifications', appId: router.query.id }, + data: { message: 'notifications', appId }, }) ); }; diff --git a/frontend/src/Editor/Comment/index.jsx b/frontend/src/Editor/Comment/index.jsx index 7c126a3d54..f35912bc48 100644 --- a/frontend/src/Editor/Comment/index.jsx +++ b/frontend/src/Editor/Comment/index.jsx @@ -11,8 +11,20 @@ import { commentsService, organizationService, authenticationService } from '@/_ import useRouter from '@/_hooks/use-router'; import DOMPurify from 'dompurify'; import { capitalize } from 'lodash'; +import { getPathname } from '@/_helpers/routes'; -const Comment = ({ socket, x, y, threadId, user = {}, isResolved, fetchThreads, appVersionsId, canvasWidth }) => { +const Comment = ({ + socket, + x, + y, + threadId, + user = {}, + isResolved, + fetchThreads, + appVersionsId, + canvasWidth, + appId, +}) => { const [loading, setLoading] = React.useState(true); const [editComment, setEditComment] = React.useState(''); const [editCommentId, setEditCommentId] = React.useState(''); @@ -60,7 +72,7 @@ const Comment = ({ socket, x, y, threadId, user = {}, isResolved, fetchThreads, } else { // resetting the query param // react router updates the url with the set basename resulting invalid url unless replaced - router.history(window.location.pathname.replace(window.public_config?.SUB_PATH, '/')); + router.history(getPathname()); } // eslint-disable-next-line react-hooks/exhaustive-deps }, [open]); @@ -82,13 +94,13 @@ const Comment = ({ socket, x, y, threadId, user = {}, isResolved, fetchThreads, socket.send( JSON.stringify({ event: 'events', - data: { message: threadId, appId: router.query.id }, + data: { message: threadId, appId }, }) ); socket.send( JSON.stringify({ event: 'events', - data: { message: 'notifications', appId: router.query.id }, + data: { message: 'notifications', appId }, }) ); fetchData(); @@ -100,7 +112,7 @@ const Comment = ({ socket, x, y, threadId, user = {}, isResolved, fetchThreads, socket.send( JSON.stringify({ event: 'events', - data: { message: 'notifications', appId: router.query.id }, + data: { message: 'notifications', appId }, }) ); }; @@ -168,6 +180,7 @@ const Comment = ({ socket, x, y, threadId, user = {}, isResolved, fetchThreads, fetchThreads={fetchThreads} isThreadOwner={currentUser?.id === user.id} isResolved={isResolved} + appId={appId} /> { const router = useRouter(); @@ -35,7 +36,7 @@ const Content = ({ notifications, loading, darkMode }) => { onClick={() => { router.push({ // react router updates the url with the set basename resulting invalid url unless replaced - pathname: window.location.pathname.replace(window.public_config?.SUB_PATH, '/'), + pathname: getPathname(), search: `?threadId=${comment.thread.id}&commentId=${comment.id}`, }); }} diff --git a/frontend/src/Editor/CommentNotifications/index.jsx b/frontend/src/Editor/CommentNotifications/index.jsx index bc7364ce6a..f2eda8323e 100644 --- a/frontend/src/Editor/CommentNotifications/index.jsx +++ b/frontend/src/Editor/CommentNotifications/index.jsx @@ -3,9 +3,9 @@ import cx from 'classnames'; import React from 'react'; import { commentsService } from '@/_services'; import TabContent from './Content'; -import useRouter from '@/_hooks/use-router'; import { useAppVersionStore } from '@/_stores/appVersionStore'; import { useEditorStore } from '@/_stores/editorStore'; +import { useAppDataStore } from '@/_stores/appDataStore'; import { shallow } from 'zustand/shallow'; const CommentNotifications = ({ socket, pageId }) => { @@ -22,24 +22,31 @@ const CommentNotifications = ({ socket, pageId }) => { }), shallow ); + const { appId } = useAppDataStore( + (state) => ({ + appId: state?.appId, + }), + shallow + ); const [notifications, setNotifications] = React.useState([]); const [loading, setLoading] = React.useState(false); const [key, setKey] = React.useState('active'); - const router = useRouter(); - async function fetchData(selectedKey) { - const isResolved = selectedKey === 'resolved'; - setLoading(true); - const { data } = await commentsService.getNotifications(router.query.id, isResolved, appVersionsId, pageId); - setLoading(false); - setNotifications(data); + if (appId) { + console.log('inside-CommentNotifications', appId); + const isResolved = selectedKey === 'resolved'; + setLoading(true); + const { data } = await commentsService.getNotifications(appId, isResolved, appVersionsId, pageId); + setLoading(false); + setNotifications(data); + } } React.useEffect(() => { fetchData(); // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); + }, [appId]); React.useEffect(() => { socket?.addEventListener('message', function (event) { diff --git a/frontend/src/Editor/Comments.jsx b/frontend/src/Editor/Comments.jsx index 55c6c02013..172d0b3a39 100644 --- a/frontend/src/Editor/Comments.jsx +++ b/frontend/src/Editor/Comments.jsx @@ -5,15 +5,20 @@ import { isEmpty } from 'lodash'; import Comment from './Comment'; import { commentsService } from '@/_services'; import { useAppVersionStore } from '@/_stores/appVersionStore'; -import useRouter from '@/_hooks/use-router'; +import { useAppDataStore } from '@/_stores/appDataStore'; const Comments = ({ newThread = {}, socket, canvasWidth, currentPageId }) => { const [threads, setThreads] = React.useState([]); - const router = useRouter(); const { appVersionsId } = useAppVersionStore((state) => ({ appVersionsId: state?.editingVersion?.id }), shallow); + const { appId } = useAppDataStore( + (state) => ({ + appId: state?.appId, + }), + shallow + ); async function fetchData() { - const { data } = await commentsService.getThreads(router.query.id, appVersionsId); + const { data } = await commentsService.getThreads(appId, appVersionsId); setThreads(data); } @@ -49,6 +54,7 @@ const Comments = ({ newThread = {}, socket, canvasWidth, currentPageId }) => { socket={socket} threadId={id} canvasWidth={canvasWidth} + appId={appId} {...thread} /> ); diff --git a/frontend/src/Editor/Container.jsx b/frontend/src/Editor/Container.jsx index d196cd5213..f7f49a994c 100644 --- a/frontend/src/Editor/Container.jsx +++ b/frontend/src/Editor/Container.jsx @@ -7,7 +7,6 @@ import { DraggableBox } from './DraggableBox'; import update from 'immutability-helper'; import { componentTypes } from './WidgetManager/components'; import { resolveReferences } from '@/_helpers/utils'; -import useRouter from '@/_hooks/use-router'; import Comments from './Comments'; import { commentsService } from '@/_services'; import config from 'config'; @@ -18,6 +17,7 @@ import { addComponents, addNewWidgetToTheEditor } from '@/_helpers/appUtils'; import { useCurrentState } from '@/_stores/currentStateStore'; import { useAppVersionStore } from '@/_stores/appVersionStore'; import { useEditorStore } from '@/_stores/editorStore'; +import { useAppDataStore } from '@/_stores/appDataStore'; import { shallow } from 'zustand/shallow'; const NO_OF_GRIDS = 43; @@ -70,6 +70,12 @@ export const Container = ({ }), shallow ); + const { appId } = useAppDataStore( + (state) => ({ + appId: state?.appId, + }), + shallow + ); const [boxes, setBoxes] = useState(components); const [isDragging, setIsDragging] = useState(false); @@ -78,7 +84,6 @@ export const Container = ({ const [newThread, addNewThread] = useState({}); const [isContainerFocused, setContainerFocus] = useState(false); const [canvasHeight, setCanvasHeight] = useState(null); - const router = useRouter(); const canvasRef = useRef(null); const focusedParentIdRef = useRef(undefined); useHotkeys('meta+z, control+z', () => handleUndo()); @@ -420,7 +425,7 @@ export const Container = ({ ]); const { data } = await commentsService.createThread({ - appId: router.query.id, + appId, x: x, y: e.nativeEvent.offsetY, appVersionsId, @@ -436,7 +441,7 @@ export const Container = ({ socket.send( JSON.stringify({ event: 'events', - data: { message: 'threads', appId: router.query.id }, + data: { message: 'threads', appId }, }) ); @@ -465,7 +470,7 @@ export const Container = ({ }, ]); const { data } = await commentsService.createThread({ - appId: router.query.id, + appId, x, y: y - 130, appVersionsId, @@ -481,7 +486,7 @@ export const Container = ({ socket.send( JSON.stringify({ event: 'events', - data: { message: 'threads', appId: router.query.id }, + data: { message: 'threads', appId }, }) ); diff --git a/frontend/src/Editor/Editor.jsx b/frontend/src/Editor/Editor.jsx index ce8cb2333a..49e6f4a6f1 100644 --- a/frontend/src/Editor/Editor.jsx +++ b/frontend/src/Editor/Editor.jsx @@ -1,6 +1,6 @@ import React from 'react'; import { - appService, + appsService, authenticationService, appVersionService, orgEnvironmentVariableService, @@ -8,8 +8,7 @@ import { } from '@/_services'; import { DndProvider } from 'react-dnd'; import { HTML5Backend } from 'react-dnd-html5-backend'; -import { defaults, cloneDeep, isEqual, isEmpty, debounce, omit } from 'lodash'; -import { shallow } from 'zustand/shallow'; +import _, { defaults, cloneDeep, isEqual, isEmpty, debounce, omit } from 'lodash'; import { Container } from './Container'; import { EditorKeyHooks } from './EditorKeyHooks'; import { CustomDragLayer } from './CustomDragLayer'; @@ -60,6 +59,7 @@ import { useAppDataStore } from '@/_stores/appDataStore'; import { useCurrentStateStore, useCurrentState } from '@/_stores/currentStateStore'; import { resetAllStores } from '@/_stores/utils'; import { setCookie } from '@/_helpers/cookie'; +import { shallow } from 'zustand/shallow'; setAutoFreeze(false); enablePatches(); @@ -67,21 +67,16 @@ enablePatches(); class EditorComponent extends React.Component { constructor(props) { super(props); - resetAllStores(); - const appId = this.props.params.id; + resetAllStores(); + const appId = props.id; useAppDataStore.getState().actions.setAppId(appId); useEditorStore.getState().actions.setIsEditorActive(true); const { socket } = createWebsocketConnection(appId); - - this.renameQueryNameId = React.createRef(); - this.socket = socket; - + this.renameQueryNameId = React.createRef(); const defaultPageId = uuid(); - this.subscription = null; - this.defaultDefinition = { showViewerNavigation: true, homePageId: defaultPageId, @@ -199,7 +194,6 @@ class EditorComponent extends React.Component { threshold: 0, }, }); - const globals = { ...this.props.currentState.globals, theme: { name: this.props.darkMode ? 'dark' : 'light' }, @@ -341,7 +335,7 @@ class EditorComponent extends React.Component { const newState = !this.state.app.is_maintenance_on; // eslint-disable-next-line no-unused-vars - appService.setMaintenance(this.state.app.id, newState).then((data) => { + appsService.setMaintenance(this.state.app.id, newState).then((data) => { this.setState({ app: { ...this.state.app, @@ -358,7 +352,7 @@ class EditorComponent extends React.Component { }; fetchApps = (page) => { - appService.getAll(page).then((data) => + appsService.getAll(page).then((data) => this.setState({ apps: data.apps, }) @@ -366,7 +360,7 @@ class EditorComponent extends React.Component { }; fetchApp = (startingPageHandle) => { - const appId = this.props.params.id; + const appId = this.props.id; const callBack = async (data) => { let dataDefinition = defaults(data.definition, this.defaultDefinition); @@ -424,7 +418,7 @@ class EditorComponent extends React.Component { isLoading: true, }, () => { - appService.getApp(appId).then(callBack); + appsService.getApp(appId).then(callBack); } ); }; @@ -1399,7 +1393,11 @@ class EditorComponent extends React.Component { const queryParamsString = queryParams.map(([key, value]) => `${key}=${value}`).join('&'); - this.props.navigate(`/${getWorkspaceId()}/apps/${this.state.appId}/${handle}?${queryParamsString}`); + this.props.navigate(`/${getWorkspaceId()}/apps/${this.state.slug}/${handle}?${queryParamsString}`, { + state: { + isSwitchingPage: true, + }, + }); const { globals: existingGlobals } = this.props.currentState; @@ -1511,8 +1509,11 @@ class EditorComponent extends React.Component { const selectedComponents = this?.props?.selectedComponents; const currentState = this.props?.currentState; const editingVersion = this.props?.editingVersion; + const previewQuery = queryString.stringify({ version: editingVersion?.name }); const appVersionPreviewLink = editingVersion - ? `/applications/${app.id}/versions/${editingVersion.id}/${currentState.page.handle}` + ? `/applications/${slug || appId}/${currentState.page.handle}${ + !_.isEmpty(previewQuery) ? `?${previewQuery}` : '' + }` : ''; return (
@@ -1605,6 +1606,8 @@ class EditorComponent extends React.Component { updateOnSortingPages={this.updateOnSortingPages} apps={apps} setEditorMarginLeft={this.handleEditorMarginLeftChange} + slug={slug} + handleSlugChange={this.handleSlugChange} /> {!this.props.showComments && ( diff --git a/frontend/src/Editor/Header/EditAppName.jsx b/frontend/src/Editor/Header/EditAppName.jsx index 304e964eb2..d1514d60e7 100644 --- a/frontend/src/Editor/Header/EditAppName.jsx +++ b/frontend/src/Editor/Header/EditAppName.jsx @@ -1,6 +1,6 @@ import React, { useRef, useEffect, useState } from 'react'; import { ToolTip } from '@/_components'; -import { appService } from '@/_services'; +import { appsService } from '@/_services'; import { handleHttpErrorMessages, validateName } from '@/_helpers/utils'; import InfoOrErrorBox from './InfoOrErrorBox'; import { toast } from 'react-hot-toast'; @@ -47,7 +47,7 @@ function EditAppName({ appId, appName = '', onNameChanged }) { } try { - await appService.saveApp(appId, { name: trimmedName }); + await appsService.saveApp(appId, { name: trimmedName }); onNameChanged(trimmedName); setIsValid(true); setIsEditing(false); diff --git a/frontend/src/Editor/Header/GlobalSettings.jsx b/frontend/src/Editor/Header/GlobalSettings.jsx index 81b16c426b..d0654d317c 100644 --- a/frontend/src/Editor/Header/GlobalSettings.jsx +++ b/frontend/src/Editor/Header/GlobalSettings.jsx @@ -5,9 +5,11 @@ import { Confirm } from '../Viewer/Confirm'; import { HeaderSection } from '@/_ui/LeftSidebar'; import FxButton from '../CodeBuilder/Elements/FxButton'; import { CodeHinter } from '../CodeBuilder/CodeHinter'; -import { resolveReferences } from '@/_helpers/utils'; +import { resolveReferences, validateName, getWorkspaceId } from '@/_helpers/utils'; import { useTranslation } from 'react-i18next'; import _ from 'lodash'; +import { appsService } from '@/_services'; +import { replaceEditorURL, getHostURL } from '@/_helpers/routes'; import ExportAppModal from '../../HomePage/ExportAppModal'; import { useAppVersionStore } from '@/_stores/appVersionStore'; import { shallow } from 'zustand/shallow'; @@ -22,6 +24,8 @@ export const GlobalSettings = ({ app, backgroundFxQuery, realState, + handleSlugChange, + slug: oldSlug, }) => { const { t } = useTranslation(); const { hideHeader, canvasMaxWidth, canvasMaxWidthType, canvasBackgroundColor } = globalSettings; @@ -29,6 +33,10 @@ export const GlobalSettings = ({ const [forceCodeBox, setForceCodeBox] = useState(true); const [showConfirmation, setConfirmationShow] = useState(false); const [isExportingApp, setIsExportingApp] = React.useState(false); + /* Unique app slug states */ + const [slug, setSlug] = useState({ value: null, error: '' }); + const [slugProgress, setSlugProgress] = useState(false); + const [isSlugUpdated, setSlugUpdatedState] = useState(false); const { isVersionReleased } = useAppVersionStore( (state) => ({ isVersionReleased: state.isVersionReleased, @@ -44,6 +52,54 @@ export const GlobalSettings = ({ left: '0px', }; + useEffect(() => { + setSlug({ value: oldSlug, error: '' }); + }, [oldSlug]); + + const handleInputChange = (value, field) => { + setSlug({ + value: slug?.value, + error: null, + }); + + const error = validateName(value, `App ${field}`, false, !(field === 'slug'), !(field === 'slug')); + + if (!_.isEmpty(value) && value !== oldSlug && _.isEmpty(error.errorMsg)) { + setSlugProgress(true); + appsService + .setSlug(app?.id, value) + .then(() => { + setSlug({ + value, + error: '', + }); + setSlugProgress(false); + handleSlugChange(value); + setSlugUpdatedState(true); + replaceEditorURL(value, realState?.page?.handle); + }) + .catch(({ error }) => { + setSlug({ + value, + error, + }); + setSlugProgress(false); + setSlugUpdatedState(false); + }); + } else { + setSlugProgress(false); + setSlugUpdatedState(false); + setSlug({ + value, + error: error?.errorMsg, + }); + } + }; + + const delayedSlugChange = _.debounce((value, field) => { + handleInputChange(value, field); + }, 500); + const outerStyles = { width: '142px', height: '32px', @@ -81,12 +137,72 @@ export const GlobalSettings = ({ darkMode={darkMode} /> )} -
+
-
+
+
+
+
+ + { + e.persist(); + delayedSlugChange(e.target.value, 'slug'); + }} + data-cy="app-slug-input-field" + defaultValue={oldSlug} + /> + {isSlugUpdated && ( +
+ + + +
+ )} + {slug?.error ? ( + + ) : isSlugUpdated ? ( + + ) : ( + + )} +
+
+
+
+ +
+ {!slugProgress ? ( + `${getHostURL()}/${getWorkspaceId()}/apps/${slug?.value || oldSlug || ''}` + ) : ( +
+
+ Loading... +
+ {`Updating link`} +
+ )} +
+ +
+
+
+
+
diff --git a/frontend/src/Editor/Header/index.js b/frontend/src/Editor/Header/index.js index 52476b009e..005d4a8ff3 100644 --- a/frontend/src/Editor/Header/index.js +++ b/frontend/src/Editor/Header/index.js @@ -12,8 +12,10 @@ import config from 'config'; // eslint-disable-next-line import/no-unresolved import { useUpdatePresence } from '@y-presence/react'; import { useAppVersionStore } from '@/_stores/appVersionStore'; +import { useCurrentState } from '@/_stores/currentStateStore'; import { shallow } from 'zustand/shallow'; import SolidIcon from '@/_ui/Icon/SolidIcons'; +import { redirectToDashboard } from '@/_helpers/routes'; export default function EditorHeader({ M, @@ -43,6 +45,7 @@ export default function EditorHeader({ }), shallow ); + const currentState = useCurrentState(); const updatePresence = useUpdatePresence(); useEffect(() => { @@ -61,7 +64,7 @@ export default function EditorHeader({ }, [currentUser]); const handleLogoClick = () => { // Force a reload for clearing interval triggers - window.location.href = '/'; + redirectToDashboard(); }; return ( @@ -148,9 +151,10 @@ export default function EditorHeader({ )}
diff --git a/frontend/src/Editor/LeftSidebar/SidebarComment.jsx b/frontend/src/Editor/LeftSidebar/SidebarComment.jsx index 8fe411c1ca..9ce9fb6a01 100644 --- a/frontend/src/Editor/LeftSidebar/SidebarComment.jsx +++ b/frontend/src/Editor/LeftSidebar/SidebarComment.jsx @@ -2,9 +2,9 @@ import React, { forwardRef } from 'react'; import cx from 'classnames'; import { LeftSidebarItem } from './SidebarItem'; import { commentsService } from '@/_services'; -import useRouter from '@/_hooks/use-router'; import { useAppVersionStore } from '@/_stores/appVersionStore'; import { useEditorStore } from '@/_stores/editorStore'; +import { useAppDataStore } from '@/_stores/appDataStore'; import { shallow } from 'zustand/shallow'; export const LeftSidebarComment = forwardRef(({ selectedSidebarItem, currentPageId }, ref) => { @@ -20,18 +20,23 @@ export const LeftSidebarComment = forwardRef(({ selectedSidebarItem, currentPage }), shallow ); + const { appId } = useAppDataStore( + (state) => ({ + appId: state?.appId, + }), + shallow + ); const [isActive, toggleActive] = React.useState(false); const [notifications, setNotifications] = React.useState([]); - const router = useRouter(); React.useEffect(() => { - if (appVersionsId) { - commentsService.getNotifications(router.query.id, false, appVersionsId, currentPageId).then(({ data }) => { + if (appVersionsId && appId) { + commentsService.getNotifications(appId, false, appVersionsId, currentPageId).then(({ data }) => { setNotifications(data); }); } // eslint-disable-next-line react-hooks/exhaustive-deps - }, [appVersionsId, currentPageId]); + }, [appVersionsId, currentPageId, appId]); return ( 0} diff --git a/frontend/src/Editor/LeftSidebar/index.jsx b/frontend/src/Editor/LeftSidebar/index.jsx index f946b6df2f..55a8e11107 100644 --- a/frontend/src/Editor/LeftSidebar/index.jsx +++ b/frontend/src/Editor/LeftSidebar/index.jsx @@ -54,6 +54,8 @@ export const LeftSidebar = forwardRef((props, ref) => { toggleAppMaintenance, app, disableEnablePage, + slug, + handleSlugChange, } = props; const { is_maintenance_on } = app; @@ -223,6 +225,8 @@ export const LeftSidebar = forwardRef((props, ref) => { app={app} backgroundFxQuery={backgroundFxQuery} realState={realState} + slug={slug} + handleSlugChange={handleSlugChange} /> ), }; diff --git a/frontend/src/Editor/ManageAppUsers.jsx b/frontend/src/Editor/ManageAppUsers.jsx index 04860f1622..6f7ea88eca 100644 --- a/frontend/src/Editor/ManageAppUsers.jsx +++ b/frontend/src/Editor/ManageAppUsers.jsx @@ -1,16 +1,15 @@ import React from 'react'; -import { appService, authenticationService } from '@/_services'; +import { appService, appsService, authenticationService } from '@/_services'; import Modal from 'react-bootstrap/Modal'; import { toast } from 'react-hot-toast'; import { CopyToClipboard } from 'react-copy-to-clipboard'; import Skeleton from 'react-loading-skeleton'; -import { debounce } from 'lodash'; -import Textarea from '@/_ui/Textarea'; +import _, { debounce } from 'lodash'; import { withTranslation } from 'react-i18next'; import { Link } from 'react-router-dom'; -import { getPrivateRoute } from '@/_helpers/routes'; +import { getPrivateRoute, replaceEditorURL, getHostURL } from '@/_helpers/routes'; +import { validateName } from '@/_helpers/utils'; import SolidIcon from '@/_ui/Icon/SolidIcons'; -import { getSubpath } from '@/_helpers/utils'; class ManageAppUsersComponent extends React.Component { constructor(props) { @@ -20,11 +19,15 @@ class ManageAppUsersComponent extends React.Component { this.state = { showModal: false, app: { ...props.app }, - slugError: null, isLoading: true, isSlugVerificationInProgress: false, addingUser: false, newUser: {}, + newSlug: { + value: null, + error: '', + }, + isSlugUpdated: false, }; } @@ -35,7 +38,7 @@ class ManageAppUsersComponent extends React.Component { } fetchAppUsers = () => { - appService + appsService .getAppUsers(this.props.app.id) .then((data) => this.setState({ @@ -52,6 +55,12 @@ class ManageAppUsersComponent extends React.Component { hideModal = () => { this.setState({ showModal: false, + newSlug: { + value: this.props.slug, + error: '', + }, + isSlugVerificationInProgress: false, + isSlugUpdated: false, }); }; @@ -82,7 +91,7 @@ class ManageAppUsersComponent extends React.Component { }); // eslint-disable-next-line no-unused-vars - appService + appsService .setVisibility(this.state.app.id, newState) .then(() => { this.setState({ @@ -107,41 +116,71 @@ class ManageAppUsersComponent extends React.Component { }); }; - handleSetSlug = (event) => { - const newSlug = event.target.value || this.props.app.id; - this.setState({ isSlugVerificationInProgress: true }); - - appService - .setSlug(this.state.app.id, newSlug) - .then(() => { - this.setState({ - slugError: null, - isSlugVerificationInProgress: false, - }); - this.props.handleSlugChange(newSlug); - }) - .catch(({ error }) => { - this.setState({ - slugError: error, - isSlugVerificationInProgress: false, - }); - }); - }; - delayedSlugChange = debounce((e) => { - this.handleSetSlug(e); + this.handleInputChange(e.target.value, 'slug'); }, 500); + handleInputChange = (value, field) => { + this.setState({ + newSlug: { + value: this.state.newSlug?.value, + error: '', + isSlugUpdated: false, + }, + }); + + const error = validateName(value, `App ${field}`, false, !(field === 'slug'), !(field === 'slug')); + + if (!_.isEmpty(value) && value !== this.props.slug && _.isEmpty(error.errorMsg)) { + this.setState({ + isSlugVerificationInProgress: true, + }); + appsService + .setSlug(this.state.app.id, value) + .then(() => { + this.setState({ + newSlug: { + value: value, + error: '', + }, + isSlugVerificationInProgress: false, + isSlugUpdated: true, + }); + this.props.handleSlugChange(value); + replaceEditorURL(value, this.props.pageHandle); + }) + .catch(({ error }) => { + this.setState({ + newSlug: { + value, + error, + }, + isSlugVerificationInProgress: false, + isSlugUpdated: false, + }); + }); + } else { + this.setState({ + newSlug: { + value, + error: error?.errorMsg, + }, + isSlugVerificationInProgress: false, + isSlugUpdated: false, + }); + } + }; + render() { - const { isLoading, app, slugError, isSlugVerificationInProgress } = this.state; + const { isLoading, app, isSlugVerificationInProgress, newSlug, isSlugUpdated } = this.state; const appId = app.id; - const appLink = `${window.public_config?.TOOLJET_HOST}${getSubpath() ? getSubpath() : ''}/applications/`; + const appLink = `${getHostURL()}/applications/`; const shareableLink = appLink + (this.props.slug || appId); - const slugButtonClass = isSlugVerificationInProgress ? '' : slugError !== null ? 'is-invalid' : 'is-valid'; + const slugButtonClass = !_.isEmpty(newSlug.error) ? 'is-invalid' : 'is-valid'; const embeddableLink = ``; return ( -
+
this.setState({ showModal: true })}> @@ -168,96 +207,159 @@ class ManageAppUsersComponent extends React.Component {
) : ( -
+