Keep filters when navigating through netbox #8328

Closed
opened 2025-12-29 20:35:22 +01:00 by adam · 9 comments
Owner

Originally created by @carlo-4ip on GitHub (Jul 12, 2023).

NetBox version

v3.5.4

Feature type

Change to existing functionality

Proposed functionality

I would like to propose a filter which kind of would work like a "workspace". This filter would be filtering on tenant level, so when filtering on a certain tenant and then clicking the "devices" it shows only the devices of this tenant.

It should be active on every tenant-related page with a list/table that the user visits, like Devices, IP addresses, Prefixes, Wireless LAN, etc. Only resetting this filter should show everything again, so the user is in control.

The more general pages, like Manufacturers or Device Types should not be filtered, as these are applicable for all tenants.

Positioning and design

The filter should be easily accessible in the top left or right corner, so changing from one "workspace" to another is quick and simple.

I would propose something like shown in the following image, but added to this a simple search bar at the top.
https://user-images.githubusercontent.com/12944771/236021102-d95d59e7-a775-42c0-a15f-53973b436d71.png

Use case

As discussed here:
https://github.com/netbox-community/netbox/discussions/12341#discussioncomment-6059217

For example, when navigating to a tenant and see all devices we have a filter of the tenant. But then, if we open a device an want to return to the device list the filter is gone (clicking "devices" in the menu).

The proposed feature would allow for a kind of "workspace" (being the tenant) where the user can search all tenant related info, like devices or IP addresses, while still being able to work with the Netbox menu to switch modules (within that tenant filter). It lets users focus on a certain tenant without having to rebuild the filter each time they click a menu item. Just select the tenant you need in the filter and you can use the menu to switch modules and not be overwhelmed with thousands of entries.

Database changes

I don't think there would be need for database changes.

External dependencies

None.

Originally created by @carlo-4ip on GitHub (Jul 12, 2023). ### NetBox version v3.5.4 ### Feature type Change to existing functionality ### Proposed functionality I would like to propose a filter which kind of would work like a "workspace". This filter would be filtering on tenant level, so when filtering on a certain tenant and then clicking the "devices" it shows only the devices of this tenant. It should be active on every tenant-related page with a list/table that the user visits, like Devices, IP addresses, Prefixes, Wireless LAN, etc. Only resetting this filter should show everything again, so the user is in control. The more general pages, like Manufacturers or Device Types should not be filtered, as these are applicable for all tenants. #### Positioning and design The filter should be easily accessible in the top left or right corner, so changing from one "workspace" to another is quick and simple. I would propose something like shown in the following image, but added to this a simple search bar at the top. https://user-images.githubusercontent.com/12944771/236021102-d95d59e7-a775-42c0-a15f-53973b436d71.png ### Use case As discussed here: https://github.com/netbox-community/netbox/discussions/12341#discussioncomment-6059217 For example, when navigating to a tenant and see all devices we have a filter of the tenant. But then, if we open a device an want to return to the device list the filter is gone (clicking "devices" in the menu). The proposed feature would allow for a kind of "workspace" (being the tenant) where the user can search all tenant related info, like devices or IP addresses, while still being able to work with the Netbox menu to switch modules (within that tenant filter). It lets users focus on a certain tenant without having to rebuild the filter each time they click a menu item. Just select the tenant you need in the filter and you can use the menu to switch modules and not be overwhelmed with thousands of entries. ### Database changes I don't think there would be need for database changes. ### External dependencies None.
adam added the type: featurestatus: under review labels 2025-12-29 20:35:22 +01:00
adam closed this issue 2025-12-29 20:35:22 +01:00
Author
Owner

@kkthxbye-code commented on GitHub (Jul 12, 2023):

Thank you for your interest in extending NetBox. Unfortunately, the information you have provided does not constitute an actionable feature request. Per our contributing guide, a feature request must include a thorough description of the proposed functionality, including any database changes, new views or API endpoints, and so on. It must also include a detailed use case justifying its implementation. If you would like to elaborate on your proposal, please modify your post above. If sufficient detail is not added, this issue will be closed.

To add to the canned response, feature requests are not intended to workshop ideas. You will need to edit the feature request to propose an actional idea, that includes any UI changes, what workflow is proposed and optimally how the actual functionality is to be implemented (all models not having a tenant field being an obvious issue that should be accounted for).

@kkthxbye-code commented on GitHub (Jul 12, 2023): > Thank you for your interest in extending NetBox. Unfortunately, the information you have provided does not constitute an actionable feature request. Per our [contributing guide](https://github.com/netbox-community/netbox/blob/develop/CONTRIBUTING.md), a feature request must include a thorough description of the proposed functionality, including any database changes, new views or API endpoints, and so on. It must also include a detailed use case justifying its implementation. If you would like to elaborate on your proposal, please modify your post above. If sufficient detail is not added, this issue will be closed. To add to the canned response, feature requests are not intended to workshop ideas. You will need to edit the feature request to propose an actional idea, that includes any UI changes, what workflow is proposed and optimally how the actual functionality is to be implemented (all models not having a tenant field being an obvious issue that should be accounted for).
Author
Owner

@carlo-4ip commented on GitHub (Jul 12, 2023):

Hi,

I'm sorry for that, I'm quite new to the community and to Netbox. I have a lot of colleagues looking to me for a good working environment to work in. Our last tool didn't fulfill the requirements anymore.

I've updated the request, I hope this is more like you want it to be.
It won't be perfect, but I'm not a programmer or scripter. We are just simple Network Admin in need of good tooling.

@carlo-4ip commented on GitHub (Jul 12, 2023): Hi, I'm sorry for that, I'm quite new to the community and to Netbox. I have a lot of colleagues looking to me for a good working environment to work in. Our last tool didn't fulfill the requirements anymore. I've updated the request, I hope this is more like you want it to be. It won't be perfect, but I'm not a programmer or scripter. We are just simple Network Admin in need of good tooling.
Author
Owner

@jsenecal commented on GitHub (Jul 12, 2023):

So something like "Sticky filters" then, you set them in some UI modal and they stick across pages. A Banner should remember the user that they have some sticky filters activated.

This is a lot of work to implement though, not sure there is substantial ROI however.

@jsenecal commented on GitHub (Jul 12, 2023): So something like "Sticky filters" then, you set them in some UI modal and they stick across pages. A Banner should remember the user that they have some sticky filters activated. This is a lot of work to implement though, not sure there is substantial ROI however.
Author
Owner

@carlo-4ip commented on GitHub (Jul 13, 2023):

Hi Jonathan,

Yes, you are correct. I didn't know this request was a lot of work. I thought, since there is already a filtering function, there could be some code for re-usage.

However, I should think there have to be more of your users that are in an MSP environment and are dying for a way to work on 1 customer (tenant) at a time.

Please think about it. I would like to hear your thoughts.

Kind regards,
Carlo Vos


From: Jonathan Senecal @.>
Sent: Wednesday, July 12, 2023 5:50:27 PM
To: netbox-community/netbox @.
>
Cc: Carlo Vos @.>; Author @.>
Subject: Re: [netbox-community/netbox] More static Tenant Filter (Issue #13162)

So something like "Sticky filters" then, you set them in some UI modal and they stick across pages. A Banner should remember the user that they have some sticky filters activated.

This is a lot of work to implement though, not sure there is substantial ROI however.


Reply to this email directly, view it on GitHubhttps://github.com/netbox-community/netbox/issues/13162#issuecomment-1632791091, or unsubscribehttps://github.com/notifications/unsubscribe-auth/A7NKKTVPR4HQIVOXQKQPV4LXP3BUHANCNFSM6AAAAAA2HCI3C4.
You are receiving this because you authored the thread.Message ID: @.***>

@carlo-4ip commented on GitHub (Jul 13, 2023): Hi Jonathan, Yes, you are correct. I didn't know this request was a lot of work. I thought, since there is already a filtering function, there could be some code for re-usage. However, I should think there have to be more of your users that are in an MSP environment and are dying for a way to work on 1 customer (tenant) at a time. Please think about it. I would like to hear your thoughts. Kind regards, Carlo Vos ________________________________ From: Jonathan Senecal ***@***.***> Sent: Wednesday, July 12, 2023 5:50:27 PM To: netbox-community/netbox ***@***.***> Cc: Carlo Vos ***@***.***>; Author ***@***.***> Subject: Re: [netbox-community/netbox] More static Tenant Filter (Issue #13162) So something like "Sticky filters" then, you set them in some UI modal and they stick across pages. A Banner should remember the user that they have some sticky filters activated. This is a lot of work to implement though, not sure there is substantial ROI however. — Reply to this email directly, view it on GitHub<https://github.com/netbox-community/netbox/issues/13162#issuecomment-1632791091>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/A7NKKTVPR4HQIVOXQKQPV4LXP3BUHANCNFSM6AAAAAA2HCI3C4>. You are receiving this because you authored the thread.Message ID: ***@***.***>
Author
Owner

@tjdavis3 commented on GitHub (Jul 22, 2023):

I think the "sticky filters" idea is best. Having to set filters over and over again is one of the most frustrating things about working in Netbox. We don't deal with tenants so much, but we do have multiple sites and when working on a given site (eg. doing an audit) it is painful to have to reset the filter every time we edit a device and go back to the list.

@tjdavis3 commented on GitHub (Jul 22, 2023): I think the "sticky filters" idea is best. Having to set filters over and over again is one of the most frustrating things about working in Netbox. We don't deal with tenants so much, but we do have multiple sites and when working on a given site (eg. doing an audit) it is painful to have to reset the filter every time we edit a device and go back to the list.
Author
Owner

@github-actions[bot] commented on GitHub (Oct 29, 2023):

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. NetBox is governed by a small group of core maintainers which means not all opened issues may receive direct feedback. Do not attempt to circumvent this process by "bumping" the issue; doing so will result in its immediate closure and you may be barred from participating in any future discussions. Please see our contributing guide.

@github-actions[bot] commented on GitHub (Oct 29, 2023): This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. NetBox is governed by a small group of core maintainers which means not all opened issues may receive direct feedback. **Do not** attempt to circumvent this process by "bumping" the issue; doing so will result in its immediate closure and you may be barred from participating in any future discussions. Please see our [contributing guide](https://github.com/netbox-community/netbox/blob/develop/CONTRIBUTING.md).
Author
Owner

@Torstein-Eide commented on GitHub (Nov 5, 2023):

Can it be done somethling like this?

Short demo to combined localStorage (Persistent filters) and URL parmeters (Current filter).

<!DOCTYPE html>
<html>

<body  >
    <input type="text" id="header" name="header" placeholder="Enter data">
    <p><button onclick="Apply_and_save_To_Storage()" type="button">Apply!</button></p>
    <p><button onclick="Load_from_Storage()" type="button">Remember me!</button></p>
    
    <script>
        function Apply_and_save_To_Storage() {
            window.localStorage['header'] = document.getElementById('header').value;
        }
    
        function Load_from_Storage() {
            document.getElementById('header').value = window.localStorage['header'];
        }
        window.addEventListener('load', Load_from_Storage);

    </script>

<h1>URL Parameters</h1>
    <p id="parameter-output"></p>

    <script>
        // JavaScript code for capturing and printing URL parameters
        // Get the query string from the URL
        const queryString = window.location.search;

        // Create a URLSearchParams object to parse the query string
        const urlParams = new URLSearchParams(queryString);

        // Create an empty array to store the parameters
        const parametersArray = [];

        // Iterate through the parameters and add them to the array
        urlParams.forEach((value, key) => {
            parametersArray.push({ key, value });
        });

        // Retrieve values from localStorage and combine with URL parameters
        const localStorageValue = localStorage.getItem("header");

        if (localStorageValue) {
            parametersArray.push({ "header": localStorageValue });
        }


        // Print the array of parameters and values to the page
        const parameterOutput = document.getElementById("parameter-output");
        parameterOutput.textContent = JSON.stringify(parametersArray, null, 2);

    </script>
</body>
</html>

I am a noob when it comes to HTML, but from that combind array you can pass that on to the current filter.

@Torstein-Eide commented on GitHub (Nov 5, 2023): Can it be done somethling like this? ### Short demo to combined `localStorage` (Persistent filters) and `URL parmeters` (Current filter). ````html <!DOCTYPE html> <html> <body > <input type="text" id="header" name="header" placeholder="Enter data"> <p><button onclick="Apply_and_save_To_Storage()" type="button">Apply!</button></p> <p><button onclick="Load_from_Storage()" type="button">Remember me!</button></p> <script> function Apply_and_save_To_Storage() { window.localStorage['header'] = document.getElementById('header').value; } function Load_from_Storage() { document.getElementById('header').value = window.localStorage['header']; } window.addEventListener('load', Load_from_Storage); </script> <h1>URL Parameters</h1> <p id="parameter-output"></p> <script> // JavaScript code for capturing and printing URL parameters // Get the query string from the URL const queryString = window.location.search; // Create a URLSearchParams object to parse the query string const urlParams = new URLSearchParams(queryString); // Create an empty array to store the parameters const parametersArray = []; // Iterate through the parameters and add them to the array urlParams.forEach((value, key) => { parametersArray.push({ key, value }); }); // Retrieve values from localStorage and combine with URL parameters const localStorageValue = localStorage.getItem("header"); if (localStorageValue) { parametersArray.push({ "header": localStorageValue }); } // Print the array of parameters and values to the page const parameterOutput = document.getElementById("parameter-output"); parameterOutput.textContent = JSON.stringify(parametersArray, null, 2); </script> </body> </html> ```` I am a noob when it comes to HTML, but from that combind array you can pass that on to the current filter.
Author
Owner

@ITJamie commented on GitHub (Nov 25, 2023):

Another example would be when filtering changelogs and you want to use the next/previous options but based on the filtered list

@ITJamie commented on GitHub (Nov 25, 2023): Another example would be when filtering changelogs and you want to use the next/previous options but based on the filtered list
Author
Owner

@jeremystretch commented on GitHub (Jan 2, 2024):

While I appreciate the perspectives shared here, it seems we still haven't arrived at an actionable proposal. Several immediate considerations still have not been addressed:

  • What is the proposed workflow for enabling a "sticky" filter, versus setting it for one-time use?
  • How should NetBox handle a sticky filter when viewing a model with no applicable filter (e.g. when viewing the interfaces list with a tenant filter enabled)?
  • How can a user disable the sticky filter?

I'm sure there are others. The discussion thus far seems to have focused more on enabling a particular feature and less on the workflows involved.

I'm going to close out this FR as I don't believe attempting to salvage the proposal at this stage makes sense. Instead, I invite anyone interested in doing to so to submit a new FR leveraging what has been discussed here and adding sufficient supporting context and detail. An actionable FR will include the specific mechanism being proposed, ideas for its technical implementation, a set of requirements for how it should function for both applicable and non-applicable views, and example workflows.

Looking forward to rebooting this proposal!

@jeremystretch commented on GitHub (Jan 2, 2024): While I appreciate the perspectives shared here, it seems we still haven't arrived at an actionable proposal. Several immediate considerations still have not been addressed: * What is the proposed workflow for enabling a "sticky" filter, versus setting it for one-time use? * How should NetBox handle a sticky filter when viewing a model with no applicable filter (e.g. when viewing the interfaces list with a tenant filter enabled)? * How can a user disable the sticky filter? I'm sure there are others. The discussion thus far seems to have focused more on enabling a particular feature and less on the workflows involved. I'm going to close out this FR as I don't believe attempting to salvage the proposal at this stage makes sense. Instead, I invite anyone interested in doing to so to [submit a new FR](https://github.com/netbox-community/netbox/issues/new?assignees=&labels=type%3A+feature&projects=&template=feature_request.yaml) leveraging what has been discussed here and adding sufficient supporting context and detail. An actionable FR will include the specific mechanism being proposed, ideas for its technical implementation, a set of requirements for how it should function for both applicable and non-applicable views, and example workflows. Looking forward to rebooting this proposal!
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/netbox#8328