<?php

// Gets the nodes and groups for group/node js widget
if(!isset($TOPDIR)) { $TOPDIR="..";}
require_once "$TOPDIR/lib/security.php";
require_once "$TOPDIR/lib/functions.php";
require_once "$TOPDIR/lib/display.php";
require_once "$TOPDIR/lib/monitor_display.php";

require_once "$TOPDIR/js/jsonwrapper.php";
    if (isset($_GET['id'])) {
        $id = $_GET['id'];
    }
    if ($id == "0") {
        echo '[{"data":"cluster","attributes":{"id":",cluster","rel":"node"}},{"data":"summary","attributes":{"id":",summary","rel":"node"}},{"data":"lpar","attributes":{"id":",lpar","rel":"group"},"state":"closed"}]';
    } else {
        $id=preg_replace('/^,/','',$id);
        $rvals=docmd('extnoderange',$id,array('subgroups'));
        $parents=array();
        $root=1;
        if ($id == '/.*') {
            $id=',';
        } else {
            $parents=split("@",$id);
            $id=",$id@";
            $root=0;
        }
        //unset($rvals->xcatresponse->serverdone[0]);
        $numsubgroups=count($rvals->xcatresponse->intersectinggroups);
        $numnodes=count($rvals->xcatresponse->node);
        $jdata=array();
        if ($numnodes >= $numsubgroups) { #If there are few enough subgroups to be helpful filters, add them in
            foreach ($rvals->xcatresponse->intersectinggroups as $group) {
                if (! in_array("$group",$parents)) {
                $jdata[]= array("data"=>"$group",
                                "attributes"=>array("id"=>"$id$group",
                                                    "rel"=>'group'),
                                "state"=>'closed');
                                }

            }
        } #If there were more groups than nodes, leave the signal to noise ratio down
        if ($root==0) {
            foreach ($rvals->xcatresponse->node as $node) {
                $jdata[] = array("data"=>"$node",
                                 "attributes"=>array("id"=>",$node",
                                                     "rel"=>'node'));
            }
        }
        echo json_encode($jdata);
    }
?>