From 3acf3b51ee50e9f07e0f93e8042943a3294e8ca0 Mon Sep 17 00:00:00 2001 From: Julio Oliveira at Encora <149191228+Julio-Oliveira-Encora@users.noreply.github.com> Date: Thu, 6 Jun 2024 10:35:27 -0300 Subject: [PATCH] Fixes: #14567 - Export current view of IP Addresses (#15659) * Added javascript and htmx to change the url. * Added javascript and htmx to change the url * Addressed PR comments * Added Netbox.js and netbox.js.map * Addressed PR comments * Addressed PR comments * Addressed PR comments * Addressed PR comments * Addressed PR comments * Addressed PR comments * Addressed PR comments * Addressed PR comments * Linter Issues * Fix assets issue * Fix assets issue * Addressed PR comment. It was added clearLinkParams to clear button. * Added passive:true to search.ts --------- Co-authored-by: Jeremy Stretch --- netbox/project-static/dist/netbox.js | Bin 387735 -> 388117 bytes netbox/project-static/dist/netbox.js.map | Bin 352915 -> 353214 bytes netbox/project-static/src/search.ts | 76 +++++++++++++----- .../utilities/templates/buttons/export.html | 2 +- 4 files changed, 57 insertions(+), 21 deletions(-) diff --git a/netbox/project-static/dist/netbox.js b/netbox/project-static/dist/netbox.js index 58c419b3d4e979c8b658b9af989305a238748219..d8c7c36c5ac619e183f96c8b911e1a5046e6e7e7 100644 GIT binary patch delta 8800 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 delta 104 zcmdmYTy*kL(S{br7N#xCA+n5B)5GMLXKDoKxH~!q>v%glM?hGaPL7V5PC9`gQBOz5 wNS#V2M`v^A={EArk)pni&Q(r2&W_G55Cy)@CC*vx>*bk&m}UEVc~*WG0DK-ErvLx| diff --git a/netbox/project-static/src/search.ts b/netbox/project-static/src/search.ts index 4be740196..1295527cf 100644 --- a/netbox/project-static/src/search.ts +++ b/netbox/project-static/src/search.ts @@ -7,38 +7,74 @@ import { isTruthy } from './util'; */ function quickSearchEventHandler(event: Event): void { const quicksearch = event.currentTarget as HTMLInputElement; - const clearbtn = document.getElementById("quicksearch_clear") as HTMLAnchorElement; + const clearbtn = document.getElementById('quicksearch_clear') as HTMLAnchorElement; if (isTruthy(clearbtn)) { - if (quicksearch.value === "") { - clearbtn.classList.add("invisible"); + if (quicksearch.value === '') { + clearbtn.classList.add('invisible'); } else { - clearbtn.classList.remove("invisible"); + clearbtn.classList.remove('invisible'); } } } +/** + * Clear the existing search parameters in the link to export Current View. + */ +function clearLinkParams(): void { + const link = document.getElementById('export_current_view') as HTMLLinkElement; + const linkUpdated = link?.href.split('&')[0]; + link.setAttribute('href', linkUpdated); +} + +/** + * Update the Export View link to add the Quick Search parameters. + * @param event + */ +function handleQuickSearchParams(event: Event): void { + const quickSearchParameters = event.currentTarget as HTMLInputElement; + + // Clear the existing search parameters + clearLinkParams(); + + if (quickSearchParameters != null) { + const link = document.getElementById('export_current_view') as HTMLLinkElement; + const search_parameter = `q=${quickSearchParameters.value}`; + const linkUpdated = link?.href + '&' + search_parameter; + link.setAttribute('href', linkUpdated); + } +} + /** * Initialize Quicksearch Event listener/handlers. */ export function initQuickSearch(): void { - const quicksearch = document.getElementById("quicksearch") as HTMLInputElement; - const clearbtn = document.getElementById("quicksearch_clear") as HTMLAnchorElement; + const quicksearch = document.getElementById('quicksearch') as HTMLInputElement; + const clearbtn = document.getElementById('quicksearch_clear') as HTMLAnchorElement; if (isTruthy(quicksearch)) { - quicksearch.addEventListener("keyup", quickSearchEventHandler, { - passive: true - }) - quicksearch.addEventListener("search", quickSearchEventHandler, { - passive: true - }) + quicksearch.addEventListener('keyup', quickSearchEventHandler, { + passive: true, + }); + quicksearch.addEventListener('search', quickSearchEventHandler, { + passive: true, + }); + quicksearch.addEventListener('change', handleQuickSearchParams, { + passive: true, + }); + if (isTruthy(clearbtn)) { - clearbtn.addEventListener("click", async () => { - const search = new Event('search'); - quicksearch.value = ''; - await new Promise(f => setTimeout(f, 100)); - quicksearch.dispatchEvent(search); - }, { - passive: true - }) + clearbtn.addEventListener( + 'click', + async () => { + const search = new Event('search'); + quicksearch.value = ''; + await new Promise(f => setTimeout(f, 100)); + quicksearch.dispatchEvent(search); + clearLinkParams(); + }, + { + passive: true, + }, + ); } } } diff --git a/netbox/utilities/templates/buttons/export.html b/netbox/utilities/templates/buttons/export.html index 2085356fa..279757236 100644 --- a/netbox/utilities/templates/buttons/export.html +++ b/netbox/utilities/templates/buttons/export.html @@ -4,7 +4,7 @@ {% trans "Export" %}