From f2567b22b5d81e1d8bc14164ddd7d6098afd0e9c Mon Sep 17 00:00:00 2001 From: Ludovic Pouzenc Date: Mon, 20 Nov 2017 18:08:20 +0100 Subject: D3.js: Do not display "Orphelins" node when there is no orphan * api/data.json.php: Do not display "Orphelins" node when there is no orphan. --- api/data.json.php | 90 +++++++++++++++++++++++++++---------------------------- 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/api/data.json.php b/api/data.json.php index 79ce772..83a284b 100644 --- a/api/data.json.php +++ b/api/data.json.php @@ -2,27 +2,27 @@ /** * Copyright 2016 Ludovic Pouzenc * Copyright 2016 Nicolas Goaziou - * + * * This file is part of CHD Gestion. - * + * * CHD Gestion is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. - * + * * CHD Gestion is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. - * + * * You should have received a copy of the GNU General Public License * along with CHD Gestion. If not, see . -**/ + **/ include_once('inc/config.php'); $mysqli = new mysqli($db_config['host'], $db_config['username'], $db_config['password'], $db_config['database']); if (mysqli_connect_errno()) { - die(mysqli_connect_error()); + die(mysqli_connect_error()); } unset($db_config); $mysqli->set_charset("utf8") or die($mysqli->error); @@ -41,59 +41,59 @@ AND date_hs IS NULL"); $roots = array(); $childrens = array(); while ( $row = $res->fetch_assoc() ) { - if ( ! array_key_exists($row['id'], $childrens) ) { - $childrens[$row['id']] = array(); - } - $row['children'] = &$childrens[$row['id']]; - $uplink_id = $row['uplink_id']; - unset($row['uplink_id']); - if ( $uplink_id !== NULL ) { - $childrens[$uplink_id][] = $row; - } else { - $roots[] = $row; - } + if ( ! array_key_exists($row['id'], $childrens) ) { + $childrens[$row['id']] = array(); + } + $row['children'] = &$childrens[$row['id']]; + $uplink_id = $row['uplink_id']; + unset($row['uplink_id']); + if ( $uplink_id !== NULL ) { + $childrens[$uplink_id][] = $row; + } else { + $roots[] = $row; + } } foreach ( $childrens as &$arr ) { - foreach ( $arr as &$node ) { - if ( array_key_exists('children', $node) && count($node['children']) === 0 ) { - unset($node['children']); - $node['size'] = 2000; - } - } + foreach ( $arr as &$node ) { + if ( array_key_exists('children', $node) && count($node['children']) === 0 ) { + unset($node['children']); + $node['size'] = 2000; + } + } } $orphans = array(); foreach ( $roots as $k => &$node ) { - if ( array_key_exists('children', $node) && count($node['children']) === 0 ) { - unset($node['children']); - $node['size'] = 1000; - $orphans[$k] = &$node; - } + if ( array_key_exists('children', $node) && count($node['children']) === 0 ) { + unset($node['children']); + $node['size'] = 1000; + $orphans[$k] = &$node; + } } // Remove orphans from $roots then rekey foreach ( array_keys($orphans) as $k ) { - unset($roots[$k]); + unset($roots[$k]); } $roots = array_values($roots); $orphans = array_values($orphans); -$world = array( - 'name' => 'world', - 'children' => array ( - array ( - 'name' => 'roots', - 'children' => &$roots - ), - array ( - 'name' => 'orphans', - 'children' => &$orphans - ), - ), +// Add the back-bone. +$world = array('name' => 'world', 'children' => array()); +$world['children'][] = array( + 'name' => 'Fibre', + 'children' => &$roots ); + +// Only add orphans if there is at least one of them to display. +if ($orphans) { + $world['children'][] = array( + 'name' => 'Orphelins', + 'children' => &$orphans + ); +}; /* -echo "
\n";
-print_r($world);
- */
+  echo "
\n";
+  print_r($world);
+*/
 header('Content-type: application/json');
 echo json_encode($world, JSON_NUMERIC_CHECK | JSON_PRETTY_PRINT | JSON_PARTIAL_OUTPUT_ON_ERROR);
-
-- 
cgit v1.1