From ede5adfbbf0daee18bf3eb881902507e1f24e2a4 Mon Sep 17 00:00:00 2001 From: checktheroads Date: Sun, 23 May 2021 19:01:05 -0700 Subject: [PATCH] #6372: Don't autopopulate collapsible API select data, improve advanced search --- netbox/project-static/dist/config.js | Bin 164303 -> 164344 bytes netbox/project-static/dist/config.js.map | Bin 471947 -> 472360 bytes netbox/project-static/dist/jobs.js | Bin 165439 -> 165480 bytes netbox/project-static/dist/jobs.js.map | Bin 474977 -> 475390 bytes netbox/project-static/dist/lldp.js | Bin 166826 -> 166867 bytes netbox/project-static/dist/lldp.js.map | Bin 476213 -> 476626 bytes netbox/project-static/dist/netbox.js | Bin 542547 -> 543456 bytes netbox/project-static/dist/netbox.js.map | Bin 1315864 -> 1318792 bytes netbox/project-static/dist/status.js | Bin 187749 -> 187790 bytes netbox/project-static/dist/status.js.map | Bin 524164 -> 524577 bytes netbox/project-static/src/bs.ts | 2 +- netbox/project-static/src/select/api.ts | 56 +++++++++++++++++----- netbox/project-static/src/select/util.ts | 21 ++++++++ netbox/project-static/src/util.ts | 12 ++++- netbox/templates/inc/advanced_search.html | 9 ++-- 15 files changed, 84 insertions(+), 16 deletions(-) diff --git a/netbox/project-static/dist/config.js b/netbox/project-static/dist/config.js index 385a88ee2a2be8663e64176769ad7a1cfce2fe0a..87d23b05dca0d811dea4c595422bf02bb748e00a 100644 GIT binary patch delta 276 zcmYLE!Ait16vPN3{RnCHQ1YPU=Bd1+9}>EW2GW<3CY7Zv3hM`W>tF0iSo{iq$D=8( zc$#@IGjHbWSbQIg*SD(=_SwDE5vHJH3RIdzZM2?BEeIxS1SRJ;)By& zhN=;>ht^_m#$l^g^# zTzFKH1c2Oo(#@~dqL-s`NjLwEEL6jezB%%Zt``Vs|&& U_tczE#O`lb7+HPh&+JtE0LtWFaR2}S delta 252 zcmY+8K?=e!6hyIZq&p8FR2PyDCA)4cS&HZQwkZbUkHo|xB`D|}yoey4!UK2$Z{X5` ziny8?c+AZ65Z?~*{@6K3*X0ZvE1kELRGtc_3?-5|XjH|>YdsXgjmKZdS7;@gK&9Jl=b@Q+;}R{ZYQH!QEBSSppNeG3wG*S8vp_Z>|1d-YE4PL0;qMJUrpLJjbYh>DUyXgbTCK&q<~=2mZba zn~grHc2vOFx&|F}7FDG9Qim2RdySv}0^kXd6ug|qgADG%fB5_ID|6+Dm%;lmr?vPiiQ z?x^5sNS+s&#_S%Vs;CEzeHFfQ*0SUm4}Op~4PMx+aXNAxy-Dc4zn2FV78X_(He)Yu z|M+Z{T+Ye5oFR+LrR`96 E0YdK_asU7T delta 644 zcmZ4SN~Zg{OhXIf7A8|K=2DNa$%*ND+ta+5)EJp8LncLuv4lHXgiLn4YPS8JH`7KY z{Q{qKC!Jg;M@L5;ZxG?`nD3L}q~q$C;f5}e?v~*+{ed@===9ipCa&#w{g@P3naqQ? z{|{!WXJo1jnBEY|WW-bzF#TgRlg#!Dp-dUf8kGTlI=*nj!yS$N3Y~O0HECZ*|HBbjz68~LH?EI`!>bSG3(!SusXOqVqB(bQ+4ss~%=?wAhMl(8LX z(@aL?bTnOAz9{Z7IPm{Cvfz~ zbj7qy<5fczI12GE_vu-ymV!OL^I_p0+;pz1f>}k_~OR&pM zXO?0wp1xmeJ6EvCD4nRA!$q2mn53 B#JT_g diff --git a/netbox/project-static/dist/jobs.js b/netbox/project-static/dist/jobs.js index 90d4375bb9a2b4d4b8787307e2ee230d9c096de9..eb8e1cfb08362f9165bcbdf3b6f5fab28e21a6e4 100644 GIT binary patch delta 276 zcmYLEF>1sx5F`qOa7})2SXY=`FzT){D)SKGlM;cvGP2}w*d{4bUXjkfNEJ9z<^;Bpe9IXLL&T%QJEdQA3RL~Uf zoo+LfB_v7Ju8+ae!;Z^%?6fyUoTk+vrA*VrlW0|J9(4~95ywG=!dFUmKsjx>CWZ$k zdcc~4mr4*Iii0Oz|7xxDVo)yW`oEFIOJzIH%^D63j!NhZv$3R{JLb~>&KF%?w7e19 W-mKqKeSRmlzg=)()tNuB?cEQ$v|iW% delta 252 zcmY+8u?oU47=*Dd;vznPP#q*clx!}RjN;%^{I)3u(mxUti)qq{F6h?B3QZ(%`2 zobC=j?(T8w-cQ}bv2}@VJru%?$6v?SXeGIsmSrPQ zZ_&n-7_nyVJfSGr8@^$X4jBoGYGO@sy+8O-GfY+*H>=6)k!%XbM?^ diff --git a/netbox/project-static/dist/jobs.js.map b/netbox/project-static/dist/jobs.js.map index 8b7e5480a5d6fc6dfeefcc9942c7a1d9deb90e42..0fc0f76e29b905f15e52d0998dd30c851897c80c 100644 GIT binary patch delta 925 zcmZ9KO-vI(6vxxok5zm*-50b3$=Fx*1O*|W}Mq^^|po!=#U`;v9+sVBD@4f$<*{vPxPSti} zMYjq4Q+j#w?0WWY4>>#y$H`|OG>|(}umhLF>(z}`!yK-J*X?Vk$%X`-Sbm-vWMEHvSK#EW?Htghr^`T>QQgj&mY+t@SXRu7DYTd=rDI}#2?er6Ig=I@WeF9sQdEvF zArbMR5DJzgnyw_}Xp*HLDUDKMF`ATOEXqsKQocYjRFM@0MJ2Hy-K#QfshNBnF`4h%n5!18hW)=2 aC%p#hpqq?6F}A8}Hs2;w@Mod)!)89uk$!tFt%9O#ZQ5oQ;;|n)F+|k&t z5NHZWz!groI~w_c^)ebye;3W9G<|a<(+*`LKUAFss5*fzg=#98elUvZl14t7`V3U{ zVC&o+)1jI&wgYXN$*7!;rYp-A#eMFMnZ6KjW%+`v%f4q&tJ;Gn}UvWHQOKg#d+| zGpBD%X406xCzHv5v2uDs3X{65uer01KQy3xK|$uP12iXDC)Lr_+-bXA7SkI>7IPm{ zCs2%UkI7+L#mWa%9td$nq@!CN$Qadj{URnHW(HywAZFdJU&L0wYWh+pcH!yrvg~Qo zXUnq7PG2m?UOYWsnw@*Qg*^Ke4iO!Nr2Nvnl*FP+D+TrP%)FHRa`oxC>g=-HH8t3; GN&o=GdA^4L diff --git a/netbox/project-static/dist/lldp.js b/netbox/project-static/dist/lldp.js index 4a20d8ff7fb4b8c69c2d04c68f4a75ce20c79fc7..e6d717b2ad464c95319a0150bc0c0af19bdfdabf 100644 GIT binary patch delta 276 zcmYLEF>1sx5F`p5;p)`Ey29*&QFoP5c@GgjDG|skV@nQ)ZIU8Qx^((Oid2Ck@5qND zlMAV47G`E=-qZFwZJ%GRKG|3MR0W)R9b!*~iPQw^sn9?;SpyWE<5E&t{xQ+1UQ;+Y z-DW6Dh?1(^5PD1ZJ1)bi)7}(eo>zmEGR`xPqE(@J&;tZSoJQ3bzEZLS%4zAE7#@`v z0Ba6jDnWoKj-GV=tF_XLQMst=|3(%smF==LYdADGDWNkg#*%XGlurY=Ty%L+dLwqX VS-;2n{6TDglW=6!nLo1E+aIO}Uo-#! delta 252 zcmY+8K?=e!6hyIZ#GT+)s4gTQN_K86S&HZQwkZbEABl-YO3;OO=p9^(;yFBpx3Hih zu4V=vGxKQr=ca!=buQ7pTtaQ7^OoYmQ|6SRSTYB-Dj0dK$3nR2^y~Nrtt7Y5vTOzF z9om=@BR0%6Gm4Uf;adjjn2|7?7y!==$@C4PAihKGW%}zz_>5x+8MxRzjf& rwcfX}U=TiB`|bb4U+OvtwO133$c{AsVxMdL?W}>Lb$X|DV2agvb5WF$+q2YZ&vY^ zkZ6KYk(hZfqVd%SAH=NjjYnThKs&Q9ih-*?V8GjHy;?X0!k zT4lDNcif_kUE0tdI?0gurW*Wrrx7|&JMvKZPFtT9lWHhzcUCIhJuxe{9eCN>^dO1$@(mG7!C7KVme)isJ;F}t$O@qaTa&7zm|E6`pOHQ@oWu0a=BRp^Z- zd_;x%ek$;Vu@?P(!rp`VH4euOy9!Ti)(9S1CR_>5 z+}X_n4GRq`4V$r>tr>nbhlVvtmr`gcQ%J`oy^MldUdf~-RV|~OCP$Tc8A(VChf$~? z({d@PM3X%I$!V05^3kLm?AIZy?zu`lrNGO9P6l;^1?x@ z3qJCZV_UGS$|*UWA4I`UsXb5%X^16~vbRoMP z$;8>go+97dS!?rwmUDl!oa3J@;(iP#$%ChGjMRR%)RX(TrkQMW>`IfV!2KV}L63tD V(@mI{wnih|!M?9GTxVHZ%U@@yA_D*b delta 630 zcmccAExWZtwxNY_3zM-IbE!wzcAFQAw%_q)+Q?*B;FIp8lk4Q@=&0ijBHSJGeKMSMTpcsq&?VB{fD*yeA5<~PPUjC` zV%`40k4c)9$vk-b-(aSCMyASu>2;w@Mod)!)89uk$!tFt%9O#ZQ5oQ;;|n)F+|k&t z5NHZWz!groI~w_c^)ebye;3W9G<|a<(+*`LKUAFss5*fzg=#98elUvZl14t7`V3U{ zVC&o+)1jI&wgYXN$*7!;rYp-A#eMFMnZ6KjW%+`v%f4q&tJ;Gn}UvWHQOKg#d+| zGpBD%X406xCzHv5v2uDs3X{65uer01KQy3xK|$uP12iXDC)Lr_+-bXA7SkI>7IPm{ zCs2%UkI7+L#mWa%9td$nq@!CN$Qadj{URnHW(HywAZFdJU&Q9He)?BccH!v{6xq|J z$0)JOPES#0FP^TTz|Ot>r!xB$4iO!Nr2Nvnl*FP+D+TrP%)FHRa`owYI_$FBU+J*F GkN^Ps?7(3F diff --git a/netbox/project-static/dist/netbox.js b/netbox/project-static/dist/netbox.js index 38ad9b6e55794e0c1b8d9aaef0f43301ca4d3524..2ef85bdd279f7d8f4c5bfdf3e6f865db9fe627d9 100644 GIT binary patch delta 3669 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 VoB21Ei3fhLv|gNDS|8ls`+s*b$sYg! delta 3071 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 diff --git a/netbox/project-static/dist/netbox.js.map b/netbox/project-static/dist/netbox.js.map index 88ee490afc1fd8f5380e889fbe2a75afb3e343c3..baad2a59788c000b76415e46032f3114a0690836 100644 GIT binary patch delta 3573 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 delta 1329 zcmZ8gU1%It6lP}cZPJa|?WANAYGWtDHa{JAHQO{vLxXo_H)+W3cEjXHQPIurWOtHv zXR|XgY^bI}B!Vb3r5+!|nunw+(nPG@hgvOY2naQ)An1c&!H5q+eW^cSsdqL%bo1~X zF8AK=obR0b-Pga0z4Jlr+$=ZC&pNK636Ep)^biO?@IGj&L2g+0AUD0?LFF9R0rd-f z4H_ox1CU$73T&K07*(Q*Exe$v=k=^{mBoLjDCDq;t?S>xG5-ni|qOjpbKY3fCrQ}>GnW-(|aXGku6n)=p z?4hMgX~n`lBvr!Y)5V(gG}?%!IB#lCim^zE>>i>=N)(Spfc0Agfo617&?9?f(|?*# zozs(&iQW1jYh6j&!5(-Vo@hmZngk(JvZN3ttw_Bjm{RQXv;tRJ(Gkah)C=z`s1g2V zSGfXA{EodxdP$^Bkz76N`3IB9B$h7P{RlmI&CWWvqEg-9gPdbrO+MhTj7r~I!J&Oso2r`!{yk3T4hbI}f=AnhXKKZiW|5p8j9YO@)J?Vw+NioTozGt)WN?d4v%x9&wY@?C0bR%nu zr@BNvYg+MaLi3rLW!Km_YieSY+i{@*oFl?v+3y!s%@VhWqG=T}n#tshiY%Wvs%x2~ zn22XGrZ{TkMcon`6Gn!uOf91&EF*6=`Cvv9S`f<<0{@6`9JCRZ`>he-N%(kBXqcPV O1%@g*uOIyDv;P4;fuooJ diff --git a/netbox/project-static/dist/status.js b/netbox/project-static/dist/status.js index 66c05a18bf76a6ec0d82a8a381f6b5dc173c6cff..dbac3942cb12811849148605026c620b4f854498 100644 GIT binary patch delta 271 zcmYLEF>1sx5F{!>;F`SPu&)riVAQ2DD)WRqK=`CYpj#PPIyh{T6sgnRBSKsS49N@9 z=L`8qWOCuEnT46znV*l<%jfFp`Qn{@zdcqF`=DbARG36fw4MqLguOLD$+=QW;{2b9 zRs~J**6Cda&LK&vHeC#s?l+~3hgN%2#9>$rQpz+8WfD6Tn+M%NM8tltLg6bVTcDhF zTu%(QN_2pA30^8efGD<}bp5Bb(u=)vN!RB_7EhJ!I5tZ-G}tSlGmOTPa_*2%12~>^ YdC~E8V(ZK0d#dNJiQQby*E750zoms=hyVZp delta 232 zcmeC%&HZ#2cS8%~7N#p}-8HL=QcFsU@)Xia^O8$4^Yau^HA*zAGt)HkN^^1)ZEZ`` z)L<;Vg2bZKyb{-()LbB?SzVS`q>!hRZ(E>IGCg1&lTJ#$Ua^LzwW3CzZN6TfhNh-o zN`79dHAG>eZJu6PVoqtQHNxyfO{nFGwYABKCCM2YnVQx4dZ|FFHZ3zRF(;=I$W7DG ztc9urx^4P{bxd;GS=KX|atP@p<(KBABo9i*JM&F@Z3mfi~Gdp&?Qt>g;yGD($A0`ihBJw$pZXyKT2G8jP=y zXksuSM8^YGxNv~_3Qaaq6N6_?+_-4s*((PVqs{`>luiDBX6OIE$Nx|LXumon`PO_Y5G{$oY9wEeCw9*I~ z7>)CshIC6LVf-%XN;SCnFni!`~0;^9`n@#XxrPW^2nMhOs5heRNXUEX-AnJ3 zGw&s>WzgQBSnUDMN0`r`nKUkfCZd*s3&cc%R>2YSt_+%-DbZry+O^*zmN*3=g~KR% zil=x>Swt#t2o6f_l{k)Y z(7;O0$WRz8sG0^9EN3ubKCmsMafOZUgH`sko(f~@_2>4d(>h${@Ue_)cgK963@05|#|$@giS+IBCNep(GMNW&e>9D$o{_0C zVETf2Oh!yq0o$j~U}|AjuMF_h@r4@|?r7{+=%f=25^#kR?v6&&=g(s@W-|7hUOtEE zrjn5#s-^-|O+W{M)iV}MUpANNl6pRx@(fhvV2j)x(;;?bfbCG+{&gNxIiqqqn$|2| z6z91+X8M9X#F#bx&;q72f|Cjbf#t6QG$>go)zQ`5X}j`TrZ)C~;uiVU@HeGcKyXja6G}v diff --git a/netbox/project-static/src/bs.ts b/netbox/project-static/src/bs.ts index ffb23d10d..ba27dc9a4 100644 --- a/netbox/project-static/src/bs.ts +++ b/netbox/project-static/src/bs.ts @@ -18,7 +18,7 @@ function initMasonry(): void { function initTooltips() { for (const tooltip of getElements('[data-bs-toggle="tooltip"]')) { - new Tooltip(tooltip, { container: 'body', boundary: 'window' }); + new Tooltip(tooltip, { container: 'body' }); } } diff --git a/netbox/project-static/src/select/api.ts b/netbox/project-static/src/select/api.ts index 15e7d210d..f16456f5a 100644 --- a/netbox/project-static/src/select/api.ts +++ b/netbox/project-static/src/select/api.ts @@ -1,8 +1,15 @@ import SlimSelect from 'slim-select'; import queryString from 'query-string'; -import { getApiData, isApiError, getElements, isTruthy, hasError } from '../util'; +import { + getApiData, + isApiError, + getElements, + isTruthy, + hasError, + findFirstAdjacent, +} from '../util'; import { createToast } from '../bs'; -import { setOptionStyles, toggle, getDependencyIds } from './util'; +import { setOptionStyles, toggle, getDependencyIds, initResetButton } from './util'; import type { Option } from 'slim-select/dist/data'; @@ -318,18 +325,45 @@ export function initApiSelect() { select.addEventListener(`netbox.select.onload.${dep}`, handleEvent); } - // Load data. - getOptions(url, select, disabledOptions) - .then(options => instance.setData(options)) - .catch(console.error) - .finally(() => { - // Set option styles, if the field calls for it (color selectors). + /** + * Load this element's options from the NetBox API. + */ + async function loadData(): Promise { + try { + const options = await getOptions(url, select, disabledOptions); + instance.setData(options); + } catch (err) { + console.error(err); + } finally { setOptionStyles(instance); - // Enable the element after data has loaded. toggle('enable', instance); - // Inform any event listeners that data has updated. select.dispatchEvent(event); - }); + } + } + + /** + * Delete this element's options. + */ + function clearData(): void { + return instance.setData([]); + } + + // Determine if this element is part of collapsible element. + const collapse = findFirstAdjacent(select, '.collapse', '.content-container'); + console.log('collapse', collapse); + if (collapse !== null) { + // If this element is part of a collapsible element, only load the data when the + // collapsible element is shown. + // See: https://getbootstrap.com/docs/5.0/components/collapse/#events + collapse.addEventListener('show.bs.collapse', loadData); + collapse.addEventListener('hide.bs.collapse', clearData); + } else { + // Otherwise, load the data on render. + Promise.all([loadData()]); + } + + // Bind event listener to + initResetButton(select, instance); // Set the underlying select element to the same size as the SlimSelect instance. // This is primarily for built-in HTML form validation, which doesn't really work, diff --git a/netbox/project-static/src/select/util.ts b/netbox/project-static/src/select/util.ts index e12d79ef1..b8ee6cd4c 100644 --- a/netbox/project-static/src/select/util.ts +++ b/netbox/project-static/src/select/util.ts @@ -1,4 +1,5 @@ import { readableColor } from 'color2k'; +import { findFirstAdjacent, getElements } from '../util'; import type SlimSelect from 'slim-select'; @@ -184,3 +185,23 @@ export function getDependencyIds(element: Nullable): s const ids = new Set(getAllDependencyIds(element)); return Array.from(ids).map(i => i.replaceAll('_id', '')); } + +/** + * Initialize any adjacent reset buttons so that when clicked, the instance's selected value is cleared. + * + * @param select Select Element + * @param instance SlimSelect Instance + */ +export function initResetButton(select: HTMLSelectElement, instance: SlimSelect) { + const resetButton = findFirstAdjacent(select, 'button[data-reset-select'); + if (resetButton !== null) { + resetButton.addEventListener('click', () => { + select.value = ''; + if (select.multiple) { + instance.setSelected([]); + } else { + instance.setSelected(''); + } + }); + } +} diff --git a/netbox/project-static/src/util.ts b/netbox/project-static/src/util.ts index d43c3af25..f3140e168 100644 --- a/netbox/project-static/src/util.ts +++ b/netbox/project-static/src/util.ts @@ -251,13 +251,23 @@ export function* getRowValues(table: HTMLTableRowElement): Generator { * * @param base Base Element * @param query CSS Query + * @param boundary Optionally specify a CSS Query which, when matched, recursion will cease. */ export function findFirstAdjacent( base: B, query: string, + boundary?: string, ): Nullable { + function atBoundary(element: E): boolean { + if (typeof boundary === 'string' && element !== null) { + if (element.matches(boundary)) { + return true; + } + } + return false; + } function match

(parent: P): Nullable { - if (parent !== null && parent.parentElement !== null) { + if (parent !== null && parent.parentElement !== null && !atBoundary(parent)) { for (const child of parent.parentElement.querySelectorAll(query)) { if (child !== null) { return child; diff --git a/netbox/templates/inc/advanced_search.html b/netbox/templates/inc/advanced_search.html index 4236aec54..43ea21e32 100644 --- a/netbox/templates/inc/advanced_search.html +++ b/netbox/templates/inc/advanced_search.html @@ -50,9 +50,12 @@ {% endif %}