Ignore:
Timestamp:
01/24/17 16:27:08 (7 years ago)
Author:
nanardon
Message:

A real chart for poeple

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/LATMOS-Accounts-Web/lib/LATMOS/Accounts/Web/Controller/Json/Tree.pm

    r1484 r1939  
    2929    my %users = map { $_ => 1 } $base->search_objects('user', 'active=1', 'givenName=*'); 
    3030    my %dpmts = map { $_ => 1 } $base->search_objects('group', 'sutype=dpmt'); 
    31     my %userdpmt = $base->attributes_summary_by_object('user', 'department'); 
    3231    my %dpmtmanager = $base->attributes_summary_by_object('group', 'managedBy'); 
    3332    my %usermanager = $base->attributes_summary_by_object('user', 'managerContact'); 
     33    my %dpmtuser    = $base->attributes_summary_by_object('user', 'department'); 
    3434 
    3535    my %nodes; 
     
    4040 
    4141    foreach my $user (keys %users) { 
     42        my $ouser = $base->get_object('user', $user); 
    4243        push(@{ $data->{nodes} }, { 
    43                 "name" => $user, 
    44                 label => $user, 
     44                "name" => $ouser->id, 
     45                label => $ouser->get_attributes('displayName'), 
    4546        }); 
    46         $nodes{$user} = $#{ $data->{nodes} }; 
     47        $nodes{$ouser->id} = $#{ $data->{nodes} }; 
    4748    } 
    48     push(@{ $data->{nodes} }, { 
    49             "name" => '-direction', 
    50             label => 'Direction', 
    51         }); 
    52     $nodes{'-direction'} = $#{ $data->{nodes} }; 
    5349 
    54     foreach my $user (keys %dpmts) { 
    55         push(@{ $data->{nodes} }, { 
    56                 "name" => '-' . $user, 
    57                 label => $user, 
    58         }); 
    59         $nodes{'-' . $user} = $#{ $data->{nodes} }; 
     50    foreach my $user (keys %users) { 
     51        my $manager = $usermanager{$user}->[0] || 
     52            $dpmtmanager { $dpmtuser{ $user }->[0] }->[0] or next; 
     53 
     54        if (!$nodes{$manager}) { 
     55            my $ouser = $base->get_object('user', $manager); 
     56            $nodes{$manager} = $nodes{$ouser->id}; 
     57        } 
     58        $nodes{$manager} or next; 
     59 
    6060        push(@{ $data->{links} }, 
    6161            { 
    62                 "source" => $nodes{'-' . $user}, 
    63                 "target" => $nodes{'-direction'}, 
    64                 color => 'red', 
     62                "source" => $nodes{$user}, 
     63                "target" => $nodes{$manager}, 
    6564            } 
    6665        ); 
     
    6867    } 
    6968 
    70      
    71     foreach my $user (keys %users) { 
    72  
    73         if (my $dpmt = $userdpmt{$user}) { 
    74             push(@{ $data->{links} }, 
    75                 { 
    76                     "source" => $nodes{$user}, 
    77                     "target" => $nodes{'-' . $dpmt->[0]}, 
    78                 } 
    79             ) if ($dpmt->[0]); 
    80         } 
    81         if (my $manag = $usermanager{$user}) { 
    82             my $target = $manag->[0]; 
    83             push(@{ $data->{links} }, 
    84                 { 
    85                     "source" => $nodes{$user}, 
    86                     "target" => $nodes{$target}, 
    87                 } 
    88             ) if ($target); 
    89         } 
    90  
    91  
    92     } 
    93      
    9469    $c->stash->{data} = $data; 
    9570} 
Note: See TracChangeset for help on using the changeset viewer.