fix: restore populated rack and reorder views
This commit is contained in:
@@ -15,6 +15,22 @@
|
||||
console.warn('NetBox Utilities is leaving Reorder Rack in its native layout.', data.status);
|
||||
return;
|
||||
}
|
||||
if (data.schema_version !== 3 || data.complete !== true || !Array.isArray(data.devices)) {
|
||||
console.warn('NetBox Utilities received an incomplete Reorder Rack payload and kept the native layout.');
|
||||
return;
|
||||
}
|
||||
const validDeviceData = data.devices.every(device => (
|
||||
Number.isInteger(Number(device.id))
|
||||
&& ['front', 'rear'].includes(device.face)
|
||||
&& Number.isInteger(Number(device.grid_x))
|
||||
&& Number.isInteger(Number(device.grid_y))
|
||||
&& Number.isInteger(Number(device.grid_width))
|
||||
&& Number.isInteger(Number(device.grid_height))
|
||||
));
|
||||
if (!validDeviceData) {
|
||||
console.warn('NetBox Utilities received invalid Reorder Rack device data and kept the native layout.');
|
||||
return;
|
||||
}
|
||||
|
||||
const columns = Number.parseInt(data.columns, 10) || 12;
|
||||
const gridElements = {
|
||||
@@ -24,6 +40,15 @@
|
||||
};
|
||||
if (!gridElements.front || !gridElements.rear || !gridElements.other) return;
|
||||
|
||||
const nativeMountedItems = [
|
||||
...gridElements.front.querySelectorAll('.grid-stack-item'),
|
||||
...gridElements.rear.querySelectorAll('.grid-stack-item'),
|
||||
];
|
||||
if (!data.devices.length && nativeMountedItems.length) {
|
||||
console.warn('NetBox Utilities received no replacement devices and kept the populated native layout.');
|
||||
return;
|
||||
}
|
||||
|
||||
const setAttribute = (element, name, value) => element.setAttribute(name, String(value));
|
||||
const originalFetch = window.fetch.bind(window);
|
||||
window.fetch = (resource, options = {}) => {
|
||||
|
||||
@@ -11,6 +11,10 @@
|
||||
console.error('NetBox Utilities could not read the Topology Views rack widths.', error);
|
||||
return;
|
||||
}
|
||||
if (!Array.isArray(payload) && (payload?.schema_version !== 3 || payload?.complete !== true)) {
|
||||
console.warn('NetBox Utilities received an incomplete Topology Views payload and kept the native layout.');
|
||||
return;
|
||||
}
|
||||
if (!Array.isArray(payload) && payload?.status && payload.status !== 'ready') {
|
||||
console.warn('NetBox Utilities is leaving Topology Views in its native layout.', payload.status);
|
||||
return;
|
||||
@@ -36,6 +40,7 @@
|
||||
return {
|
||||
width,
|
||||
horizontalPosition,
|
||||
source: String(value.width_source || 'stored'),
|
||||
leftPercent: Number.isFinite(Number(value.left_percent))
|
||||
? Number(value.left_percent)
|
||||
: (horizontalPosition - 1) / width * 100,
|
||||
@@ -87,6 +92,7 @@
|
||||
device.classList.add('netbox-utilities-partial-width');
|
||||
device.dataset.rackWidth = String(placement.width);
|
||||
device.dataset.horizontalPosition = String(placement.horizontalPosition);
|
||||
device.dataset.rackWidthSource = placement.source;
|
||||
device.style.setProperty('--netbox-utilities-rack-device-left', `${placement.leftPercent}%`);
|
||||
device.style.setProperty('--netbox-utilities-rack-device-width', `${placement.widthPercent}%`);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user