mirror of
https://github.com/jokob-sk/NetAlertX.git
synced 2026-04-04 09:11:34 -07:00
feat: Add devFlapping attribute to device management and update related UI components
This commit is contained in:
@@ -12,9 +12,11 @@ This set of settings allows you to group Devices under different views. The Arch
|
|||||||
|
|
||||||
1. 🔌 Online (Green) = A device that is no longer marked as a "New Device".
|
1. 🔌 Online (Green) = A device that is no longer marked as a "New Device".
|
||||||
2. 🔌 New (Green) = A newly discovered device that is online and is still marked as a "New Device".
|
2. 🔌 New (Green) = A newly discovered device that is online and is still marked as a "New Device".
|
||||||
3. ✖ New (Grey) = Same as No.2 but device is now offline.
|
3. 🔌(❕) Online (Orange) - The device is unstable and flapping (3 status changes in the last hour)
|
||||||
4. ✖ Offline (Grey) = A device that was not detected online in the last scan.
|
4. ✖ New (Grey) = Same as No.2 but device is now offline.
|
||||||
5. ⚠ Down (Red) = A device that has "Alert Down" marked and has been offline for the time set in the Setting `NTFPRCS_alert_down_time`.
|
5. ✖ Offline (Grey) = A device that was not detected online in the last scan.
|
||||||
|
6. ⚠ Down (Red) = A device that has "Alert Down" marked and has been offline for the time set in the Setting `NTFPRCS_alert_down_time`.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
See also [Notification guide](./NOTIFICATIONS.md).
|
See also [Notification guide](./NOTIFICATIONS.md).
|
||||||
@@ -547,6 +547,7 @@ function mapColumnIndexToFieldName(index, tableColumnVisible) {
|
|||||||
"devVlan", // 30
|
"devVlan", // 30
|
||||||
"devPrimaryIPv4", // 31
|
"devPrimaryIPv4", // 31
|
||||||
"devPrimaryIPv6", // 32
|
"devPrimaryIPv6", // 32
|
||||||
|
"devFlapping", // 33
|
||||||
];
|
];
|
||||||
|
|
||||||
// console.log("OrderBy: " + columnNames[tableColumnOrder[index]]);
|
// console.log("OrderBy: " + columnNames[tableColumnOrder[index]]);
|
||||||
@@ -666,6 +667,7 @@ function initializeDatatable (status) {
|
|||||||
devVlan
|
devVlan
|
||||||
devPrimaryIPv4
|
devPrimaryIPv4
|
||||||
devPrimaryIPv6
|
devPrimaryIPv6
|
||||||
|
devFlapping
|
||||||
}
|
}
|
||||||
count
|
count
|
||||||
}
|
}
|
||||||
@@ -753,6 +755,7 @@ function initializeDatatable (status) {
|
|||||||
device.devVlan || "",
|
device.devVlan || "",
|
||||||
device.devPrimaryIPv4 || "",
|
device.devPrimaryIPv4 || "",
|
||||||
device.devPrimaryIPv6 || "",
|
device.devPrimaryIPv6 || "",
|
||||||
|
device.devFlapping || 0,
|
||||||
];
|
];
|
||||||
|
|
||||||
const newRow = [];
|
const newRow = [];
|
||||||
@@ -821,6 +824,7 @@ function initializeDatatable (status) {
|
|||||||
data-status="${rowData[mapIndx(10)]}"
|
data-status="${rowData[mapIndx(10)]}"
|
||||||
data-present="${rowData[mapIndx(24)]}"
|
data-present="${rowData[mapIndx(24)]}"
|
||||||
data-alert="${rowData[mapIndx(25)]}"
|
data-alert="${rowData[mapIndx(25)]}"
|
||||||
|
data-flapping="${rowData[mapIndx(33)]}"
|
||||||
data-icon="${rowData[mapIndx(3)]}">
|
data-icon="${rowData[mapIndx(3)]}">
|
||||||
${displayedValue}
|
${displayedValue}
|
||||||
</a>
|
</a>
|
||||||
@@ -964,12 +968,15 @@ function initializeDatatable (status) {
|
|||||||
|
|
||||||
tmp_devPresentLastScan = rowData[mapIndx(24)]
|
tmp_devPresentLastScan = rowData[mapIndx(24)]
|
||||||
tmp_devAlertDown = rowData[mapIndx(25)]
|
tmp_devAlertDown = rowData[mapIndx(25)]
|
||||||
|
tmp_devMac = rowData[mapIndx(11)]
|
||||||
|
tmp_devFlapping = rowData[mapIndx(33)]
|
||||||
|
|
||||||
const badge = getStatusBadgeParts(
|
const badge = getStatusBadgeParts(
|
||||||
rowData[mapIndx(24)], // tmp_devPresentLastScan
|
tmp_devPresentLastScan, // tmp_devPresentLastScan
|
||||||
rowData[mapIndx(25)], // tmp_devAlertDown
|
tmp_devAlertDown, // tmp_devAlertDown
|
||||||
rowData[mapIndx(11)], // MAC
|
tmp_devFlapping, // tmp_devFlapping
|
||||||
cellData // optional text
|
tmp_devMac, // MAC
|
||||||
|
cellData // optional text
|
||||||
);
|
);
|
||||||
|
|
||||||
$(td).html (`<a href="${badge.url}" class="badge ${badge.cssClass}">${badge.iconHtml} ${badge.text}</a>`);
|
$(td).html (`<a href="${badge.url}" class="badge ${badge.cssClass}">${badge.iconHtml} ${badge.text}</a>`);
|
||||||
|
|||||||
@@ -23,9 +23,10 @@ function loadNetworkNodes() {
|
|||||||
LOWER(parent.devParentMAC) AS parent_mac,
|
LOWER(parent.devParentMAC) AS parent_mac,
|
||||||
parent.devIcon AS node_icon,
|
parent.devIcon AS node_icon,
|
||||||
parent.devAlertDown AS node_alert,
|
parent.devAlertDown AS node_alert,
|
||||||
|
parent.devFlapping AS node_flapping,
|
||||||
COUNT(child.devMac) AS node_ports_count
|
COUNT(child.devMac) AS node_ports_count
|
||||||
FROM Devices AS parent
|
FROM DevicesView AS parent
|
||||||
LEFT JOIN Devices AS child
|
LEFT JOIN DevicesView AS child
|
||||||
/* CRITICAL FIX: COLLATE NOCASE ensures the join works
|
/* CRITICAL FIX: COLLATE NOCASE ensures the join works
|
||||||
even if devParentMAC is uppercase and devMac is lowercase
|
even if devParentMAC is uppercase and devMac is lowercase
|
||||||
*/
|
*/
|
||||||
@@ -33,7 +34,7 @@ function loadNetworkNodes() {
|
|||||||
WHERE parent.devType IN (${networkDeviceTypes})
|
WHERE parent.devType IN (${networkDeviceTypes})
|
||||||
AND parent.devIsArchived = 0
|
AND parent.devIsArchived = 0
|
||||||
GROUP BY parent.devMac, parent.devName, parent.devPresentLastScan,
|
GROUP BY parent.devMac, parent.devName, parent.devPresentLastScan,
|
||||||
parent.devType, parent.devParentMAC, parent.devIcon, parent.devAlertDown
|
parent.devType, parent.devParentMAC, parent.devIcon, parent.devAlertDown, parent.devFlapping
|
||||||
ORDER BY parent.devName;
|
ORDER BY parent.devName;
|
||||||
`;
|
`;
|
||||||
|
|
||||||
@@ -143,6 +144,7 @@ function loadDeviceTable({ sql, containerSelector, tableId, wrapperHtml = null,
|
|||||||
const badge = getStatusBadgeParts(
|
const badge = getStatusBadgeParts(
|
||||||
device.devPresentLastScan,
|
device.devPresentLastScan,
|
||||||
device.devAlertDown,
|
device.devAlertDown,
|
||||||
|
device.devFlapping,
|
||||||
device.devMac,
|
device.devMac,
|
||||||
device.devStatus
|
device.devStatus
|
||||||
);
|
);
|
||||||
@@ -202,8 +204,8 @@ function loadDeviceTable({ sql, containerSelector, tableId, wrapperHtml = null,
|
|||||||
*/
|
*/
|
||||||
function loadUnassignedDevices() {
|
function loadUnassignedDevices() {
|
||||||
const sql = `
|
const sql = `
|
||||||
SELECT devMac, devPresentLastScan, devName, devLastIP, devVendor, devAlertDown, devParentPort
|
SELECT devMac, devPresentLastScan, devName, devLastIP, devVendor, devAlertDown, devParentPort, devFlapping, devStatus
|
||||||
FROM Devices
|
FROM DevicesView
|
||||||
WHERE (devParentMAC IS NULL OR devParentMAC IN ("", " ", "undefined", "null"))
|
WHERE (devParentMAC IS NULL OR devParentMAC IN ("", " ", "undefined", "null"))
|
||||||
AND LOWER(devMac) NOT LIKE "%internet%"
|
AND LOWER(devMac) NOT LIKE "%internet%"
|
||||||
AND devIsArchived = 0
|
AND devIsArchived = 0
|
||||||
@@ -237,7 +239,7 @@ function loadConnectedDevices(node_mac) {
|
|||||||
const normalized_mac = node_mac.toLowerCase();
|
const normalized_mac = node_mac.toLowerCase();
|
||||||
|
|
||||||
const sql = `
|
const sql = `
|
||||||
SELECT devName, devMac, devLastIP, devVendor, devPresentLastScan, devAlertDown, devParentPort, devVlan,
|
SELECT devName, devMac, devLastIP, devVendor, devPresentLastScan, devAlertDown, devParentPort, devVlan, devFlapping,
|
||||||
CASE
|
CASE
|
||||||
WHEN devIsNew = 1 THEN 'New'
|
WHEN devIsNew = 1 THEN 'New'
|
||||||
WHEN devPresentLastScan = 1 THEN 'On-line'
|
WHEN devPresentLastScan = 1 THEN 'On-line'
|
||||||
@@ -246,7 +248,7 @@ function loadConnectedDevices(node_mac) {
|
|||||||
WHEN devPresentLastScan = 0 THEN 'Off-line'
|
WHEN devPresentLastScan = 0 THEN 'Off-line'
|
||||||
ELSE 'Unknown status'
|
ELSE 'Unknown status'
|
||||||
END AS devStatus
|
END AS devStatus
|
||||||
FROM Devices
|
FROM DevicesView
|
||||||
/* Using COLLATE NOCASE here solves the 'TEXT' vs 'NOCASE' mismatch */
|
/* Using COLLATE NOCASE here solves the 'TEXT' vs 'NOCASE' mismatch */
|
||||||
WHERE devParentMac = '${normalized_mac}' COLLATE NOCASE`;
|
WHERE devParentMac = '${normalized_mac}' COLLATE NOCASE`;
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ function initNetworkTopology() {
|
|||||||
WHEN devType IN (${networkDeviceTypes}) THEN 1
|
WHEN devType IN (${networkDeviceTypes}) THEN 1
|
||||||
ELSE 0
|
ELSE 0
|
||||||
END AS devIsNetworkNodeDynamic
|
END AS devIsNetworkNodeDynamic
|
||||||
FROM Devices a
|
FROM DevicesView a
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -54,6 +54,7 @@ function renderNetworkTabContent(nodes) {
|
|||||||
const badge = getStatusBadgeParts(
|
const badge = getStatusBadgeParts(
|
||||||
node.online,
|
node.online,
|
||||||
node.node_alert,
|
node.node_alert,
|
||||||
|
node.node_flapping,
|
||||||
node.node_mac
|
node.node_mac
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -72,6 +72,7 @@ function getChildren(node, list, path, visited = [])
|
|||||||
ip: node.devLastIP,
|
ip: node.devLastIP,
|
||||||
status: node.devStatus,
|
status: node.devStatus,
|
||||||
presentLastScan: node.devPresentLastScan,
|
presentLastScan: node.devPresentLastScan,
|
||||||
|
flapping: node.devFlapping,
|
||||||
alertDown: node.devAlertDown,
|
alertDown: node.devAlertDown,
|
||||||
hasChildren: children.length > 0 || hiddenMacs.includes(node.devMac),
|
hasChildren: children.length > 0 || hiddenMacs.includes(node.devMac),
|
||||||
relType: node.devParentRelType,
|
relType: node.devParentRelType,
|
||||||
@@ -266,7 +267,13 @@ function initTree(myHierarchy)
|
|||||||
<i class="fa-solid fa-hard-drive"></i>
|
<i class="fa-solid fa-hard-drive"></i>
|
||||||
</span>` : "";
|
</span>` : "";
|
||||||
|
|
||||||
const badgeConf = getStatusBadgeParts(nodeData.data.presentLastScan, nodeData.data.alertDown, nodeData.data.mac, statusText = '')
|
const badgeConf = getStatusBadgeParts(
|
||||||
|
nodeData.data.presentLastScan,
|
||||||
|
nodeData.data.alertDown,
|
||||||
|
nodeData.data.flapping,
|
||||||
|
nodeData.data.mac,
|
||||||
|
statusText = ''
|
||||||
|
);
|
||||||
|
|
||||||
return result = `<div
|
return result = `<div
|
||||||
class="node-inner hover-node-info box pointer ${highlightedCss} ${cssNodeType}"
|
class="node-inner hover-node-info box pointer ${highlightedCss} ${cssNodeType}"
|
||||||
@@ -283,6 +290,7 @@ function initTree(myHierarchy)
|
|||||||
data-lastseen="${nodeData.data.lastseen}"
|
data-lastseen="${nodeData.data.lastseen}"
|
||||||
data-firstseen="${nodeData.data.firstseen}"
|
data-firstseen="${nodeData.data.firstseen}"
|
||||||
data-relationship="${nodeData.data.relType}"
|
data-relationship="${nodeData.data.relType}"
|
||||||
|
data-flapping="${nodeData.data.flapping}"
|
||||||
data-status="${nodeData.data.status}"
|
data-status="${nodeData.data.status}"
|
||||||
data-present="${nodeData.data.presentLastScan}"
|
data-present="${nodeData.data.presentLastScan}"
|
||||||
data-alert="${nodeData.data.alertDown}"
|
data-alert="${nodeData.data.alertDown}"
|
||||||
|
|||||||
@@ -765,7 +765,8 @@ function getColumnNameFromLangString(headStringKey) {
|
|||||||
"Device_TableHead_ReqNicsOnline": "devReqNicsOnline",
|
"Device_TableHead_ReqNicsOnline": "devReqNicsOnline",
|
||||||
"Device_TableHead_Vlan": "devVlan",
|
"Device_TableHead_Vlan": "devVlan",
|
||||||
"Device_TableHead_IPv4": "devPrimaryIPv4",
|
"Device_TableHead_IPv4": "devPrimaryIPv4",
|
||||||
"Device_TableHead_IPv6": "devPrimaryIPv6"
|
"Device_TableHead_IPv6": "devPrimaryIPv6",
|
||||||
|
"Device_TableHead_Flapping": "devFlapping"
|
||||||
};
|
};
|
||||||
|
|
||||||
return columnNameMap[headStringKey] || "";
|
return columnNameMap[headStringKey] || "";
|
||||||
@@ -773,17 +774,25 @@ function getColumnNameFromLangString(headStringKey) {
|
|||||||
|
|
||||||
//--------------------------------------------------------------
|
//--------------------------------------------------------------
|
||||||
// Generating the device status chip
|
// Generating the device status chip
|
||||||
function getStatusBadgeParts(devPresentLastScan, devAlertDown, devMac, statusText = '') {
|
function getStatusBadgeParts(devPresentLastScan, devAlertDown, devFlapping, devMac, statusText = '') {
|
||||||
let css = 'bg-gray text-white statusUnknown';
|
let css = 'bg-gray text-white statusUnknown';
|
||||||
let icon = '<i class="fa-solid fa-question"></i>';
|
let icon = '<i class="fa-solid fa-question"></i>';
|
||||||
let status = 'unknown';
|
let status = 'unknown';
|
||||||
let cssText = '';
|
let cssText = '';
|
||||||
|
|
||||||
if (devPresentLastScan == 1) {
|
console.log(devFlapping);
|
||||||
|
|
||||||
|
|
||||||
|
if (devPresentLastScan == 1 && devFlapping == 0) {
|
||||||
css = 'bg-green text-white statusOnline';
|
css = 'bg-green text-white statusOnline';
|
||||||
cssText = 'text-green';
|
cssText = 'text-green';
|
||||||
icon = '<i class="fa-solid fa-plug"></i>';
|
icon = '<i class="fa-solid fa-plug"></i>';
|
||||||
status = 'online';
|
status = 'online';
|
||||||
|
} else if (devPresentLastScan == 1 && devFlapping == 1) {
|
||||||
|
css = 'bg-yellow text-white statusFlapping';
|
||||||
|
cssText = 'text-yellow';
|
||||||
|
icon = '<i class="fa-solid fa-plug-circle-exclamation"></i>';
|
||||||
|
status = 'online';
|
||||||
} else if (devAlertDown == 1) {
|
} else if (devAlertDown == 1) {
|
||||||
css = 'bg-red text-white statusDown';
|
css = 'bg-red text-white statusDown';
|
||||||
cssText = 'text-red';
|
cssText = 'text-red';
|
||||||
@@ -958,6 +967,7 @@ function renderDeviceLink(data, container, useName = false) {
|
|||||||
const badge = getStatusBadgeParts(
|
const badge = getStatusBadgeParts(
|
||||||
device.devPresentLastScan,
|
device.devPresentLastScan,
|
||||||
device.devAlertDown,
|
device.devAlertDown,
|
||||||
|
device.devFlapping,
|
||||||
device.devMac
|
device.devMac
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -974,6 +984,7 @@ function renderDeviceLink(data, container, useName = false) {
|
|||||||
'data-firstseen': device.devFirstConnection,
|
'data-firstseen': device.devFirstConnection,
|
||||||
'data-relationship': device.devParentRelType,
|
'data-relationship': device.devParentRelType,
|
||||||
'data-status': device.devStatus,
|
'data-status': device.devStatus,
|
||||||
|
'data-flapping': device.devFlapping,
|
||||||
'data-present': device.devPresentLastScan,
|
'data-present': device.devPresentLastScan,
|
||||||
'data-alert': device.devAlertDown,
|
'data-alert': device.devAlertDown,
|
||||||
'data-icon': device.devIcon
|
'data-icon': device.devIcon
|
||||||
@@ -1044,7 +1055,8 @@ function initHoverNodeInfo() {
|
|||||||
const lastseen = $el.data('lastseen') || 'Unknown';
|
const lastseen = $el.data('lastseen') || 'Unknown';
|
||||||
const firstseen = $el.data('firstseen') || 'Unknown';
|
const firstseen = $el.data('firstseen') || 'Unknown';
|
||||||
const relationship = $el.data('relationship') || 'Unknown';
|
const relationship = $el.data('relationship') || 'Unknown';
|
||||||
const badge = getStatusBadgeParts( $el.data('present'), $el.data('alert'), $el.data('mac'))
|
const flapping = $el.data('flapping') || 0;
|
||||||
|
const badge = getStatusBadgeParts( $el.data('present'), $el.data('alert'), flapping, $el.data('mac'))
|
||||||
const status =`<span class="badge ${badge.cssClass}">${badge.iconHtml} ${badge.status}</span>`
|
const status =`<span class="badge ${badge.cssClass}">${badge.iconHtml} ${badge.status}</span>`
|
||||||
|
|
||||||
const html = `
|
const html = `
|
||||||
|
|||||||
@@ -225,6 +225,7 @@
|
|||||||
"Device_TableHead_FQDN": "اسم النطاق الكامل",
|
"Device_TableHead_FQDN": "اسم النطاق الكامل",
|
||||||
"Device_TableHead_Favorite": "مفضل",
|
"Device_TableHead_Favorite": "مفضل",
|
||||||
"Device_TableHead_FirstSession": "أول جلسة",
|
"Device_TableHead_FirstSession": "أول جلسة",
|
||||||
|
"Device_TableHead_Flapping": "",
|
||||||
"Device_TableHead_GUID": "معرف فريد",
|
"Device_TableHead_GUID": "معرف فريد",
|
||||||
"Device_TableHead_Group": "المجموعة",
|
"Device_TableHead_Group": "المجموعة",
|
||||||
"Device_TableHead_IPv4": "",
|
"Device_TableHead_IPv4": "",
|
||||||
|
|||||||
@@ -225,6 +225,7 @@
|
|||||||
"Device_TableHead_FQDN": "FQDN",
|
"Device_TableHead_FQDN": "FQDN",
|
||||||
"Device_TableHead_Favorite": "Favorit",
|
"Device_TableHead_Favorite": "Favorit",
|
||||||
"Device_TableHead_FirstSession": "Primera Sessió",
|
"Device_TableHead_FirstSession": "Primera Sessió",
|
||||||
|
"Device_TableHead_Flapping": "",
|
||||||
"Device_TableHead_GUID": "GUID",
|
"Device_TableHead_GUID": "GUID",
|
||||||
"Device_TableHead_Group": "Grup",
|
"Device_TableHead_Group": "Grup",
|
||||||
"Device_TableHead_IPv4": "IPv4",
|
"Device_TableHead_IPv4": "IPv4",
|
||||||
|
|||||||
@@ -225,6 +225,7 @@
|
|||||||
"Device_TableHead_FQDN": "",
|
"Device_TableHead_FQDN": "",
|
||||||
"Device_TableHead_Favorite": "",
|
"Device_TableHead_Favorite": "",
|
||||||
"Device_TableHead_FirstSession": "",
|
"Device_TableHead_FirstSession": "",
|
||||||
|
"Device_TableHead_Flapping": "",
|
||||||
"Device_TableHead_GUID": "",
|
"Device_TableHead_GUID": "",
|
||||||
"Device_TableHead_Group": "",
|
"Device_TableHead_Group": "",
|
||||||
"Device_TableHead_IPv4": "",
|
"Device_TableHead_IPv4": "",
|
||||||
|
|||||||
@@ -229,6 +229,7 @@
|
|||||||
"Device_TableHead_FQDN": "",
|
"Device_TableHead_FQDN": "",
|
||||||
"Device_TableHead_Favorite": "Favorit",
|
"Device_TableHead_Favorite": "Favorit",
|
||||||
"Device_TableHead_FirstSession": "Erste Sitzung",
|
"Device_TableHead_FirstSession": "Erste Sitzung",
|
||||||
|
"Device_TableHead_Flapping": "",
|
||||||
"Device_TableHead_GUID": "GUID",
|
"Device_TableHead_GUID": "GUID",
|
||||||
"Device_TableHead_Group": "Gruppe",
|
"Device_TableHead_Group": "Gruppe",
|
||||||
"Device_TableHead_IPv4": "",
|
"Device_TableHead_IPv4": "",
|
||||||
|
|||||||
@@ -225,6 +225,7 @@
|
|||||||
"Device_TableHead_FQDN": "FQDN",
|
"Device_TableHead_FQDN": "FQDN",
|
||||||
"Device_TableHead_Favorite": "Favorite",
|
"Device_TableHead_Favorite": "Favorite",
|
||||||
"Device_TableHead_FirstSession": "First Session",
|
"Device_TableHead_FirstSession": "First Session",
|
||||||
|
"Device_TableHead_Flapping": "Flapping",
|
||||||
"Device_TableHead_GUID": "GUID",
|
"Device_TableHead_GUID": "GUID",
|
||||||
"Device_TableHead_Group": "Group",
|
"Device_TableHead_Group": "Group",
|
||||||
"Device_TableHead_IPv4": "IPv4",
|
"Device_TableHead_IPv4": "IPv4",
|
||||||
|
|||||||
@@ -227,6 +227,7 @@
|
|||||||
"Device_TableHead_FQDN": "FQDN",
|
"Device_TableHead_FQDN": "FQDN",
|
||||||
"Device_TableHead_Favorite": "Favorito",
|
"Device_TableHead_Favorite": "Favorito",
|
||||||
"Device_TableHead_FirstSession": "1ra. sesión",
|
"Device_TableHead_FirstSession": "1ra. sesión",
|
||||||
|
"Device_TableHead_Flapping": "",
|
||||||
"Device_TableHead_GUID": "GUID",
|
"Device_TableHead_GUID": "GUID",
|
||||||
"Device_TableHead_Group": "Grupo",
|
"Device_TableHead_Group": "Grupo",
|
||||||
"Device_TableHead_IPv4": "IPv4",
|
"Device_TableHead_IPv4": "IPv4",
|
||||||
|
|||||||
@@ -225,6 +225,7 @@
|
|||||||
"Device_TableHead_FQDN": "",
|
"Device_TableHead_FQDN": "",
|
||||||
"Device_TableHead_Favorite": "",
|
"Device_TableHead_Favorite": "",
|
||||||
"Device_TableHead_FirstSession": "",
|
"Device_TableHead_FirstSession": "",
|
||||||
|
"Device_TableHead_Flapping": "",
|
||||||
"Device_TableHead_GUID": "",
|
"Device_TableHead_GUID": "",
|
||||||
"Device_TableHead_Group": "",
|
"Device_TableHead_Group": "",
|
||||||
"Device_TableHead_IPv4": "",
|
"Device_TableHead_IPv4": "",
|
||||||
|
|||||||
@@ -225,6 +225,7 @@
|
|||||||
"Device_TableHead_FQDN": "Nom de domaine FQDN",
|
"Device_TableHead_FQDN": "Nom de domaine FQDN",
|
||||||
"Device_TableHead_Favorite": "Favori",
|
"Device_TableHead_Favorite": "Favori",
|
||||||
"Device_TableHead_FirstSession": "Première session",
|
"Device_TableHead_FirstSession": "Première session",
|
||||||
|
"Device_TableHead_Flapping": "",
|
||||||
"Device_TableHead_GUID": "GUID",
|
"Device_TableHead_GUID": "GUID",
|
||||||
"Device_TableHead_Group": "Groupe",
|
"Device_TableHead_Group": "Groupe",
|
||||||
"Device_TableHead_IPv4": "IPv4",
|
"Device_TableHead_IPv4": "IPv4",
|
||||||
|
|||||||
@@ -225,6 +225,7 @@
|
|||||||
"Device_TableHead_FQDN": "FQDN",
|
"Device_TableHead_FQDN": "FQDN",
|
||||||
"Device_TableHead_Favorite": "Preferito",
|
"Device_TableHead_Favorite": "Preferito",
|
||||||
"Device_TableHead_FirstSession": "Prima sessione",
|
"Device_TableHead_FirstSession": "Prima sessione",
|
||||||
|
"Device_TableHead_Flapping": "",
|
||||||
"Device_TableHead_GUID": "GUID",
|
"Device_TableHead_GUID": "GUID",
|
||||||
"Device_TableHead_Group": "Gruppo",
|
"Device_TableHead_Group": "Gruppo",
|
||||||
"Device_TableHead_IPv4": "IPv4",
|
"Device_TableHead_IPv4": "IPv4",
|
||||||
|
|||||||
@@ -225,6 +225,7 @@
|
|||||||
"Device_TableHead_FQDN": "FQDN",
|
"Device_TableHead_FQDN": "FQDN",
|
||||||
"Device_TableHead_Favorite": "お気に入り",
|
"Device_TableHead_Favorite": "お気に入り",
|
||||||
"Device_TableHead_FirstSession": "初回セッション",
|
"Device_TableHead_FirstSession": "初回セッション",
|
||||||
|
"Device_TableHead_Flapping": "",
|
||||||
"Device_TableHead_GUID": "GUID",
|
"Device_TableHead_GUID": "GUID",
|
||||||
"Device_TableHead_Group": "グループ",
|
"Device_TableHead_Group": "グループ",
|
||||||
"Device_TableHead_IPv4": "IPv4",
|
"Device_TableHead_IPv4": "IPv4",
|
||||||
|
|||||||
@@ -225,6 +225,7 @@
|
|||||||
"Device_TableHead_FQDN": "",
|
"Device_TableHead_FQDN": "",
|
||||||
"Device_TableHead_Favorite": "Favoritt",
|
"Device_TableHead_Favorite": "Favoritt",
|
||||||
"Device_TableHead_FirstSession": "Første Økt",
|
"Device_TableHead_FirstSession": "Første Økt",
|
||||||
|
"Device_TableHead_Flapping": "",
|
||||||
"Device_TableHead_GUID": "GUID",
|
"Device_TableHead_GUID": "GUID",
|
||||||
"Device_TableHead_Group": "Gruppe",
|
"Device_TableHead_Group": "Gruppe",
|
||||||
"Device_TableHead_IPv4": "",
|
"Device_TableHead_IPv4": "",
|
||||||
|
|||||||
@@ -225,6 +225,7 @@
|
|||||||
"Device_TableHead_FQDN": "FQDN",
|
"Device_TableHead_FQDN": "FQDN",
|
||||||
"Device_TableHead_Favorite": "Ulubione",
|
"Device_TableHead_Favorite": "Ulubione",
|
||||||
"Device_TableHead_FirstSession": "Pierwsza sesja",
|
"Device_TableHead_FirstSession": "Pierwsza sesja",
|
||||||
|
"Device_TableHead_Flapping": "",
|
||||||
"Device_TableHead_GUID": "GUID",
|
"Device_TableHead_GUID": "GUID",
|
||||||
"Device_TableHead_Group": "Grupa",
|
"Device_TableHead_Group": "Grupa",
|
||||||
"Device_TableHead_IPv4": "",
|
"Device_TableHead_IPv4": "",
|
||||||
|
|||||||
@@ -225,6 +225,7 @@
|
|||||||
"Device_TableHead_FQDN": "",
|
"Device_TableHead_FQDN": "",
|
||||||
"Device_TableHead_Favorite": "Favorito",
|
"Device_TableHead_Favorite": "Favorito",
|
||||||
"Device_TableHead_FirstSession": "Primeira sessão",
|
"Device_TableHead_FirstSession": "Primeira sessão",
|
||||||
|
"Device_TableHead_Flapping": "",
|
||||||
"Device_TableHead_GUID": "GUID",
|
"Device_TableHead_GUID": "GUID",
|
||||||
"Device_TableHead_Group": "Grupo",
|
"Device_TableHead_Group": "Grupo",
|
||||||
"Device_TableHead_IPv4": "",
|
"Device_TableHead_IPv4": "",
|
||||||
|
|||||||
@@ -225,6 +225,7 @@
|
|||||||
"Device_TableHead_FQDN": "FQDN",
|
"Device_TableHead_FQDN": "FQDN",
|
||||||
"Device_TableHead_Favorite": "Favorito",
|
"Device_TableHead_Favorite": "Favorito",
|
||||||
"Device_TableHead_FirstSession": "Primeira sessão",
|
"Device_TableHead_FirstSession": "Primeira sessão",
|
||||||
|
"Device_TableHead_Flapping": "",
|
||||||
"Device_TableHead_GUID": "GUID",
|
"Device_TableHead_GUID": "GUID",
|
||||||
"Device_TableHead_Group": "Grupo",
|
"Device_TableHead_Group": "Grupo",
|
||||||
"Device_TableHead_IPv4": "",
|
"Device_TableHead_IPv4": "",
|
||||||
|
|||||||
@@ -225,6 +225,7 @@
|
|||||||
"Device_TableHead_FQDN": "FQDN",
|
"Device_TableHead_FQDN": "FQDN",
|
||||||
"Device_TableHead_Favorite": "Избранное",
|
"Device_TableHead_Favorite": "Избранное",
|
||||||
"Device_TableHead_FirstSession": "Первый сеанс",
|
"Device_TableHead_FirstSession": "Первый сеанс",
|
||||||
|
"Device_TableHead_Flapping": "",
|
||||||
"Device_TableHead_GUID": "GUID",
|
"Device_TableHead_GUID": "GUID",
|
||||||
"Device_TableHead_Group": "Группа",
|
"Device_TableHead_Group": "Группа",
|
||||||
"Device_TableHead_IPv4": "IPv4",
|
"Device_TableHead_IPv4": "IPv4",
|
||||||
|
|||||||
@@ -225,6 +225,7 @@
|
|||||||
"Device_TableHead_FQDN": "",
|
"Device_TableHead_FQDN": "",
|
||||||
"Device_TableHead_Favorite": "",
|
"Device_TableHead_Favorite": "",
|
||||||
"Device_TableHead_FirstSession": "",
|
"Device_TableHead_FirstSession": "",
|
||||||
|
"Device_TableHead_Flapping": "",
|
||||||
"Device_TableHead_GUID": "",
|
"Device_TableHead_GUID": "",
|
||||||
"Device_TableHead_Group": "",
|
"Device_TableHead_Group": "",
|
||||||
"Device_TableHead_IPv4": "",
|
"Device_TableHead_IPv4": "",
|
||||||
|
|||||||
@@ -225,6 +225,7 @@
|
|||||||
"Device_TableHead_FQDN": "",
|
"Device_TableHead_FQDN": "",
|
||||||
"Device_TableHead_Favorite": "Favori",
|
"Device_TableHead_Favorite": "Favori",
|
||||||
"Device_TableHead_FirstSession": "İlk Oturum",
|
"Device_TableHead_FirstSession": "İlk Oturum",
|
||||||
|
"Device_TableHead_Flapping": "",
|
||||||
"Device_TableHead_GUID": "GUID",
|
"Device_TableHead_GUID": "GUID",
|
||||||
"Device_TableHead_Group": "Grup",
|
"Device_TableHead_Group": "Grup",
|
||||||
"Device_TableHead_IPv4": "",
|
"Device_TableHead_IPv4": "",
|
||||||
|
|||||||
@@ -225,6 +225,7 @@
|
|||||||
"Device_TableHead_FQDN": "FQDN",
|
"Device_TableHead_FQDN": "FQDN",
|
||||||
"Device_TableHead_Favorite": "Улюблений",
|
"Device_TableHead_Favorite": "Улюблений",
|
||||||
"Device_TableHead_FirstSession": "Перша сесія",
|
"Device_TableHead_FirstSession": "Перша сесія",
|
||||||
|
"Device_TableHead_Flapping": "",
|
||||||
"Device_TableHead_GUID": "GUID",
|
"Device_TableHead_GUID": "GUID",
|
||||||
"Device_TableHead_Group": "Група",
|
"Device_TableHead_Group": "Група",
|
||||||
"Device_TableHead_IPv4": "",
|
"Device_TableHead_IPv4": "",
|
||||||
|
|||||||
@@ -225,6 +225,7 @@
|
|||||||
"Device_TableHead_FQDN": "",
|
"Device_TableHead_FQDN": "",
|
||||||
"Device_TableHead_Favorite": "",
|
"Device_TableHead_Favorite": "",
|
||||||
"Device_TableHead_FirstSession": "",
|
"Device_TableHead_FirstSession": "",
|
||||||
|
"Device_TableHead_Flapping": "",
|
||||||
"Device_TableHead_GUID": "",
|
"Device_TableHead_GUID": "",
|
||||||
"Device_TableHead_Group": "",
|
"Device_TableHead_Group": "",
|
||||||
"Device_TableHead_IPv4": "",
|
"Device_TableHead_IPv4": "",
|
||||||
|
|||||||
@@ -225,6 +225,7 @@
|
|||||||
"Device_TableHead_FQDN": "FQDN",
|
"Device_TableHead_FQDN": "FQDN",
|
||||||
"Device_TableHead_Favorite": "收藏",
|
"Device_TableHead_Favorite": "收藏",
|
||||||
"Device_TableHead_FirstSession": "加入",
|
"Device_TableHead_FirstSession": "加入",
|
||||||
|
"Device_TableHead_Flapping": "",
|
||||||
"Device_TableHead_GUID": "GUID",
|
"Device_TableHead_GUID": "GUID",
|
||||||
"Device_TableHead_Group": "组",
|
"Device_TableHead_Group": "组",
|
||||||
"Device_TableHead_IPv4": "IPv4",
|
"Device_TableHead_IPv4": "IPv4",
|
||||||
|
|||||||
@@ -443,7 +443,8 @@
|
|||||||
"Device_TableHead_ReqNicsOnline",
|
"Device_TableHead_ReqNicsOnline",
|
||||||
"Device_TableHead_Vlan",
|
"Device_TableHead_Vlan",
|
||||||
"Device_TableHead_IPv4",
|
"Device_TableHead_IPv4",
|
||||||
"Device_TableHead_IPv6"
|
"Device_TableHead_IPv6",
|
||||||
|
"Device_TableHead_Flapping"
|
||||||
],
|
],
|
||||||
"localized": ["name", "description"],
|
"localized": ["name", "description"],
|
||||||
"name": [
|
"name": [
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ class Device(ObjectType):
|
|||||||
devParentPortSource = String(description="Source tracking for devParentPort (USER, LOCKED, NEWDEV, or plugin prefix)")
|
devParentPortSource = String(description="Source tracking for devParentPort (USER, LOCKED, NEWDEV, or plugin prefix)")
|
||||||
devParentRelTypeSource = String(description="Source tracking for devParentRelType (USER, LOCKED, NEWDEV, or plugin prefix)")
|
devParentRelTypeSource = String(description="Source tracking for devParentRelType (USER, LOCKED, NEWDEV, or plugin prefix)")
|
||||||
devVlanSource = String(description="Source tracking for devVlan")
|
devVlanSource = String(description="Source tracking for devVlan")
|
||||||
devFlapping = String(description="ndicates flapping device (device changing between online/offline states frequently)")
|
devFlapping = Int(description="Indicates flapping device (device changing between online/offline states frequently)")
|
||||||
|
|
||||||
|
|
||||||
class DeviceResult(ObjectType):
|
class DeviceResult(ObjectType):
|
||||||
|
|||||||
Reference in New Issue
Block a user