diff --git a/front/devices.php b/front/devices.php index a4a06143..e50fbbfd 100755 --- a/front/devices.php +++ b/front/devices.php @@ -385,10 +385,12 @@ function mapColumnIndexToFieldName(index, tableColumnVisible) { "devSyncHubNode", "devSite", "devSSID", - "devSourcePlugin" + "devSourcePlugin", + "devPresentLastScan", + "devAlertDown" ]; - console.log("OrderBy: " + columnNames[tableColumnOrder[index]]); + // console.log("OrderBy: " + columnNames[tableColumnOrder[index]]); return columnNames[tableColumnOrder[index]] || null; } @@ -530,6 +532,7 @@ function initializeDatatable (status) { return json.devices.devices.map(device => { // Convert each device record into the required DataTable row format + // Order has to be teh same as in the UI_device_columns setting options const originalRow = [ device.devName || "", device.devOwner || "", @@ -554,7 +557,9 @@ function initializeDatatable (status) { device.devSyncHubNode || "", device.devSite || "", device.devSSID || "", - device.devSourcePlugin || "" + device.devSourcePlugin || "", + device.devPresentLastScan || "", + device.devAlertDown || "" ]; const newRow = []; @@ -696,18 +701,19 @@ function initializeDatatable (status) { // Status color {targets: [mapIndx(10)], 'createdCell': function (td, cellData, rowData, row, col) { + + tmp_devPresentLastScan = rowData[mapIndx(24)] + tmp_devAlertDown = rowData[mapIndx(25)] - devData = getDeviceDataByMac(rowData[mapIndx(11)]) - - if (devData.devPresentLastScan == 1) + if (tmp_devPresentLastScan == 1) { css = "green text-white statusOnline" icon = '' - } else if (devData.devPresentLastScan != 1 && devData.devAlertDown == 1) + } else if (tmp_devPresentLastScan != 1 && tmp_devAlertDown == 1) { css = "red text-white statusDown" icon = '' - } else if(devData.devPresentLastScan != 1) + } else if(tmp_devPresentLastScan != 1) { css = "gray text-white statusOffline" icon = '' diff --git a/front/php/templates/language/ar_ar.json b/front/php/templates/language/ar_ar.json index 65e5f46c..256fb3fe 100755 --- a/front/php/templates/language/ar_ar.json +++ b/front/php/templates/language/ar_ar.json @@ -199,6 +199,7 @@ "Device_Shortcut_Favorites": "", "Device_Shortcut_NewDevices": "", "Device_Shortcut_OnlineChart": "", + "Device_TableHead_AlertDown": "", "Device_TableHead_Connected_Devices": "", "Device_TableHead_Favorite": "", "Device_TableHead_FirstSession": "", @@ -216,6 +217,7 @@ "Device_TableHead_Owner": "", "Device_TableHead_Parent_MAC": "", "Device_TableHead_Port": "", + "Device_TableHead_PresentLastScan": "", "Device_TableHead_RowID": "", "Device_TableHead_Rowid": "", "Device_TableHead_SSID": "", diff --git a/front/php/templates/language/ca_ca.json b/front/php/templates/language/ca_ca.json index 1f6af4ce..e10c4e61 100755 --- a/front/php/templates/language/ca_ca.json +++ b/front/php/templates/language/ca_ca.json @@ -199,6 +199,7 @@ "Device_Shortcut_Favorites": "Favorits", "Device_Shortcut_NewDevices": "Nous dispositius", "Device_Shortcut_OnlineChart": "Presència de dispositius", + "Device_TableHead_AlertDown": "", "Device_TableHead_Connected_Devices": "Connexions", "Device_TableHead_Favorite": "Favorit", "Device_TableHead_FirstSession": "Primera Sessió", @@ -216,6 +217,7 @@ "Device_TableHead_Owner": "Propietari", "Device_TableHead_Parent_MAC": "MAC del node pare", "Device_TableHead_Port": "Port", + "Device_TableHead_PresentLastScan": "", "Device_TableHead_RowID": "ID de fila", "Device_TableHead_Rowid": "ID de fila", "Device_TableHead_SSID": "SSID", @@ -715,4 +717,4 @@ "settings_update_item_warning": "", "test_event_icon": "", "test_event_tooltip": "" -} +} \ No newline at end of file diff --git a/front/php/templates/language/cs_cz.json b/front/php/templates/language/cs_cz.json index 65e5f46c..256fb3fe 100755 --- a/front/php/templates/language/cs_cz.json +++ b/front/php/templates/language/cs_cz.json @@ -199,6 +199,7 @@ "Device_Shortcut_Favorites": "", "Device_Shortcut_NewDevices": "", "Device_Shortcut_OnlineChart": "", + "Device_TableHead_AlertDown": "", "Device_TableHead_Connected_Devices": "", "Device_TableHead_Favorite": "", "Device_TableHead_FirstSession": "", @@ -216,6 +217,7 @@ "Device_TableHead_Owner": "", "Device_TableHead_Parent_MAC": "", "Device_TableHead_Port": "", + "Device_TableHead_PresentLastScan": "", "Device_TableHead_RowID": "", "Device_TableHead_Rowid": "", "Device_TableHead_SSID": "", diff --git a/front/php/templates/language/de_de.json b/front/php/templates/language/de_de.json index f308d31e..12600cb4 100755 --- a/front/php/templates/language/de_de.json +++ b/front/php/templates/language/de_de.json @@ -211,6 +211,7 @@ "Device_Shortcut_Favorites": "Favoriten", "Device_Shortcut_NewDevices": "Neue Geräte", "Device_Shortcut_OnlineChart": "Gerätepräsenz im Laufe der Zeit", + "Device_TableHead_AlertDown": "", "Device_TableHead_Connected_Devices": "Verbindungen", "Device_TableHead_Favorite": "Favorit", "Device_TableHead_FirstSession": "Erste Sitzung", @@ -228,6 +229,7 @@ "Device_TableHead_Owner": "Eigentümer", "Device_TableHead_Parent_MAC": "Übergeordnete MAC", "Device_TableHead_Port": "Port", + "Device_TableHead_PresentLastScan": "", "Device_TableHead_RowID": "Zeilen ID", "Device_TableHead_Rowid": "Zeilennummer", "Device_TableHead_SSID": "SSID", diff --git a/front/php/templates/language/en_us.json b/front/php/templates/language/en_us.json index 29dedaa6..2e2062b4 100755 --- a/front/php/templates/language/en_us.json +++ b/front/php/templates/language/en_us.json @@ -199,6 +199,7 @@ "Device_Shortcut_Favorites": "Favorites", "Device_Shortcut_NewDevices": "New Devices", "Device_Shortcut_OnlineChart": "Device presence", + "Device_TableHead_AlertDown": "Alert Down", "Device_TableHead_Connected_Devices": "Connections", "Device_TableHead_Favorite": "Favorite", "Device_TableHead_FirstSession": "First Session", @@ -216,6 +217,7 @@ "Device_TableHead_Owner": "Owner", "Device_TableHead_Parent_MAC": "Parent node MAC", "Device_TableHead_Port": "Port", + "Device_TableHead_PresentLastScan": "Presence", "Device_TableHead_RowID": "Row ID", "Device_TableHead_Rowid": "Row ID", "Device_TableHead_SSID": "SSID", diff --git a/front/php/templates/language/es_es.json b/front/php/templates/language/es_es.json index 3aed8ccf..992bed24 100755 --- a/front/php/templates/language/es_es.json +++ b/front/php/templates/language/es_es.json @@ -209,6 +209,7 @@ "Device_Shortcut_Favorites": "Favorito(s)", "Device_Shortcut_NewDevices": "Nuevo(s)", "Device_Shortcut_OnlineChart": "Presencia del dispositivo a lo largo del tiempo", + "Device_TableHead_AlertDown": "", "Device_TableHead_Connected_Devices": "Conexiones", "Device_TableHead_Favorite": "Favorito", "Device_TableHead_FirstSession": "1ra. sesión", @@ -226,6 +227,7 @@ "Device_TableHead_Owner": "Propietario", "Device_TableHead_Parent_MAC": "Nodo principal de la MAC", "Device_TableHead_Port": "Puerto", + "Device_TableHead_PresentLastScan": "", "Device_TableHead_RowID": "Row ID", "Device_TableHead_Rowid": "Row ID", "Device_TableHead_SSID": "SSID", @@ -794,4 +796,4 @@ "settings_update_item_warning": "Actualice el valor a continuación. Tenga cuidado de seguir el formato anterior. O la validación no se realiza.", "test_event_icon": "fa-vial-circle-check", "test_event_tooltip": "Guarda tus cambios antes de probar nuevos ajustes." -} +} \ No newline at end of file diff --git a/front/php/templates/language/fr_fr.json b/front/php/templates/language/fr_fr.json index 9cc17402..83e649ab 100755 --- a/front/php/templates/language/fr_fr.json +++ b/front/php/templates/language/fr_fr.json @@ -199,6 +199,7 @@ "Device_Shortcut_Favorites": "Favoris", "Device_Shortcut_NewDevices": "Nouveaux appareils", "Device_Shortcut_OnlineChart": "Présence de l'appareil", + "Device_TableHead_AlertDown": "", "Device_TableHead_Connected_Devices": "Connexions", "Device_TableHead_Favorite": "Favori", "Device_TableHead_FirstSession": "Première session", @@ -216,6 +217,7 @@ "Device_TableHead_Owner": "Propriétaire", "Device_TableHead_Parent_MAC": "MAC du nœud principal", "Device_TableHead_Port": "Port", + "Device_TableHead_PresentLastScan": "", "Device_TableHead_RowID": "ID de colonne", "Device_TableHead_Rowid": "ID de colonne", "Device_TableHead_SSID": "SSID", @@ -715,4 +717,4 @@ "settings_update_item_warning": "Mettre à jour la valeur ci-dessous. Veillez à bien suivre le même format qu'auparavant. Il n'y a pas de pas de contrôle.", "test_event_icon": "fa-vial-circle-check", "test_event_tooltip": "Enregistrer d'abord vos modifications avant de tester vôtre paramétrage." -} +} \ No newline at end of file diff --git a/front/php/templates/language/it_it.json b/front/php/templates/language/it_it.json index 48dccc15..ab6f3cfb 100755 --- a/front/php/templates/language/it_it.json +++ b/front/php/templates/language/it_it.json @@ -199,6 +199,7 @@ "Device_Shortcut_Favorites": "Preferiti", "Device_Shortcut_NewDevices": "Nuovi dispositivi", "Device_Shortcut_OnlineChart": "Presenza dispositivo", + "Device_TableHead_AlertDown": "", "Device_TableHead_Connected_Devices": "Connessioni", "Device_TableHead_Favorite": "Preferito", "Device_TableHead_FirstSession": "Prima sessione", @@ -216,6 +217,7 @@ "Device_TableHead_Owner": "Proprietario", "Device_TableHead_Parent_MAC": "MAC del nodo principale", "Device_TableHead_Port": "Porta", + "Device_TableHead_PresentLastScan": "", "Device_TableHead_RowID": "ID riga", "Device_TableHead_Rowid": "ID riga", "Device_TableHead_SSID": "SSID", @@ -715,4 +717,4 @@ "settings_update_item_warning": "Aggiorna il valore qui sotto. Fai attenzione a seguire il formato precedente. La convalida non viene eseguita.", "test_event_icon": "fa-vial-circle-check", "test_event_tooltip": "Salva le modifiche prima di provare le nuove impostazioni." -} +} \ No newline at end of file diff --git a/front/php/templates/language/nb_no.json b/front/php/templates/language/nb_no.json index 9dbc69a3..d2fe8fd9 100755 --- a/front/php/templates/language/nb_no.json +++ b/front/php/templates/language/nb_no.json @@ -199,6 +199,7 @@ "Device_Shortcut_Favorites": "Favoritter", "Device_Shortcut_NewDevices": "Nye Enheter", "Device_Shortcut_OnlineChart": "Enhetens tilstedeværelse", + "Device_TableHead_AlertDown": "", "Device_TableHead_Connected_Devices": "Tilkoblinger", "Device_TableHead_Favorite": "Favoritt", "Device_TableHead_FirstSession": "Første Økt", @@ -216,6 +217,7 @@ "Device_TableHead_Owner": "Eier", "Device_TableHead_Parent_MAC": "Overordnet node MAC", "Device_TableHead_Port": "Port", + "Device_TableHead_PresentLastScan": "", "Device_TableHead_RowID": "Rad ID", "Device_TableHead_Rowid": "Rad ID", "Device_TableHead_SSID": "", diff --git a/front/php/templates/language/pl_pl.json b/front/php/templates/language/pl_pl.json index dda130f8..37ebbb34 100755 --- a/front/php/templates/language/pl_pl.json +++ b/front/php/templates/language/pl_pl.json @@ -199,6 +199,7 @@ "Device_Shortcut_Favorites": "Ulubione", "Device_Shortcut_NewDevices": "Nowe Urządzenia", "Device_Shortcut_OnlineChart": "Obecność urządzenia", + "Device_TableHead_AlertDown": "", "Device_TableHead_Connected_Devices": "Połączenia", "Device_TableHead_Favorite": "Ulubione", "Device_TableHead_FirstSession": "Pierwsza Sesja", @@ -216,6 +217,7 @@ "Device_TableHead_Owner": "Właściciel", "Device_TableHead_Parent_MAC": "MAC rodzica węzła", "Device_TableHead_Port": "Port", + "Device_TableHead_PresentLastScan": "", "Device_TableHead_RowID": "ID wiersza", "Device_TableHead_Rowid": "ID wiersza", "Device_TableHead_SSID": "SSID", diff --git a/front/php/templates/language/pt_br.json b/front/php/templates/language/pt_br.json index fdb0ed94..7d48b1f3 100755 --- a/front/php/templates/language/pt_br.json +++ b/front/php/templates/language/pt_br.json @@ -199,6 +199,7 @@ "Device_Shortcut_Favorites": "Favoritos", "Device_Shortcut_NewDevices": "Novos dispositivos", "Device_Shortcut_OnlineChart": "Presença do dispositivo", + "Device_TableHead_AlertDown": "", "Device_TableHead_Connected_Devices": "Conexões", "Device_TableHead_Favorite": "Favorito", "Device_TableHead_FirstSession": "Primeira sessão", @@ -216,6 +217,7 @@ "Device_TableHead_Owner": "Proprietário", "Device_TableHead_Parent_MAC": "Nó pai MAC", "Device_TableHead_Port": "Porta", + "Device_TableHead_PresentLastScan": "", "Device_TableHead_RowID": "ID da linha", "Device_TableHead_Rowid": "ID da linha", "Device_TableHead_SSID": "SSID", diff --git a/front/php/templates/language/ru_ru.json b/front/php/templates/language/ru_ru.json index 477f5559..28dae2b1 100755 --- a/front/php/templates/language/ru_ru.json +++ b/front/php/templates/language/ru_ru.json @@ -199,6 +199,7 @@ "Device_Shortcut_Favorites": "Избранные", "Device_Shortcut_NewDevices": "Новые устройства", "Device_Shortcut_OnlineChart": "Присутствие устройств", + "Device_TableHead_AlertDown": "", "Device_TableHead_Connected_Devices": "Соединения", "Device_TableHead_Favorite": "Избранное", "Device_TableHead_FirstSession": "Первый сеанс", @@ -216,6 +217,7 @@ "Device_TableHead_Owner": "Владелец", "Device_TableHead_Parent_MAC": "MAC род. узла", "Device_TableHead_Port": "Порт", + "Device_TableHead_PresentLastScan": "", "Device_TableHead_RowID": "ID строки", "Device_TableHead_Rowid": "ID строки", "Device_TableHead_SSID": "SSID", @@ -715,4 +717,4 @@ "settings_update_item_warning": "Обновить значение ниже. Будьте осторожны, следуя предыдущему формату. Проверка не выполняется.", "test_event_icon": "fa-vial-circle-check", "test_event_tooltip": "Сначала сохраните изменения, прежде чем проверять настройки." -} +} \ No newline at end of file diff --git a/front/php/templates/language/tr_tr.json b/front/php/templates/language/tr_tr.json index 4bd7356d..cfcbe048 100755 --- a/front/php/templates/language/tr_tr.json +++ b/front/php/templates/language/tr_tr.json @@ -199,6 +199,7 @@ "Device_Shortcut_Favorites": "Favoriler", "Device_Shortcut_NewDevices": "Yeni Cİhazlar", "Device_Shortcut_OnlineChart": "", + "Device_TableHead_AlertDown": "", "Device_TableHead_Connected_Devices": "Bağlantılar", "Device_TableHead_Favorite": "", "Device_TableHead_FirstSession": "İlk Oturum", @@ -216,6 +217,7 @@ "Device_TableHead_Owner": "", "Device_TableHead_Parent_MAC": "", "Device_TableHead_Port": "", + "Device_TableHead_PresentLastScan": "", "Device_TableHead_RowID": "", "Device_TableHead_Rowid": "", "Device_TableHead_SSID": "", diff --git a/front/php/templates/language/zh_cn.json b/front/php/templates/language/zh_cn.json index f84eeac1..7e4cd6ee 100755 --- a/front/php/templates/language/zh_cn.json +++ b/front/php/templates/language/zh_cn.json @@ -199,6 +199,7 @@ "Device_Shortcut_Favorites": "收藏", "Device_Shortcut_NewDevices": "新设备", "Device_Shortcut_OnlineChart": "设备统计", + "Device_TableHead_AlertDown": "", "Device_TableHead_Connected_Devices": "链接", "Device_TableHead_Favorite": "收藏", "Device_TableHead_FirstSession": "加入", @@ -216,6 +217,7 @@ "Device_TableHead_Owner": "所有者", "Device_TableHead_Parent_MAC": "父节点", "Device_TableHead_Port": "端口", + "Device_TableHead_PresentLastScan": "", "Device_TableHead_RowID": "排行", "Device_TableHead_Rowid": "排行", "Device_TableHead_SSID": "SSID", diff --git a/front/plugins/ui_settings/config.json b/front/plugins/ui_settings/config.json index 52ed79cf..50d0f07c 100755 --- a/front/plugins/ui_settings/config.json +++ b/front/plugins/ui_settings/config.json @@ -373,7 +373,9 @@ "Device_TableHead_SyncHubNodeName", "Device_TableHead_NetworkSite", "Device_TableHead_SSID", - "Device_TableHead_SourcePlugin" + "Device_TableHead_SourcePlugin", + "Device_TableHead_PresentLastScan", + "Device_TableHead_AlertDown" ], "localized": ["name", "description"], "name": [ diff --git a/server/graphql_server/graphql_schema.py b/server/graphql_server/graphql_schema.py index e47cb48e..4d49b0ad 100755 --- a/server/graphql_server/graphql_schema.py +++ b/server/graphql_server/graphql_schema.py @@ -99,7 +99,6 @@ class Query(ObjectType): # Apply sorting if options are provided if options: - # Define status-specific filtering if options.status: status = options.status @@ -142,7 +141,7 @@ class Query(ObjectType): for sort_option in options.sort: devices_data = sorted( devices_data, - key=lambda x: x.get(sort_option.field), + key=lambda x: mixed_type_sort_key(x.get(sort_option.field)), reverse=(sort_option.order.lower() == "desc") ) @@ -176,7 +175,14 @@ class Query(ObjectType): return DeviceResult(devices=devices, count=total_count) - +# helps sorting inconsistent dataset mixed integers and strings +def mixed_type_sort_key(value): + if value is None or value == "": + return (2, '') # Place None or empty strings last + try: + return (0, int(value)) # Integers get priority + except (ValueError, TypeError): + return (1, str(value)) # Strings come next # Schema Definition devicesSchema = graphene.Schema(query=Query) diff --git a/server/initialise.py b/server/initialise.py index 83367537..258b92c3 100755 --- a/server/initialise.py +++ b/server/initialise.py @@ -324,7 +324,7 @@ def importConfigs (db, all_plugins): # Log the value being passed # ccd(key, default, config_dir, name, inputtype, options, group, events=None, desc="", regex="", setJsonMetadata=None, overrideTemplate=None, forceDefault=False) - mylog('debug', [f"[Config] Setting override {setting_name} with value: {value}"]) + mylog('verbose', [f"[Config] Setting override {setting_name} with value: {value}"]) ccd(setting_name, value, c_d, '_KEEP_', '_KEEP_', '_KEEP_', '_KEEP_', None, "_KEEP_", "", None, None, True, 1) except json.JSONDecodeError: