mirror of
https://github.com/netbox-community/netbox.git
synced 2026-01-11 21:10:29 +01:00
Add javascript support for custom scripts to dynamically populate/modify on user input on demand #6559
Closed
opened 2025-12-29 19:42:20 +01:00 by adam
·
19 comments
No Branch/Tag Specified
main
update-changelog-comments-docs
feature-removal-issue-type
20911-dropdown
20239-plugin-menu-classes-mutable-state
21097-graphql-id-lookups
feature
fix_module_substitution
20923-dcim-templates
20044-elevation-stuck-lightmode
feature-ip-prefix-link
v4.5-beta1-release
20068-import-moduletype-attrs
20766-fix-german-translation-code-literals
20378-del-script
7604-filter-modifiers-v3
circuit-swap
12318-case-insensitive-uniqueness
20637-improve-device-q-filter
20660-script-load
19724-graphql
20614-update-ruff
14884-script
02496-max-page
19720-macaddress-interface-generic-relation
19408-circuit-terminations-export-templates
20203-openapi-check
fix-19669-api-image-download
7604-filter-modifiers
19275-fixes-interface-bulk-edit
fix-17794-get_field_value_return_list
11507-show-aggregate-and-rir-on-api
9583-add_column_specific_search_field_to_tables
v4.5.0
v4.4.10
v4.4.9
v4.5.0-beta1
v4.4.8
v4.4.7
v4.4.6
v4.4.5
v4.4.4
v4.4.3
v4.4.2
v4.4.1
v4.4.0
v4.3.7
v4.4.0-beta1
v4.3.6
v4.3.5
v4.3.4
v4.3.3
v4.3.2
v4.3.1
v4.3.0
v4.2.9
v4.3.0-beta2
v4.2.8
v4.3.0-beta1
v4.2.7
v4.2.6
v4.2.5
v4.2.4
v4.2.3
v4.2.2
v4.2.1
v4.2.0
v4.1.11
v4.1.10
v4.1.9
v4.1.8
v4.2-beta1
v4.1.7
v4.1.6
v4.1.5
v4.1.4
v4.1.3
v4.1.2
v4.1.1
v4.1.0
v4.0.11
v4.0.10
v4.0.9
v4.1-beta1
v4.0.8
v4.0.7
v4.0.6
v4.0.5
v4.0.3
v4.0.2
v4.0.1
v4.0.0
v3.7.8
v3.7.7
v4.0-beta2
v3.7.6
v3.7.5
v4.0-beta1
v3.7.4
v3.7.3
v3.7.2
v3.7.1
v3.7.0
v3.6.9
v3.6.8
v3.6.7
v3.7-beta1
v3.6.6
v3.6.5
v3.6.4
v3.6.3
v3.6.2
v3.6.1
v3.6.0
v3.5.9
v3.6-beta2
v3.5.8
v3.6-beta1
v3.5.7
v3.5.6
v3.5.5
v3.5.4
v3.5.3
v3.5.2
v3.5.1
v3.5.0
v3.4.10
v3.4.9
v3.5-beta2
v3.4.8
v3.5-beta1
v3.4.7
v3.4.6
v3.4.5
v3.4.4
v3.4.3
v3.4.2
v3.4.1
v3.4.0
v3.3.10
v3.3.9
v3.4-beta1
v3.3.8
v3.3.7
v3.3.6
v3.3.5
v3.3.4
v3.3.3
v3.3.2
v3.3.1
v3.3.0
v3.2.9
v3.2.8
v3.3-beta2
v3.2.7
v3.3-beta1
v3.2.6
v3.2.5
v3.2.4
v3.2.3
v3.2.2
v3.2.1
v3.2.0
v3.1.11
v3.1.10
v3.2-beta2
v3.1.9
v3.2-beta1
v3.1.8
v3.1.7
v3.1.6
v3.1.5
v3.1.4
v3.1.3
v3.1.2
v3.1.1
v3.1.0
v3.0.12
v3.0.11
v3.0.10
v3.1-beta1
v3.0.9
v3.0.8
v3.0.7
v3.0.6
v3.0.5
v3.0.4
v3.0.3
v3.0.2
v3.0.1
v3.0.0
v2.11.12
v3.0-beta2
v2.11.11
v2.11.10
v3.0-beta1
v2.11.9
v2.11.8
v2.11.7
v2.11.6
v2.11.5
v2.11.4
v2.11.3
v2.11.2
v2.11.1
v2.11.0
v2.10.10
v2.10.9
v2.11-beta1
v2.10.8
v2.10.7
v2.10.6
v2.10.5
v2.10.4
v2.10.3
v2.10.2
v2.10.1
v2.10.0
v2.9.11
v2.10-beta2
v2.9.10
v2.10-beta1
v2.9.9
v2.9.8
v2.9.7
v2.9.6
v2.9.5
v2.9.4
v2.9.3
v2.9.2
v2.9.1
v2.9.0
v2.9-beta2
v2.8.9
v2.9-beta1
v2.8.8
v2.8.7
v2.8.6
v2.8.5
v2.8.4
v2.8.3
v2.8.2
v2.8.1
v2.8.0
v2.7.12
v2.7.11
v2.7.10
v2.7.9
v2.7.8
v2.7.7
v2.7.6
v2.7.5
v2.7.4
v2.7.3
v2.7.2
v2.7.1
v2.7.0
v2.6.12
v2.6.11
v2.6.10
v2.6.9
v2.7-beta1
Solcon-2020-01-06
v2.6.8
v2.6.7
v2.6.6
v2.6.5
v2.6.4
v2.6.3
v2.6.2
v2.6.1
v2.6.0
v2.5.13
v2.5.12
v2.6-beta1
v2.5.11
v2.5.10
v2.5.9
v2.5.8
v2.5.7
v2.5.6
v2.5.5
v2.5.4
v2.5.3
v2.5.2
v2.5.1
v2.5.0
v2.4.9
v2.5-beta2
v2.4.8
v2.5-beta1
v2.4.7
v2.4.6
v2.4.5
v2.4.4
v2.4.3
v2.4.2
v2.4.1
v2.4.0
v2.3.7
v2.4-beta1
v2.3.6
v2.3.5
v2.3.4
v2.3.3
v2.3.2
v2.3.1
v2.3.0
v2.2.10
v2.3-beta2
v2.2.9
v2.3-beta1
v2.2.8
v2.2.7
v2.2.6
v2.2.5
v2.2.4
v2.2.3
v2.2.2
v2.2.1
v2.2.0
v2.1.6
v2.2-beta2
v2.1.5
v2.2-beta1
v2.1.4
v2.1.3
v2.1.2
v2.1.1
v2.1.0
v2.0.10
v2.1-beta1
v2.0.9
v2.0.8
v2.0.7
v2.0.6
v2.0.5
v2.0.4
v2.0.3
v2.0.2
v2.0.1
v2.0.0
v2.0-beta3
v1.9.6
v1.9.5
v2.0-beta2
v1.9.4-r1
v1.9.3
v2.0-beta1
v1.9.2
v1.9.1
v1.9.0-r1
v1.8.4
v1.8.3
v1.8.2
v1.8.1
v1.8.0
v1.7.3
v1.7.2-r1
v1.7.1
v1.7.0
v1.6.3
v1.6.2-r1
v1.6.1-r1
1.6.1
v1.6.0
v1.5.2
v1.5.1
v1.5.0
v1.4.2
v1.4.1
v1.4.0
v1.3.2
v1.3.1
v1.3.0
v1.2.2
v1.2.1
v1.2.0
v1.1.0
v1.0.7-r1
v1.0.7
v1.0.6
v1.0.5
v1.0.4
v1.0.3-r1
v1.0.3
1.0.0
Labels
Clear labels
beta
breaking change
complexity: high
complexity: low
complexity: medium
needs milestone
netbox
pending closure
plugin candidate
pull-request
severity: high
severity: low
severity: medium
status: accepted
status: backlog
status: blocked
status: duplicate
status: needs owner
status: needs triage
status: revisions needed
status: under review
topic: GraphQL
topic: Internationalization
topic: OpenAPI
topic: UI/UX
topic: cabling
topic: event rules
topic: htmx navigation
topic: industrialization
topic: migrations
topic: plugins
topic: scripts
topic: templating
topic: testing
type: bug
type: deprecation
type: documentation
type: feature
type: housekeeping
type: translation
Mirrored from GitHub Pull Request
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/netbox#6559
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @tom0010 on GitHub (Jun 11, 2022).
NetBox version
v3.2.4
Feature type
New functionality
Proposed functionality
I'd like to propose support for javascript/typescript support when using custom scripts so that the custom script webpage can be dynamically updated when a user is editing the form, such as checkboxes or selection boxes.
I have some scripts that can potentially become very large and lengthly depending on the users requirements, however it may become overwhelming to users if the page is extremely long.
Some more info here: https://netdev-community.slack.com/archives/C01P0FRSXRV/p1652955534907109?thread_ts=1652951978.388159&cid=C01P0FRSXRV
Use case
Better UX for the end user.Edit:
We are leveraging Netbox scripts for user inputs and to execute code from a nice UI, we couple this with either some Ansible or Python code to do this. We have some scripts that actually require multiple inputs, these inputs can become very big and therefore become quite long in the Netbox script. The length of the script/page is not really an issue from a UI point of view, providing the user is required to input all of the said data. However, in some cases, there are times where a user only needs to input X amount of data, let's say they want to implement a "primary" site. Primary could be viewed as default in the script page with the option to add a "secondary" site with a button. Upon a user clicking a button, that would build the javascript page to "show" the "secondary inputs for the end user.
Another example could be for the user to show just the "required" fields from a Netbox script.
Main reason behind this is to have a better UI as I already said, however with the current Netbox scripts if a user that is building the script creates a big Netbox script they may become too overwhelming for the end user in some cases. This change would make the Netbox scripts for friendly for the end users.
Database changes
Not sure.I don't think there are any, I think this would just be leveraging javascript/typscript on top of the existing codebase in the scripts templates upon build.
External dependencies
None, I don't think.
@jeremystretch commented on GitHub (Jun 12, 2022):
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.
@tom0010 commented on GitHub (Jun 13, 2022):
Hey @jeremystretch let me try to provide more info to fulfil that.
I'm afraid I don't know the code well enough to understand what changes would be needed to actually solve the feature request I am raising, but I hope that with the info I'm providing in the edited OP will be enough. If not, please let me know what else you'd like me to provide :)
@kkthxbye-code commented on GitHub (Jun 13, 2022):
I think we need to consider if we want to support specific use cases for dynamic control of the form, or if we just want to allow the user to pass javascript to the frontend (typescript is probably not going to happen as it would require a transpilation step).
My initial thought was to add an option to custom script fields to dynamically hide/show fields based on the value of other fields. I'm unsure of the feasibility of the implementation, but should probably be possible without too much effort.
@tom0010 commented on GitHub (Jun 13, 2022):
This is was exactly what I was thinking.
@MalfuncEddie commented on GitHub (Jul 12, 2022):
I asked for this in the discussion forum
https://github.com/netbox-community/netbox/discussions/9702
Hi,
This might be a bit out there but it would be really really nice if this is possible.
I only started netbox scripting a couple of days ago and reading through the documentation (https://docs.netbox.dev/en/stable/customization/custom-scripts/#objectvar) I see that you can filter with query_params.
Is it possible to link objectvar fields.
Eg:
A script that gets certain vm's of a tenant and do some scripting on it and send it to an 3rd party api.
First field would be:
Select the tenant
Second field select the VM's
--> it would be nice if the query_params would make it so that it only shows the vm's of the tenant selected in the first field.
To make this work it might be easier to create a "custom wizard" of thje ability to have the filter tab on the custom script page would be nice
@kkthxbye-code commented on GitHub (Jul 12, 2022):
@MalfuncEddie - This is already supported and explained in the documentation you linked:
@MalfuncEddie commented on GitHub (Jul 13, 2022):
@kkthxbye-code tnx for the info. I've got custom script that work a lot better now. Funny thing is that now it is finished I am also hitting the "it would be nice if a checkbox could hide/unhide certain inputs" fase :)
@github-actions[bot] commented on GitHub (Oct 22, 2022):
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.
@tom0010 commented on GitHub (Oct 22, 2022):
@kkthxbye-code any chance this can be reviewed? You said you didn’t think it would be that much effort to implement.
@jeremystretch commented on GitHub (Jan 5, 2023):
@kkthxbye-code can you take another look at this? I'm not clear on what work needs to be done (if any).
@kkthxbye-code commented on GitHub (Jan 5, 2023):
@jeremystretch - I've been tinkering with it for a while, but keep running into issues with our frontend js. I'll give it another shot this weekend hopefully, and if I'm still not getting any progress I might throw in the towel and implement something in a plugin instead.
The idea boils down to dynamically disabling/enabling form fields based on other fields. A contrived example:
When loading the form only the
object_typewould be visible, choose Virtual Machine in the dropdown and the vm field is enabled etc. I'm not really certain of the final design, there's a lot to consider, like if we should support all field types, if we should support negation in the conditions etc. It all depends on how much the js fights me.Happy to hear any and all input/ideas.
@davidgwatkins commented on GitHub (Jan 28, 2023):
@kkthxbye-code Any progress in your JS fight? This would be huge!
@github-actions[bot] commented on GitHub (Jun 17, 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 (Jul 18, 2023):
This issue has been automatically closed due to lack of activity. In an effort to reduce noise, please do not comment any further. Note that the core maintainers may elect to reopen this issue at a later date if deemed necessary.
@balpoint commented on GitHub (Jul 18, 2023):
Was really looking forward to this being implemented one day :(
@abhi1693 commented on GitHub (Aug 15, 2023):
Maybe we can take this up in v4.0
@jeremystretch commented on GitHub (Aug 16, 2023):
Maybe, but this was closed as stale because no one picked it up. It can only be re-opened if someone is willing to commit to owning the implementation. Any takers?
@github-actions[bot] commented on GitHub (Nov 14, 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 (Dec 14, 2023):
This issue has been automatically closed due to lack of activity. In an effort to reduce noise, please do not comment any further. Note that the core maintainers may elect to reopen this issue at a later date if deemed necessary.