Index: /trunk/web2/addons/job_monarch/jobstore.php
===================================================================
--- /trunk/web2/addons/job_monarch/jobstore.php	(revision 534)
+++ /trunk/web2/addons/job_monarch/jobstore.php	(revision 535)
@@ -52,7 +52,6 @@
 function getList() 
 {
-	global $jobs;
+	global $jobs, $hearbeat;
 
-	//print_r( $jobs );
 	$job_count	= count( $jobs );
 
@@ -67,8 +66,8 @@
 	foreach( $jobs as $jobid => $jobattrs )
 	{
-		if( $reported != $heartbeat )
-		{ // Old job: skip
-			continue;
-		}
+		//if( $jobattrs['reported'] != $heartbeat )
+		//{
+		//	continue;
+		//}
 
 		$jr['jid']		= strval( $jobid );
@@ -79,5 +78,5 @@
 		$jr['requested_time']	= makeTime( timeToEpoch( $jobattrs['requested_time'] ) );
 
-		if( $jobattrs[status] == 'R' )
+		if( $jr['status'] == 'R' )
 		{
 			$nodes 		= count( $jobattrs[nodes] );
@@ -88,19 +87,28 @@
 		}
 
-		//unset( $jr['nodes'] );
-		//unset( $jr['poll_interval'] );
-		//unset( $jr['reported'] );
+		$jr['ppn']		= strval( $jobattrs[ppn] ? $jobattrs[ppn] : 1 );
+		$jr['nodect']		= strval( $nodes );
 
-		$jr['ppn']		= strval( $jobattrs[ppn] ? $jobattrs[ppn] : 1 );
-		$jr['cpu']		= strval( $nodes * (int) $ppn );
-
-
-		if( $jobattrs[status] == 'R' )
+		if( $jr['status'] == 'R' )
 		{
 			$jr['nodes']	= implode( ",", $jobattrs['nodes'] );
+		}
+		else
+		{
+			$jr['nodes']	= "";
 		}
 
 		$jr['queued_timestamp']	= makeDate( $jobattrs['queued_timestamp'] );
 		$jr['start_timestamp']	= ($jobattrs['start_timestamp'] ? makeDate( $jobattrs['start_timestamp'] ) : "");
+
+		if( $jr['status'] == 'R' )
+		{
+			$runningtime		= (int) $jobattrs['reported'] - (int) $jobattrs['start_timestamp'];
+			$jr['runningtime']	= makeTime( $runningtime );
+		}
+		else
+		{
+			$jr['runningtime']	= "";
+		}
 
 		$jobresults[]		= $jr;
Index: /trunk/web2/addons/job_monarch/js/jobgrid.js
===================================================================
--- /trunk/web2/addons/job_monarch/js/jobgrid.js	(revision 534)
+++ /trunk/web2/addons/job_monarch/js/jobgrid.js	(revision 535)
@@ -3,4 +3,5 @@
 var JobListingEditorGrid;
 var JobListingWindow;
+var JobProxy;
 
 Ext.onReady(function(){
@@ -30,8 +31,9 @@
         //{name: 'requested_memory', type: 'string', mapping: 'requested_memory'},
         {name: 'ppn', type: 'int', mapping: 'ppn'},
-        {name: 'cpu', type: 'int', mapping: 'cpu'},
+        {name: 'nodect', type: 'int', mapping: 'nodect'},
         {name: 'nodes', type: 'string', mapping: 'nodes'},
         {name: 'queued_timestamp', type: 'string', mapping: 'queued_timestamp'},
-        {name: 'start_timestamp', type: 'string', mapping: 'start_timestamp'}
+        {name: 'start_timestamp', type: 'string', mapping: 'start_timestamp'},
+        {name: 'runningtime', type: 'string', mapping: 'runningtime'}
       ]),
       sortInfo:{field: 'jid', direction: "ASC"}
@@ -41,4 +43,5 @@
     [{
         header: '#',
+	tooltip: 'Job id',
         readOnly: true,
         dataIndex: 'jid',
@@ -47,4 +50,5 @@
       },{
         header: 'S',
+	tooltip: 'Job status',
         readOnly: true,
         dataIndex: 'status',
@@ -53,4 +57,5 @@
       },{
         header: 'User',
+	tooltip: 'Owner of job',
         readOnly: true,
         dataIndex: 'owner',
@@ -59,4 +64,5 @@
       },{
         header: 'Queue',
+	tooltip: 'In which queue does this job reside',
         readOnly: true,
         dataIndex: 'queue',
@@ -65,4 +71,5 @@
       },{
         header: 'Name',
+	tooltip: 'Name of job',
         readOnly: true,
         dataIndex: 'name',
@@ -71,4 +78,5 @@
       },{
         header: 'Requested Time',
+	tooltip: 'Amount of requested time (wallclock)',
         readOnly: true,
         dataIndex: 'requested_time',
@@ -77,4 +85,5 @@
       },{
         header: 'Requested Memory',
+	tooltip: 'Amount of requested memory',
         readOnly: true,
         dataIndex: 'requested_memory',
@@ -82,5 +91,6 @@
         hidden: true
       },{
-        header: 'PPN',
+        header: 'P',
+	tooltip: 'Number of processors per node (PPN)',
         readOnly: true,
         dataIndex: 'ppn',
@@ -88,7 +98,8 @@
         hidden: false
       },{
-        header: 'CPU',
+        header: 'N',
+	tooltip: 'Number of nodes (hosts)',
         readOnly: true,
-        dataIndex: 'ppn',
+        dataIndex: 'nodect',
         width: 25,
         hidden: false
@@ -101,4 +112,5 @@
       },{
         header: 'Queued',
+	tooltip: 'At what time did this job enter the queue',
         readOnly: true,
         dataIndex: 'queued_timestamp',
@@ -107,6 +119,14 @@
       },{
         header: 'Started',
+	tooltip: 'At what time did this job enter the running status',
         readOnly: true,
         dataIndex: 'start_timestamp',
+        width: 140,
+        hidden: false
+      },{
+        header: 'Runningtime',
+	tooltip: 'How long has this job been in the running status',
+        readOnly: true,
+        dataIndex: 'runningtime',
         width: 140,
         hidden: false
@@ -1173,6 +1193,6 @@
       title: 'Cluster Jobs Overview',
       closable:true,
-      width:700,
-      height:350,
+      width:900,
+      height:500,
       plain:true,
       layout: 'fit',
@@ -1181,6 +1201,6 @@
 
   //debug();  
+  //JobListingEditorGrid.store.url='jobstore.php?c=GINA Cluster';
   JobsDataStore.load();
-  //JobListingEditorGrid.render();
   JobListingWindow.show();
   
