mirror of
https://github.com/jokob-sk/NetAlertX.git
synced 2026-03-01 21:55:59 -05:00
125 lines
6.1 KiB
JavaScript
125 lines
6.1 KiB
JavaScript
// =============================================================================
|
|
// device-columns.js — Single source of truth for device field definitions.
|
|
//
|
|
// To add a new device column, update ONLY these places:
|
|
// 1. DEVICE_COLUMN_FIELDS — add the field name in the correct position
|
|
// 2. COLUMN_NAME_MAP — add Device_TableHead_X → fieldName mapping
|
|
// 3. NUMERIC_DEFAULTS — add fieldName if its default value is 0 not ""
|
|
// 4. GRAPHQL_EXTRA_FIELDS — add fieldName ONLY if it is NOT a display column
|
|
// (i.e. fetched for logic but not shown in table)
|
|
// 5. front/plugins/ui_settings/config.json options[]
|
|
// 6. front/php/templates/language/en_us.json Device_TableHead_X
|
|
// then run merge_translations.py for other languages
|
|
// 7. Backend: DB view + GraphQL type
|
|
// =============================================================================
|
|
|
|
// Ordered list of all device table column field names.
|
|
// Position here determines the positional index used throughout devices.php.
|
|
const DEVICE_COLUMN_FIELDS = [
|
|
"devName", // 0 Device_TableHead_Name
|
|
"devOwner", // 1 Device_TableHead_Owner
|
|
"devType", // 2 Device_TableHead_Type
|
|
"devIcon", // 3 Device_TableHead_Icon
|
|
"devFavorite", // 4 Device_TableHead_Favorite
|
|
"devGroup", // 5 Device_TableHead_Group
|
|
"devFirstConnection", // 6 Device_TableHead_FirstSession
|
|
"devLastConnection", // 7 Device_TableHead_LastSession
|
|
"devLastIP", // 8 Device_TableHead_LastIP
|
|
"devIsRandomMac", // 9 Device_TableHead_MAC (random MAC flag column)
|
|
"devStatus", // 10 Device_TableHead_Status
|
|
"devMac", // 11 Device_TableHead_MAC_full
|
|
"devIpLong", // 12 Device_TableHead_LastIPOrder
|
|
"rowid", // 13 Device_TableHead_Rowid
|
|
"devParentMAC", // 14 Device_TableHead_Parent_MAC
|
|
"devParentChildrenCount",// 15 Device_TableHead_Connected_Devices
|
|
"devLocation", // 16 Device_TableHead_Location
|
|
"devVendor", // 17 Device_TableHead_Vendor
|
|
"devParentPort", // 18 Device_TableHead_Port
|
|
"devGUID", // 19 Device_TableHead_GUID
|
|
"devSyncHubNode", // 20 Device_TableHead_SyncHubNodeName
|
|
"devSite", // 21 Device_TableHead_NetworkSite
|
|
"devSSID", // 22 Device_TableHead_SSID
|
|
"devSourcePlugin", // 23 Device_TableHead_SourcePlugin
|
|
"devPresentLastScan", // 24 Device_TableHead_PresentLastScan
|
|
"devAlertDown", // 25 Device_TableHead_AlertDown
|
|
"devCustomProps", // 26 Device_TableHead_CustomProps
|
|
"devFQDN", // 27 Device_TableHead_FQDN
|
|
"devParentRelType", // 28 Device_TableHead_ParentRelType
|
|
"devReqNicsOnline", // 29 Device_TableHead_ReqNicsOnline
|
|
"devVlan", // 30 Device_TableHead_Vlan
|
|
"devPrimaryIPv4", // 31 Device_TableHead_IPv4
|
|
"devPrimaryIPv6", // 32 Device_TableHead_IPv6
|
|
"devFlapping", // 33 Device_TableHead_Flapping
|
|
];
|
|
|
|
// Named index constants — eliminates all mapIndx(N) magic numbers.
|
|
// Access as COL.devFlapping, COL.devMac, etc.
|
|
const COL = Object.fromEntries(DEVICE_COLUMN_FIELDS.map((name, i) => [name, i]));
|
|
|
|
// Fields whose GraphQL response value should default to 0 instead of "".
|
|
const NUMERIC_DEFAULTS = new Set([
|
|
"devParentChildrenCount",
|
|
"devReqNicsOnline",
|
|
"devFlapping",
|
|
]);
|
|
|
|
// Fields fetched from GraphQL for internal logic only — not display columns.
|
|
// These are merged with DEVICE_COLUMN_FIELDS to build the GraphQL query.
|
|
const GRAPHQL_EXTRA_FIELDS = [
|
|
"devComments",
|
|
"devStaticIP",
|
|
"devScan",
|
|
"devLogEvents",
|
|
"devAlertEvents",
|
|
"devSkipRepeated",
|
|
"devLastNotification",
|
|
"devIsNew",
|
|
"devIsArchived",
|
|
];
|
|
|
|
// Maps Device_TableHead_* language keys to their GraphQL/DB field names.
|
|
// Used by getColumnNameFromLangString() in ui_components.js and by
|
|
// column filter logic in devices.php.
|
|
//
|
|
// NOTE: Device_TableHead_MAC maps to devMac (display), while position 9 in
|
|
// DEVICE_COLUMN_FIELDS uses devIsRandomMac (the random-MAC flag column).
|
|
// These are intentionally different; do not collapse them.
|
|
const COLUMN_NAME_MAP = {
|
|
"Device_TableHead_Name": "devName",
|
|
"Device_TableHead_Owner": "devOwner",
|
|
"Device_TableHead_Type": "devType",
|
|
"Device_TableHead_Icon": "devIcon",
|
|
"Device_TableHead_Favorite": "devFavorite",
|
|
"Device_TableHead_Group": "devGroup",
|
|
"Device_TableHead_FirstSession": "devFirstConnection",
|
|
"Device_TableHead_LastSession": "devLastConnection",
|
|
"Device_TableHead_LastIP": "devLastIP",
|
|
"Device_TableHead_MAC": "devMac",
|
|
"Device_TableHead_Status": "devStatus",
|
|
"Device_TableHead_MAC_full": "devMac",
|
|
"Device_TableHead_LastIPOrder": "devIpLong",
|
|
"Device_TableHead_Rowid": "rowid",
|
|
"Device_TableHead_Parent_MAC": "devParentMAC",
|
|
"Device_TableHead_Connected_Devices": "devParentChildrenCount",
|
|
"Device_TableHead_Location": "devLocation",
|
|
"Device_TableHead_Vendor": "devVendor",
|
|
"Device_TableHead_Port": "devParentPort",
|
|
"Device_TableHead_GUID": "devGUID",
|
|
"Device_TableHead_SyncHubNodeName": "devSyncHubNode",
|
|
"Device_TableHead_NetworkSite": "devSite",
|
|
"Device_TableHead_SSID": "devSSID",
|
|
"Device_TableHead_SourcePlugin": "devSourcePlugin",
|
|
"Device_TableHead_PresentLastScan": "devPresentLastScan",
|
|
"Device_TableHead_AlertDown": "devAlertDown",
|
|
"Device_TableHead_CustomProps": "devCustomProps",
|
|
"Device_TableHead_FQDN": "devFQDN",
|
|
"Device_TableHead_ParentRelType": "devParentRelType",
|
|
"Device_TableHead_ReqNicsOnline": "devReqNicsOnline",
|
|
"Device_TableHead_Vlan": "devVlan",
|
|
"Device_TableHead_IPv4": "devPrimaryIPv4",
|
|
"Device_TableHead_IPv6": "devPrimaryIPv6",
|
|
"Device_TableHead_Flapping": "devFlapping",
|
|
};
|
|
|
|
console.log("init device-columns.js");
|