From 8f2c4af3c0abd00eb8527a7195a0ab7355fad8e1 Mon Sep 17 00:00:00 2001 From: Andrew Nicols Date: Tue, 13 Dec 2022 15:39:04 +0800 Subject: [PATCH 1/1] WIP --- admin/tool/behat/amd/build/steps.min.js | Bin 1470 -> 1450 bytes admin/tool/behat/amd/build/steps.min.js.map | Bin 3469 -> 3506 bytes admin/tool/behat/amd/src/steps.js | 64 +++++++++++--------- 3 files changed, 37 insertions(+), 27 deletions(-) diff --git a/admin/tool/behat/amd/build/steps.min.js b/admin/tool/behat/amd/build/steps.min.js index 3ac25170ae24e1b8d5f809cee6ebcc66dafda305..7dd9c2e2465831f60788e86df1ea600f6057747a 100644 GIT binary patch literal 1450 zcmZ`(O>d(x5WV+T5br9&5+Xel(H^$#soh<5wWq2=E=&?fj!kWoHlqCZ9b*H@wz@Lnrz(IlnPuwYyEKG+s^wO|&;pEbye%QbmU z;#DI{%ax3akRT~sXi|(pNfF?*9l%k+r3J0(M|f?xh8tM1M%Y-rY-y{(Hd;n#&*%6^ zivrApsu}^;_?fkp2WR-vb-!M=P}&rIIM{E@2-+T|UdR+ol6KET1KI4dqsh>1$|bk? zUhyir^quEtdh5r+z;Uj#z!8DyF#1{SK+W>Bp_t}ZZKcX)2hygjs&4ma+;iNP1Raxd z!{i!B5;Jp58${;nz+@E$m6&pxWiy( zENcl}@>M)LsqpbJJIX@+>XyEhFd8mp#|`8X-lBmHx37NTpOlz|$!Oy1+%U^>_Qtr4 zy~7@AnC9v?>i0I}OiLz2{M7EiZd4`N4zi;v1+r22OlTsP%qmS1WXWXhR3V$pu6w3W zm(O&$XFAa9dhkQG8@m&kdn8+vZA}+?4QuI1?MJvm@#!d3cAoFrOTStMy~{?3S)QYI z$EXpLPrh`Bqw~3!Ee3rRGoOFuO$Erc-CR#H9(mJvs6pQ;9X9sqniwjtIEV`Gg4P>> zD>u~GTt_oc4Iz#gLb{HI1v;G9UO4>KU7s&M5>oowfIj>IfoEHx+*9}Ozw&hHoToXi zd!~b2|rZ@@#nZCY>;MW6R_Ip*~S0x$HDY@!uc5!B&VuJLW~l7h-pVDazK|C f7mLNW$f!n_@PJA28vXlt-w$un9hd1AU#$KIs6iv! literal 1470 zcmZ`(+fLjt5Pjz>+*CpdN}Uyb%XWc^E~phyM9ULGkx6C~Zyh_eC%`J&fA2Wi3tK=+ zB2PS*GiQ!nz)Wfg12jfu4^RnA975xQ_%49w##p3fkQ)n$n2YE28li5KKybl*9L`#u zqcl3qRuOULedBE76?JPLmPw6ZO>+Z(TWR4N%tWg&G!OHrvw*GDjMn@6^x;_s?$Q*k zf@3n%t{9wCGM3A|kKx*l+Io600cporCoz#71 z_J8NA-P|+_E6WPm;pp&?oeC6c;gEg*&8D|2AJJk(a~5MMEqpbDxr z&PgH2dX6T*QP>iY_hxLtHM9#8@gyX&o(j*omo3i)VZZBYAR!c5)R4Y7Nf{-{`i2&? zB%p$t4Pr{}(r);Viw4rZ&T@Gl-HqVb4TB?oP}!)d<~o{&?Qz!qo^C8 zTWS(46l;{5Ic%T~9%sgqQfld5pZRs}6)AByEYerSm(jRKxUSjD)Pvppn7icw%agr2 z>BU)3_Lkm8kUvgUe{lJ(wWE(P;BOA?b@Jn_LSOVvH&qT-rhxEuMC>~u>{0qgsA#-) zeB`O2TZ^uja3hXgygSw=XS@|*Zs@`UB-Y~?rq+18o4gAQ09$;uMO92 zSGuFj^dYt^#9 zl?$prfu zRpFzzDLr)WO3=lBRSc zsmSG|NF8elA)%|z@T4~yk~kmJmAJeV=fm-PNSjz=SKiA~S2CNY2|Pt?vp|_8z*`mF z_N9MWj-^#~+=EOX`m<`@KQiB^n?`2!_@0A2FWT zJY|w1X@VrpH-3+i+#Cqgh~nU0BFUjl?tw3$P|q3N|K!h_4pObA*4K(gfYzCi(#D}2 z5IsfmJ0%+f69a+f}SvasAR zNYm!m$7@A+W)g{wR4_w@>=>=n?>7<*`3{BO%fonO!b9;6Si)z5Y?>d?<3{(>wR-xt z`*rWzHlj;;S0pI6qeP}rUez~H1^H5i6|}>^1QuF_Cz(+5RjHY`+^o{^hnq?@HSsQ0 zf(#^+rpQ!%g;!%UOX184EidtN3(Q-KPe98XKwrL8>ek7Dac%=gI_o1#NiLhU2-z04 zLN~DA*g)}0&Xn#}b zvb;U>8J(&?7u+PP?55==vpq|uv7!CF{eAKg!*mIPbcWO(l_EiblxNfpvLAG+W0h+~ zA7+@jx8>|}Se<$!3s*_=sXSLPebs#HMZi{5IWev2Jasw#WvA?)(LLH)R(31af*vg& zY=xA(WgnTRbqb&ZU&UxM=+$Ku`3lHoDno;Uu6o&ZgF`jZX{r|}5RwmQ>eme$JclOI zgfVw^LK{S-Ep1>|*}}cTgyfLoiF8p)%t`xIb1>%wvSPpFOl}QS z4EYz$^~`POAAK;_>Ah^OkgPiyf4=eEVL$Cwg@g~jUrULXxaniusurH(SJn$&s*1r| zEghI`no;ENB#=E}o_?=lR`Ee!T+b(Lw%t1FPn`&(_f zyo#{DPA1-ey)3X)as@9S{5IjLykP4&aj>{WK+H3_rV3`y(`!X+jyNMT2%sk-DUD?y z_I>R+Uqn0hgfkFg;5&&YMB+IkAx6H_6?pLO|L*xtD8v*)TZp#r^n~d7&V>*cP9XeS z-*?7Bgr_VN9+&Id6Mp8OI8$i+;dPv)Cpx!KAgzIp5S`N6$l3QqyM-OtRzBOf5;K3{ z^=r0zz@q#Vd$91u2WIib@rCg5=g$xMh!{IRF!|eVcJ1aFFT(>V{Jzr>Cwp)chOq)u z+K;_1EAj>ZL&q_k;yARtaqO{+5Zr4E|G~RpMOOo74<`TeojbU62P{3&Qy6BLB3f1G zrjSV(mq1jYi3bkc6`_=C3<$4dB!RWMwLiM9RGg!CnrVb HUgPN>pHzdT delta 1607 zcma)5&2G~`5EcrcriBAYy-)!wBauXG+=@~vKrO5nCk<_swxNm&RF&gw5(mdI_6Ay^ zDrXLG*%#o#i3>kZz#G7g2jGaroeRva?WRouVafY5JM+yqe;=k^PQ9z8KF*$ab!=ew zypW@ixyreVD*sUsgFCea)%|uE%JUZNAVJ3I$k%!=mjrC?PFfF^C z%|?P8T3AHSBbA|=ZZ#U_Q@~hpLe4z#_2k(B%CblqO-~~hx{k;54JWkfF3ZD(q0qN% zmajAL!1B$$XLG0L<$Wt)-Vk5RhxOykt_LWp+<^{YQRDt(kHd8XO_be=~z3uZ9%dg9_A(O z4x}Q1k$abkPpPY?4vNH&)a2kMQjYhI0*#2aat~*=M)WcHeQYRcy8Oe%db)6&CBOFNWmot)>E>m58=oTZ2H)EGl@E|^q&5B=RS5n|yOs8*) zPWqfWzery=|4%&eHhsPgnsTvR{7&ft%F8xC=a#Ov|Pb8518`K~WDWEEiRgi0xz95_bJpkz_O#n168 z;?Bh6=|ia$>l4>EzwuQB><@+#_p>|Wd6@QOc$c)i5@G>z8!Bs-46gvhXj)A)d zp)RGduu5p1;0hrX@qS`*P$Kk(K`|Ja6pYC-#Wg}|_%S8)0mWrP){<9gQveC=7)8t^ zG{v^Ekaidh<_)=)6vSo%0gq)66JP+yo9lRkm^%hAptOqT;kAN`gsxIp0R`Y!Ru$E? zm@v4lN`6IYvI9P)Yw_)rHmJvXH9~`8L9(xul;|FuX&Y1}WKoHhU@bnV$Yk8Dwv9Mo z8B)uTQP>1ldQU}U<36NpjuvnT;cOJ~Ch%U8rle=AOFv}_Doe!Vw5G&e!~Y8;VfSN$ R5;5n^`hiS8GZe74_Zyqb+uQ&E diff --git a/admin/tool/behat/amd/src/steps.js b/admin/tool/behat/amd/src/steps.js index d61384c284..07ddfb89d5 100644 --- a/admin/tool/behat/amd/src/steps.js +++ b/admin/tool/behat/amd/src/steps.js @@ -15,6 +15,23 @@ import Ajax from 'core/ajax'; import Templates from 'core/templates'; +import PendingJS from 'core/pending'; + +const getGeneratorEntities = (entitytype) => Ajax.call([{ + methodname: 'tool_behat_get_entity_generator', + args: {entitytype} +}])[0]; + +const getRequiredFieldsContent = async(entityData) => { + if (!entityData.required?.length) { + return { + html: '', + js: '', + }; + } + + return Templates.renderForPromise('tool_behat/steprequiredfields', {fields: entityData.required}); +}; /** * Enhancements for the step definitions page. @@ -26,32 +43,25 @@ import Templates from 'core/templates'; */ export const init = () => { // When an entity is selected in the "the following exist" step, fetch and display the required fields. - const selects = document.querySelectorAll('select.entities'); - selects.forEach((select) => { - select.addEventListener('change', async (e) => { // eslint-disable-line space-before-function-paren - M.util.js_pending('behat_steprequiredfields'); - const value = e.target.value; - const response = await Ajax.call([ - { - methodname: 'tool_behat_get_entity_generator', - args: {entitytype: value} - } - ])[0]; - let html = ''; - let js = ''; - if (response.required.length > 0) { - const rendered = await Templates.renderForPromise('tool_behat/steprequiredfields', {fields: response.required}); - html = rendered.html; - js = rendered.js; - } - const parent = e.target.parentElement.parentElement; - const stepRequiredFields = parent.querySelector('.steprequiredfields'); - if (stepRequiredFields) { - Templates.replaceNode(stepRequiredFields, html, js); - } else { - Templates.appendNodeContents(e.target.parentElement.parentElement, html, js); - } - M.util.js_complete('behat_steprequiredfields'); - }); + document.addEventListener('change', async(e) => { + const entityElement = e.target.closest('.entities'); + const stepElement = entityElement.closest('.stepcontent'); + if (!entityElement || !stepElement) { + return; + } + + const pendingPromise = new PendingJS('tool_behat/steps:change'); + + const entityData = await getGeneratorEntities(e.target.value); + const {html, js} = await getRequiredFieldsContent(entityData); + + const stepRequiredFields = stepElement.querySelector('.steprequiredfields'); + if (stepRequiredFields) { + await Templates.replaceNode(stepRequiredFields, html, js); + } else { + await Templates.appendNodeContents(stepElement, html, js); + } + + pendingPromise.resolve(); }); }; -- 2.37.0