Ignore:
Timestamp:
07/10/08 21:53:57 (16 years ago)
Author:
ramonb
Message:

job_monarch/templates/header.tpl:

  • load Grid with paging limits

job_monarch/jobstore.php:

  • sort jobs
  • only return jobs within Ext's paging start/limit

job_monarch/js/jobgrid.js:

  • add paging toolbar to Grid
Location:
trunk/web2/addons/job_monarch
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/web2/addons/job_monarch/jobstore.php

    r536 r537  
    55$cluster                = $c;
    66
     7// Supplied by ExtJS when DataStore has remoteSort: true
     8//
     9$sortfield              = $_POST["sort"];
     10$sortorder              = $_POST["dir"]; // ASC or DESC
     11
    712global $c, $clustername, $cluster;
    813
     14// Grid Paging stuff
     15//
     16//$pstart       = (int) (isset($_POST['start']) ? $_POST['start'] : $_GET['pstart']);
     17$pstart = (int) $_POST['start'];
     18//$pend = (int) (isset($_POST['limit']) ? $_POST['limit'] : $_GET['plimit']);
     19$pend   = (int) $_POST['limit'];
     20
     21// Need to fool Ganglia here: or it won't parse XML for our cluster
     22//
    923$HTTP_POST_VARS["c"]    = $c;
    1024$_GET["c"]              = $c;
     
    1630$ds             = new DataSource();
    1731$myxml_data     = &$ds->getData();
    18 
    19 //printf( "d %s\n", strlen( $myxml_data ) );
    20 //return 0;
    2132
    2233global $jobs;
     
    5566}
    5667
     68function sortJobs( $jobs, $sortby, $sortorder )
     69{
     70        $sorted = array();
     71
     72        $cmp    = create_function( '$a, $b',
     73                "global \$sortby, \$sortorder;".
     74
     75                "if( \$a == \$b ) return 0;".
     76
     77                "if (\$sortorder==\"DESC\")".
     78                        "return ( \$a < \$b ) ? 1 : -1;".
     79                "else if (\$sortorder==\"ASC\")".
     80                        "return ( \$a > \$b ) ? 1 : -1;" );
     81
     82        if( isset( $jobs ) && count( $jobs ) > 0 )
     83        {
     84                foreach( $jobs as $jobid => $jobattrs )
     85                {
     86                                $state          = $jobattrs[status];
     87                                $user           = $jobattrs[owner];
     88                                $queue          = $jobattrs[queue];
     89                                $name           = $jobattrs[name];
     90                                $req_cpu        = $jobattrs[requested_time];
     91                                $req_memory     = $jobattrs[requested_memory];
     92
     93                                if( $state == 'R' )
     94                                {
     95                                        $nodes = count( $jobattrs[nodes] );
     96                                }
     97                                else
     98                                {
     99                                        $nodes = $jobattrs[nodes];
     100                                }
     101
     102                                $ppn            = (int) $jobattrs[ppn] ? $jobattrs[ppn] : 1;
     103                                $cpus           = $nodes * $ppn;
     104                                $queued_time    = (int) $jobattrs[queued_timestamp];
     105                                $start_time     = (int) $jobattrs[start_timestamp];
     106                                $runningtime    = $report_time - $start_time;
     107
     108                                switch( $sortby )
     109                                {
     110                                        case "jid":
     111                                                $sorted[$jobid] = $jobid;
     112                                                break;
     113
     114                                        case "status":
     115                                                $sorted[$jobid] = $state;
     116                                                break;
     117
     118                                        case "owner":
     119                                                $sorted[$jobid] = $user;
     120                                                break;
     121
     122                                        case "queue":
     123                                                $sorted[$jobid] = $queue;
     124                                                break;
     125
     126                                        case "name":
     127                                                $sorted[$jobid] = $name;
     128                                                break;
     129
     130                                        case "requested_time":
     131                                                $sorted[$jobid] = timeToEpoch( $req_cpu );
     132                                                break;
     133
     134                                        case "requested_memory":
     135                                                $sorted[$jobid] = $req_memory;
     136                                                break;
     137
     138                                        case "ppn":
     139                                                $sorted[$jobid] = $ppn;
     140                                                break;
     141                                        case "nodesct":
     142                                                $sorted[$jobid] = $nodes;
     143                                                break;
     144                                        case "cpus":
     145                                                $sorted[$jobid] = $cpus;
     146                                                break;
     147
     148                                        case "queued_timestamp":
     149                                                $sorted[$jobid] = $queued_time;
     150                                                break;
     151
     152                                        case "start_timestamp":
     153                                                $sorted[$jobid] = $start_time;
     154                                                break;
     155
     156                                        case "runningtime":
     157                                                $sorted[$jobid] = $runningtime;
     158                                                break;
     159
     160                                        default:
     161                                                break;
     162                                }
     163                }
     164        }
     165
     166        if( $sortorder == "ASC" )
     167        {
     168                asort( $sorted );
     169        }
     170        else if( $sortorder == "DESC" )
     171        {
     172                arsort( $sorted );
     173        }
     174
     175        return $sorted;
     176}
     177
     178
     179
    57180function getList()
    58181{
    59         global $jobs, $hearbeat;
     182        global $jobs, $hearbeat, $pstart, $pend;
     183        global $sortfield, $sortorder;
    60184
    61185        $job_count      = count( $jobs );
     
    69193        $jobresults     = array();
    70194
    71         foreach( $jobs as $jobid => $jobattrs )
     195        $cur_job        = 0;
     196
     197
     198        // sorteer jobs op sortorder en sortfield
     199
     200        //if( $pstart > 0 ) {
     201        //echo $pstart;
     202        //echo $pend; }
     203
     204
     205        $sorted_jobs            = sortJobs( $jobs, $sortfield, $sortorder );
     206
     207        $result_count           = count( $sorted_jobs );
     208
     209        foreach( $sorted_jobs as $jobid => $jobattrs )
    72210        {
    73211                //if( $jobattrs['reported'] != $heartbeat )
     
    76214                //}
    77215
     216                if( ( $cur_job < $pstart ) || ( ($cur_job - $pstart) >= $pend ) )
     217                {
     218                        $cur_job = $cur_job + 1;
     219                        continue;
     220                }
     221
    78222                $jr['jid']              = strval( $jobid );
    79                 $jr['status']           = $jobattrs['status'];
    80                 $jr['owner']            = $jobattrs['owner'];
    81                 $jr['queue']            = $jobattrs['queue'];
    82                 $jr['name']             = $jobattrs['name'];
    83                 $jr['requested_time']   = makeTime( timeToEpoch( $jobattrs['requested_time'] ) );
     223                $jr['status']           = $jobs[$jobid]['status'];
     224                $jr['owner']            = $jobs[$jobid]['owner'];
     225                $jr['queue']            = $jobs[$jobid]['queue'];
     226                $jr['name']             = $jobs[$jobid]['name'];
     227                $jr['requested_time']   = makeTime( timeToEpoch( $jobs[$jobid]['requested_time'] ) );
    84228
    85229                if( $jr['status'] == 'R' )
    86230                {
    87                         $nodes          = count( $jobattrs[nodes] );
     231                        $nodes          = count( $jobs[$jobid][nodes] );
    88232                }
    89233                else
    90234                {
    91                         $nodes          = (int) $jobattrs[nodes];
    92                 }
    93 
    94                 $jr['ppn']              = strval( $jobattrs[ppn] ? $jobattrs[ppn] : 1 );
     235                        $nodes          = (int) $jobs[$jobid][nodes];
     236                }
     237
     238                $jr['ppn']              = strval( $jobs[$jobid][ppn] ? $jobs[$jobid][ppn] : 1 );
    95239                $jr['nodect']           = strval( $nodes );
    96240
    97241                if( $jr['status'] == 'R' )
    98242                {
    99                         $jr['nodes']    = implode( ",", $jobattrs['nodes'] );
     243                        $jr['nodes']    = implode( ",", $jobs[$jobid]['nodes'] );
    100244                }
    101245                else
     
    104248                }
    105249
    106                 $jr['queued_timestamp'] = makeDate( $jobattrs['queued_timestamp'] );
    107                 $jr['start_timestamp']  = ($jobattrs['start_timestamp'] ? makeDate( $jobattrs['start_timestamp'] ) : "");
     250                $jr['queued_timestamp'] = makeDate( $jobs[$jobid]['queued_timestamp'] );
     251                $jr['start_timestamp']  = ($jobs[$jobid]['start_timestamp'] ? makeDate( $jobs[$jobid]['start_timestamp'] ) : "");
    108252
    109253                if( $jr['status'] == 'R' )
    110254                {
    111                         $runningtime            = (int) $jobattrs['reported'] - (int) $jobattrs['start_timestamp'];
     255                        $runningtime            = (int) $jobs[$jobid]['reported'] - (int) $jobs[$jobid]['start_timestamp'];
    112256                        $jr['runningtime']      = makeTime( $runningtime );
    113257                }
     
    116260                        $jr['runningtime']      = "";
    117261                }
     262
     263                $cur_job                = $cur_job + 1;
    118264
    119265                $jobresults[]           = $jr;
    120266        }
    121267
    122 
    123         //$results      = array();
    124 
    125         //foreach( $jobresults as $resid => $jr )
    126         //{
    127         //      $jr_count       = 0;
    128         //      $job_record     = array();
    129 
    130         //      foreach( $jr as $atrname => $atrval )
    131         //      {
    132         //              $job_record[$jr_count]  = $atrval;
    133         //              $job_record[$atrname]   = $atrval;
    134 
    135         //              $jr_count               = $jr_count + 1;
    136         //      }
    137 
    138         //      $results[]      = $job_record;
    139         //}
    140 
    141268        $jsonresults    = JEncode( $jobresults );
    142269
    143         echo '{"total":"'. count( $jobresults) .'","results":'. $jsonresults .'}';
     270        echo '{"total":"'. $result_count .'","results":'. $jsonresults .'}';
    144271
    145272        return 0;
  • trunk/web2/addons/job_monarch/js/jobgrid.js

    r536 r537  
    3939        {name: 'runningtime', type: 'string', mapping: 'runningtime'}
    4040      ]),
    41       sortInfo:{field: 'jid', direction: "ASC"}
     41      sortInfo: {field: 'jid', direction: "ASC"},
     42      remoteSort: true
    4243    });
    4344   
     
    143144      enableColLock:false,
    144145      clicksToEdit:1,
    145       selModel: new Ext.grid.RowSelectionModel({singleSelect:false})
     146      selModel: new Ext.grid.RowSelectionModel({singleSelect:false}),
     147      bbar: new Ext.PagingToolbar({
     148                pageSize: 30,
     149                store: JobsDataStore,
     150                displayInfo: true
     151            })
    146152    });
    147153
     
    157163    });
    158164}
    159   //JobProxy.on('beforeload', function(p, params) {
    160   //      params.c = "GINA Cluster";
    161   //  });
    162   //debug(); 
    163   //JobsDataStore.load();
    164   //JobListingWindow.show();
  • trunk/web2/addons/job_monarch/templates/header.tpl

    r536 r537  
    1919        params.c = "{cluster}";
    2020    });
    21   JobsDataStore.load();
     21  JobsDataStore.load( {params: {start: 0, limit: 30}} );
    2222  JobListingWindow.show();
    2323  });
Note: See TracChangeset for help on using the changeset viewer.