Переглянути джерело

Added a filter to the jobs report page to filter by text in the job name

spficklin 12 роки тому
батько
коміт
475f61d4cc
1 змінених файлів з 30 додано та 7 видалено
  1. 30 7
      tripal_core/includes/jobs.php

+ 30 - 7
tripal_core/includes/jobs.php

@@ -15,9 +15,13 @@ function tripal_jobs_report_form($form, &$form_state = NULL) {
 
   // set the default values
   $default_status = $form_state['values']['job_status'];
+  $default_job_name = $form_state['values']['job_name'];
 
   if (!$default_status) {
-    $default_status = $_SESSION['tripal_job_status_filter'];
+    $default_status = $_SESSION['tripal_job_filter']['job_status'];    
+  }
+  if (!$default_job_name) {
+    $default_job_name = $_SESSION['tripal_job_filter']['job_name'];
   }
 
   $form['job_status'] = array(
@@ -33,6 +37,12 @@ function tripal_jobs_report_form($form, &$form_state = NULL) {
 	    'Error'     => 'Error',
 	  ),
   );
+  $form['job_name'] = array(
+    '#type'          => 'textfield',
+    '#title'         => t('Filter by Job Name'),
+    '#description'   => t('The jobs will be filtered if text provided is contained in the job name'),
+    '#default_value' => $default_job_name,        
+  );
 
   $form['submit'] = array(
     '#type'         => 'submit',
@@ -45,8 +55,12 @@ function tripal_jobs_report_form($form, &$form_state = NULL) {
  * @ingroup tripal_core
  */
 function tripal_jobs_report_form_submit($form, &$form_state = NULL) {
+  
   $job_status = $form_state['values']['job_status'];
-  $_SESSION['tripal_job_status_filter'] = $job_status;
+  $job_name = $form_state['values']['job_name'];
+  
+  $_SESSION['tripal_job_filter']['job_status'] = $job_status;
+  $_SESSION['tripal_job_filter']['job_name'] = $job_name;
 }
 /**
  * Returns the Tripal Job Report
@@ -62,7 +76,8 @@ function tripal_jobs_report() {
   // change the status of jobs that have errored out
   tripal_jobs_check_running();
 
-	$jobs_status_filter = $_SESSION['tripal_job_status_filter'];
+	$job_status = $_SESSION['tripal_job_filter']['job_status'];
+	$job_name = $_SESSION['tripal_job_filter']['job_name'];
 
   $sql = "
     SELECT
@@ -70,13 +85,21 @@ function tripal_jobs_report() {
       TJ.status as job_status, TJ,submit_date,TJ.start_time,
       TJ.end_time,TJ.priority,U.name as username
     FROM {tripal_jobs} TJ
-      INNER JOIN {users} U on TJ.uid = U.uid ";
-  if ($jobs_status_filter) {
-    $sql .= "WHERE TJ.status = '%s' ";
+      INNER JOIN {users} U on TJ.uid = U.uid 
+    WHERE 1=1 
+  ";
+  $args = array();
+  if ($job_status) {
+    $sql .= "AND TJ.status = '%s' ";
+    $args[] = $job_status;
+  }
+  if ($job_name) {
+    $sql .= "AND TJ.job_name like '%%%s%%'";
+    $args[] = $job_name;
   }
   $sql .= "ORDER BY job_id DESC";
 
-  $jobs = pager_query($sql, 25, 0, "SELECT count(*) FROM ($sql) as t1", $jobs_status_filter);
+  $jobs = pager_query($sql, 25, 0, "SELECT count(*) FROM ($sql) as t1", $args);
   $header = array(
     'Job ID',
     'User',