mirror of
https://github.com/netbox-community/netbox.git
synced 2026-04-02 15:37:18 +02:00
Add JavaScript for registered actions show/hide
This commit is contained in:
8
netbox/project-static/dist/netbox.js
vendored
8
netbox/project-static/dist/netbox.js
vendored
File diff suppressed because one or more lines are too long
8
netbox/project-static/dist/netbox.js.map
vendored
8
netbox/project-static/dist/netbox.js.map
vendored
File diff suppressed because one or more lines are too long
@@ -1,10 +1,17 @@
|
||||
import { initClearField } from './clearField';
|
||||
import { initFormElements } from './elements';
|
||||
import { initFilterModifiers } from './filterModifiers';
|
||||
import { initRegisteredActions } from './registeredActions';
|
||||
import { initSpeedSelector } from './speedSelector';
|
||||
|
||||
export function initForms(): void {
|
||||
for (const func of [initFormElements, initSpeedSelector, initFilterModifiers, initClearField]) {
|
||||
for (const func of [
|
||||
initFormElements,
|
||||
initSpeedSelector,
|
||||
initFilterModifiers,
|
||||
initClearField,
|
||||
initRegisteredActions,
|
||||
]) {
|
||||
func();
|
||||
}
|
||||
}
|
||||
|
||||
55
netbox/project-static/src/forms/registeredActions.ts
Normal file
55
netbox/project-static/src/forms/registeredActions.ts
Normal file
@@ -0,0 +1,55 @@
|
||||
import { getElements } from '../util';
|
||||
|
||||
/**
|
||||
* Show/hide registered action checkboxes based on selected object_types.
|
||||
*/
|
||||
export function initRegisteredActions(): void {
|
||||
const actionsContainer = document.getElementById('id_registered_actions_container');
|
||||
const selectedList = document.getElementById('id_object_types_1') as HTMLSelectElement;
|
||||
|
||||
if (!actionsContainer || !selectedList) {
|
||||
return;
|
||||
}
|
||||
|
||||
function updateVisibility(): void {
|
||||
const selectedModels = new Set<string>();
|
||||
|
||||
// Get model keys from selected options
|
||||
for (const option of Array.from(selectedList.options)) {
|
||||
const modelKey = option.dataset.modelKey;
|
||||
if (modelKey) {
|
||||
selectedModels.add(modelKey);
|
||||
}
|
||||
}
|
||||
|
||||
// Show/hide action groups
|
||||
const groups = actionsContainer!.querySelectorAll('.model-actions');
|
||||
let anyVisible = false;
|
||||
|
||||
groups.forEach(group => {
|
||||
const modelKey = group.getAttribute('data-model');
|
||||
const visible = modelKey !== null && selectedModels.has(modelKey);
|
||||
(group as HTMLElement).style.display = visible ? 'block' : 'none';
|
||||
if (visible) {
|
||||
anyVisible = true;
|
||||
}
|
||||
});
|
||||
|
||||
// Show/hide "no actions" message
|
||||
const noActionsMsg = document.getElementById('no-custom-actions-message');
|
||||
if (noActionsMsg) {
|
||||
noActionsMsg.style.display = anyVisible ? 'none' : 'block';
|
||||
}
|
||||
}
|
||||
|
||||
// Initial update
|
||||
updateVisibility();
|
||||
|
||||
// Listen to move button clicks
|
||||
for (const btn of getElements<HTMLButtonElement>('.move-option')) {
|
||||
btn.addEventListener('click', () => {
|
||||
// Wait for DOM update
|
||||
setTimeout(updateVisibility, 50);
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user