From 162d507468b4832977de627efb231727387081c3 Mon Sep 17 00:00:00 2001 From: Jokob-sk Date: Thu, 26 Jan 2023 11:07:16 +1100 Subject: [PATCH] Prep work for flat tree backup --- front/devices.php | 10 ++- front/maintenance.php | 8 +- front/network.php | 41 ++++++--- front/php/server/devices.php | 112 +++++++++++++++++++++++-- front/php/templates/language/en_us.php | 1 + 5 files changed, 146 insertions(+), 26 deletions(-) diff --git a/front/devices.php b/front/devices.php index c9f9af7c..b51aa1a8 100755 --- a/front/devices.php +++ b/front/devices.php @@ -192,9 +192,10 @@ var parTableOrder = 'Front_Devices_Order'; var tableRows = 10; var tableOrder = [[3,'desc'], [0,'asc']]; - var tableColumnVisible = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]; - var columnsStr = '[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]'; - var tableColumnOrder = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14] ; + + var columnsStr = '[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]'; + var tableColumnOrder = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15] ; + var tableColumnVisible = tableColumnOrder; // Read parameters & Initialize components main(); @@ -228,7 +229,8 @@ function main () { '', '', '', - '' + '', + '' ]; html = ''; diff --git a/front/maintenance.php b/front/maintenance.php index ee90f523..e45b1ec8 100755 --- a/front/maintenance.php +++ b/front/maintenance.php @@ -270,6 +270,7 @@ if (isset($_POST['submit']) && submit && isset($_POST['skinselector_set'])) { + @@ -760,6 +761,9 @@ function scrollDown() // -------------------------------------------------------- // Manage displayed columns // -------------------------------------------------------- +colDefaultOrder = ['0','1','2','3','4','5','6','7','8','9','10','12','13','14','15']; +colDefaultOrderTxt = '[0,1,2,3,4,5,6,7,8,9,10,12,13,14,15]'; + function saveSelectedColumns () { $.get('php/server/parameters.php?action=set&expireMinutes=525600&value=['+ $('#columnsSelect').val().toString() +']¶meter=Front_Devices_Columns_Visible', function(data) { @@ -767,7 +771,7 @@ function saveSelectedColumns () { colDisplayed = $('#columnsSelect').val(); - colDefaultOrder = ['0','1','2','3','4','5','6','7','8','9','10','12','13','14']; + colNewOrder = colDisplayed; @@ -791,7 +795,7 @@ function saveSelectedColumns () { // -------------------------------------------------------- function initializeSelectedColumns () { - $.get('php/server/parameters.php?action=get&expireMinutes=525600&defaultValue=[0,1,2,3,4,5,6,7,8,9,10,12,13,14]¶meter=Front_Devices_Columns_Visible', function(data) { + $.get('php/server/parameters.php?action=get&expireMinutes=525600&defaultValue='+colDefaultOrderTxt+'¶meter=Front_Devices_Columns_Visible', function(data) { tableColumnShow = numberArrayFromString(data); diff --git a/front/network.php b/front/network.php index c70c7bd1..a128dbc8 100755 --- a/front/network.php +++ b/front/network.php @@ -466,7 +466,8 @@ "mac":item[11], "parentMac":item[14], "rowid":item[13], - "status":item[10] + "status":item[10], + "childrenQty":item[15] }}) setCache('devicesListNew', JSON.stringify(devicesListnew)) @@ -502,20 +503,37 @@ // --------------------------------------------------------------------------- var leafNodesCount = 0; var treeLoadedAlready = false; - var hiddenMacs = []; + var hiddenMacs = []; // hidden children + var hiddenChildren = []; + // --------------------------------------------------------------------------- function formatFlatDevicesList() { devList = getDevicesList() + devListNoOrphans = [] + + for(i=0;i 3, - relationnalField: "children", - // relationnalField: "parentMac", + // relationnalField: "children", + relationnalField: "parentMac", }); - myTree.refresh(myHierarchy); - // myTree.refresh(formatFlatDevicesList()); //hasFlatData + // myTree.refresh(myHierarchy); + myTree.refresh(formatFlatDevicesList()); //hasFlatData } // --------------------------------------------------------------------------- diff --git a/front/php/server/devices.php b/front/php/server/devices.php index 29499909..a9b11225 100755 --- a/front/php/server/devices.php +++ b/front/php/server/devices.php @@ -563,6 +563,72 @@ function getDevicesTotals() { } +//------------------------------------------------------------------------------ +// Query the List of devices in a determined Status +//------------------------------------------------------------------------------ +// function getDevicesListForNetworkTree() { +// global $db; + +// $sql = 'SELECT *, CASE +// WHEN t1.dev_AlertDeviceDown=1 AND t1.dev_PresentLastScan=0 THEN "Down" +// WHEN t1.dev_NewDevice=1 THEN "New" +// WHEN t1.dev_PresentLastScan=1 THEN "On-line" +// ELSE "Off-line" END AS dev_Status +// FROM (Devices ) t1 +// LEFT JOIN +// ( +// SELECT *, +// count() as connected_devices +// FROM Devices b +// WHERE b.dev_Network_Node_MAC_ADDR NOT NULL group by b.dev_Network_Node_MAC_ADDR +// ) t2 +// ON (t1.dev_MAC = t2.dev_MAC); '; + +// $result = $db->query($sql); + +// // arrays of rows +// $tableData = array(); +// while ($row = $result -> fetchArray (SQLITE3_ASSOC)) { + +// $defaultOrder = array ($row['dev_Name'], +// $row['dev_Owner'], +// handleNull($row['dev_DeviceType']), +// handleNull($row['dev_Icon'], "laptop"), +// $row['dev_Favorite'], +// $row['dev_Group'], +// formatDate ($row['dev_FirstConnection']), +// formatDate ($row['dev_LastConnection']), +// $row['dev_LastIP'], +// ( in_array($row['dev_MAC'][1], array("2","6","A","E","a","e")) ? 1 : 0), +// $row['dev_Status'], +// $row['dev_MAC'], // MAC (hidden) +// formatIPlong ($row['dev_LastIP']), // IP orderable +// $row['rowid'], // Rowid (hidden) +// handleNull($row['dev_Network_Node_MAC_ADDR']), // +// handleNull($row['connected_devices']) // +// ); + +// $newOrder = array(); + +// // reorder columns based on user settings +// for($index = 0; $index < count($columnOrderMapping); $index++) +// { +// array_push($newOrder, $defaultOrder[$columnOrderMapping[$index][2]]); +// } + +// $tableData['data'][] = $newOrder; +// } + +// // Control no rows +// if (empty($tableData['data'])) { +// $tableData['data'] = ''; +// } + +// // Return json +// echo (json_encode ($tableData)); + +// } + //------------------------------------------------------------------------------ // Query the List of devices in a determined Status //------------------------------------------------------------------------------ @@ -592,7 +658,8 @@ function getDevicesList() { array("dev_MAC_full", 11, 11), array("dev_LastIP_orderable", 12, 12), array("rowid", 13, 13), - array("dev_Network_Node_MAC_ADDR", 14, 14) + array("dev_Network_Node_MAC_ADDR", 14, 14), + array("connected_devices", 15, 15) ); if($forceDefaultOrder == FALSE) @@ -617,13 +684,39 @@ function getDevicesList() { // SQL $condition = getDeviceCondition ($_REQUEST['status']); - $sql = 'SELECT rowid, *, CASE - WHEN dev_AlertDeviceDown=1 AND dev_PresentLastScan=0 THEN "Down" - WHEN dev_NewDevice=1 THEN "New" - WHEN dev_PresentLastScan=1 THEN "On-line" - ELSE "Off-line" - END AS dev_Status - FROM Devices '. $condition; + $sql = 'SELECT * FROM ( + SELECT rowid, *, CASE + WHEN t1.dev_AlertDeviceDown=1 AND t1.dev_PresentLastScan=0 THEN "Down" + WHEN t1.dev_NewDevice=1 THEN "New" + WHEN t1.dev_PresentLastScan=1 THEN "On-line" + ELSE "Off-line" END AS dev_Status + FROM Devices t1 '.$condition.') t3 + LEFT JOIN + ( + SELECT dev_Network_Node_MAC_ADDR as dev_Network_Node_MAC_ADDR_t2, dev_MAC as dev_MAC_t2, + count() as connected_devices + FROM Devices b + WHERE b.dev_Network_Node_MAC_ADDR NOT NULL group by b.dev_Network_Node_MAC_ADDR + ) t2 + ON (t3.dev_MAC = t2.dev_MAC_t2);'; + + + // $sql = 'SELECT * FROM ( + // SELECT rowid, *, CASE + // WHEN t1.dev_AlertDeviceDown=1 AND t1.dev_PresentLastScan=0 THEN "Down" + // WHEN t1.dev_NewDevice=1 THEN "New" + // WHEN t1.dev_PresentLastScan=1 THEN "On-line" + // ELSE "Off-line" END AS dev_Status + // FROM Devices t1 '.$condition.') t3 + // LEFT JOIN + // ( + // SELECT dev_Network_Node_MAC_ADDR, dev_MAC, + // count() as connected_devices + // FROM Devices b + // WHERE b.dev_Network_Node_MAC_ADDR NOT NULL group by b.dev_Network_Node_MAC_ADDR + // ) t2 + // ON (t3.dev_MAC = t2.dev_MAC);'; + $result = $db->query($sql); // arrays of rows @@ -644,7 +737,8 @@ function getDevicesList() { $row['dev_MAC'], // MAC (hidden) formatIPlong ($row['dev_LastIP']), // IP orderable $row['rowid'], // Rowid (hidden) - handleNull($row['dev_Network_Node_MAC_ADDR']) // + handleNull($row['dev_Network_Node_MAC_ADDR']), + handleNull($row['connected_devices']) // ); $newOrder = array(); diff --git a/front/php/templates/language/en_us.php b/front/php/templates/language/en_us.php index 7210ca9b..81ca8c54 100755 --- a/front/php/templates/language/en_us.php +++ b/front/php/templates/language/en_us.php @@ -70,6 +70,7 @@ $lang['en_us'] = array( 'Device_TableHead_RowID' => 'Row ID', 'Device_TableHead_Rowid' => 'Row ID', 'Device_TableHead_Parent_MAC' => 'Parent node MAC', +'Device_TableHead_Connected_Devices' => 'Connected Devices', 'Device_TableHead_Favorite' => 'Favorite', 'Device_TableHead_Group' => 'Group', 'Device_TableHead_FirstSession' => 'First Session',