Changeset 180


Ignore:
Timestamp:
08/03/05 12:19:45 (19 years ago)
Author:
bastiaans
Message:

web/addons/toga/search.php:

  • Added sorting to archive search
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/web/addons/toga/search.php

    r158 r180  
    200200}
    201201
     202function sortJobs( $jobs, $nodes, $sortby, $sortorder ) {
     203
     204        //printf("sortby = %s sortorder = %s\n", $sortby, $sortorder );
     205
     206        $sorted = array();
     207
     208        $cmp = create_function( '$a, $b',
     209                "global \$sortby, \$sortorder;".
     210
     211                "if( \$a == \$b ) return 0;".
     212
     213                "if (\$sortorder==\"desc\")".
     214                        "return ( \$a < \$b ) ? 1 : -1;".
     215                "else if (\$sortorder==\"asc\")".
     216                        "return ( \$a > \$b ) ? 1 : -1;" );
     217
     218        //print_r( $jobs );
     219
     220        foreach( $jobs as $jobid => $jobattrs ) {
     221
     222                        $state = $jobattrs[status];
     223                        $user = $jobattrs[owner];
     224                        $queue = $jobattrs[queue];
     225                        $name = $jobattrs[name];
     226                        $req_cpu = $jobattrs[requested_time];
     227                        $req_memory = $jobattrs[requested_memory];
     228
     229                        //if( $state == 'R' )
     230                        $mynodes = count( $nodes[$jobid] );
     231                        //else
     232                        //        $nodes = $jobattrs[nodes];
     233
     234                        $ppn = (int) $jobattrs[ppn] ? $jobattrs[ppn] : 1;
     235                        $cpus = $mynodes * $ppn;
     236                        $start_time = (int) $jobattrs[start_timestamp];
     237                        $stop_time = (int) $jobattrs[stop_timestamp];
     238                        $runningtime = $stop_time - $start_time;
     239
     240                        switch( $sortby ) {
     241                                case "id":
     242                                        $sorted[$jobid] = $jobid;
     243                                        break;
     244
     245                                case "state":
     246                                        $sorted[$jobid] = $state;
     247                                        break;
     248
     249                                case "user":
     250                                        $sorted[$jobid] = $user;
     251                                        break;
     252
     253                                case "queue":
     254                                        $sorted[$jobid] = $queue;
     255                                        break;
     256
     257                                case "name":
     258                                        $sorted[$jobid] = $name;
     259                                        break;
     260
     261                                case "req_cpu":
     262                                        $sorted[$jobid] = timeToEpoch( $req_cpu );
     263                                        break;
     264
     265                                case "req_mem":
     266                                        $sorted[$jobid] = $req_memory;
     267                                        break;
     268
     269                                case "nodes":
     270                                        $sorted[$jobid] = $mynodes;
     271                                        break;
     272
     273                                case "cpus":
     274                                        $sorted[$jobid] = $cpus;
     275                                        break;
     276
     277                                case "start":
     278                                        $sorted[$jobid] = $start_time;
     279                                        break;
     280
     281                                case "runningtime":
     282                                        $sorted[$jobid] = $runningtime;
     283                                        break;
     284
     285                                default:
     286                                        break;
     287
     288                        }
     289        }
     290
     291        //uasort( $sorted, $cmp );
     292        if( $sortorder == "asc" )
     293                arsort( $sorted );
     294        else if( $sortorder == "desc" )
     295                asort( $sorted );
     296
     297        //print_r( $sorted );
     298
     299        return array_keys( $sorted );
     300}
     301
    202302function makeSearchPage() {
    203303        global $clustername, $tpl, $id, $user, $name, $start_from_time, $start_to_time, $queue;
    204304        global $end_from_time, $end_to_time, $filter, $default_showhosts, $m, $hosts_up;
    205         global $period_start, $period_stop;
     305        global $period_start, $period_stop, $sortby, $sortorder;
    206306
    207307        $metricname = $m;
     
    222322
    223323                $tpl->newBlock( "search_results" );
     324                $tpl->assign( "sortby", $sortby);
     325                $tpl->assign( "sortorder", $sortorder);
    224326                $tdb = new TarchDbase();
    225327                if( $start_from_time ) $start_from_time = datetimeToEpoch( $start_from_time );
     
    229331                $search_ids = $tdb->searchDbase( $id, $queue, $user, $name, $start_from_time, $start_to_time, $end_from_time, $end_to_time );
    230332
    231                 foreach( $search_ids as $foundid ) {
    232 
    233                         $job = $tdb->getJobArray( $foundid );
    234                         $nodes = $tdb->getNodesForJob( $foundid );
     333                $jobs = array();
     334                $nodes = array();
     335
     336                //print_r( $search_ids );
     337
     338                foreach( $search_ids as $myid ) {
     339
     340                        //printf( "myid %s\n", $myid );
     341                        $jobs[$myid] = $tdb->getJobArray( $myid );
     342                        $nodes[$myid] = $tdb->getNodesForJob( $myid );
     343                }
     344
     345                //print_r( $nodes );
     346                $sorted_search = sortJobs( $jobs, $nodes, $sortby, $sortorder );
     347
     348                //print_r( $sorted_search );
     349                foreach( $sorted_search as $sortid ) {
     350
     351                        $job = $jobs[$sortid];
     352                        //print_r( $job );
     353                        $foundid = $job[id];
     354                        //printf( "foundid %s\n", $foundid );
     355
     356                        //$job = $tdb->getJobArray( $foundid );
     357                        //$nodes = $tdb->getNodesForJob( $foundid );
    235358
    236359                        $tpl->newBlock( "node" );
     
    243366                        $tpl->assign( "req_memory", $job[requested_memory] );
    244367
    245                         $nodes_nr = count( $nodes );
     368                        $nodes_nr = count( $nodes[$foundid] );
    246369
    247370                        // need to replace later with domain stored from dbase
     
    325448                                $hosts_up = array();
    326449
    327                                 foreach( $nodes as $mynode )
     450                                foreach( $nodes[$jobid] as $mynode )
    328451                                        $hosts_up[] = $mynode[hostname];
    329452
Note: See TracChangeset for help on using the changeset viewer.