diff --git a/netbox/project-static/dist/netbox.js b/netbox/project-static/dist/netbox.js index fa97fedd9..f388b96cf 100644 Binary files a/netbox/project-static/dist/netbox.js and b/netbox/project-static/dist/netbox.js differ diff --git a/netbox/project-static/dist/netbox.js.map b/netbox/project-static/dist/netbox.js.map index 915e5e6c9..566476dde 100644 Binary files a/netbox/project-static/dist/netbox.js.map and b/netbox/project-static/dist/netbox.js.map differ diff --git a/netbox/project-static/src/tableConfig.ts b/netbox/project-static/src/tableConfig.ts index 09f4c5c96..d67832f82 100644 --- a/netbox/project-static/src/tableConfig.ts +++ b/netbox/project-static/src/tableConfig.ts @@ -11,15 +11,6 @@ function saveTableConfig(): void { } } -/** - * Delete all selected columns, which reverts the user's preferences to the default column set. - */ -function resetTableConfig(): void { - for (const element of getElements('select[name="columns"]')) { - element.value = ''; - } -} - /** * Add columns to the table config select element. */ @@ -81,6 +72,30 @@ function handleSubmit(event: Event): void { return; } + // Determine if the form action is to reset the table config. + const reset = document.activeElement?.getAttribute('value') === 'Reset'; + + // Create an array from the dot-separated config path. E.g. tables.DevicePowerOutletTable becomes + // ['tables', 'DevicePowerOutletTable'] + const path = element.getAttribute('data-config-root')?.split('.') ?? []; + + if (reset) { + // If we're resetting the table config, create an empty object for this table. E.g. + // tables.PlatformTable becomes {tables: PlatformTable: {}} + const data = path.reduceRight>((value, key) => ({ [key]: value }), {}); + + // Submit the reset for configuration to the API. + submitFormConfig(url, data).then(res => { + if (hasError(res)) { + const toast = createToast('danger', 'Error Resetting Table Configuration', res.error); + toast.show(); + } else { + location.reload(); + } + }); + return; + } + // Get all the selected options from any select element in the form. const options = getSelectedOptions(element, 'select[name=columns]'); @@ -89,9 +104,6 @@ function handleSubmit(event: Event): void { {}, ...options.map(opt => ({ [opt.name]: opt.options })), ); - // Create an array from the dot-separated config path. E.g. tables.DevicePowerOutletTable becomes - // ['tables', 'DevicePowerOutletTable'] - const path = element.getAttribute('data-config-root')?.split('.') ?? []; // Create an object mapping the configuration path to the select element names, which contain the // selection options. E.g. {tables: {DevicePowerOutletTable: {columns: ['label', 'type']}}} @@ -115,9 +127,6 @@ export function initTableConfig(): void { for (const element of getElements('#save_tableconfig')) { element.addEventListener('click', saveTableConfig); } - for (const element of getElements('#reset_tableconfig')) { - element.addEventListener('click', resetTableConfig); - } for (const element of getElements('#add_columns')) { element.addEventListener('click', addColumns); }