Browse Source

Added field name/description to views integration UI and array

Lacey Sanderson 13 years ago
parent
commit
34a89886e2

+ 18 - 7
base/tripal_views/tripal_views.views.inc

@@ -431,7 +431,18 @@ function tripal_views_views_data(){
             preg_match("/^(.*?)\ (.*?)$/",$column,$matches);
             $column_name = $matches[1];
             $column_type = $matches[2];
-            $base_fields[] = $column_name;
+            $base_fields[$column_name] = array(
+              'column_name' => $column_name,
+              'type' => $column_type,
+            );
+         }
+         
+         // get the field name and descriptions
+         $sql = "SELECT * FROM {tripal_views_field} WHERE setup_id=%d";
+         $query = db_query($sql, $setup_id);
+         while ($field = db_fetch_object($query)) {
+           $base_fields[$field->column_name]['name'] = $field->name;
+           $base_fields[$field->column_name]['help'] = $field->description;
          }
       }
       else {
@@ -453,10 +464,10 @@ function tripal_views_views_data(){
       );
 
       // first add the fields
-      foreach ($base_fields as $base_field){
-        $data[$base_table][$base_field] = array(
-           'title' => $base_field,
-           'help' => t("The $base_field from the $base_table table (added by Tripal Views Integration)"),
+      foreach ($base_fields as $column_name => $base_field){
+        $data[$base_table][$column_name] = array(
+           'title' => t($base_field['name']),
+           'help' => t($base_field['help']),
            'field' => array(
               'click sortable' => TRUE,
            ),
@@ -464,9 +475,9 @@ function tripal_views_views_data(){
 
         // now add the handlers
         $sql = "SELECT * FROM {tripal_views_handlers} WHERE setup_id = %d AND column_name = '%s'";
-        $handlers = db_query($sql,$setup_id,$base_field);
+        $handlers = db_query($sql,$setup_id,$column_name);
         while($handler = db_fetch_object($handlers)){
-           $data[$base_table][$base_field][$handler->handler_type]['handler'] = $handler->handler_name;
+           $data[$base_table][$column_name][$handler->handler_type]['handler'] = $handler->handler_name;
         };
     }
 

+ 60 - 14
base/tripal_views/tripal_views_integration.inc

@@ -119,6 +119,15 @@ function tripal_views_integration_form(&$form_state, $setup_id = NULL){
       $form_state['storage']['mview_id'] = $mview_id;
       $form_state['storage']['table_name'] = $table_name;
 
+      // get the default field name/description
+      $sql = "SELECT * FROM {tripal_views_field} WHERE setup_id=%d";
+      $query = db_query($sql,$setup_id);
+      $default_fields = array();
+      while ($field = db_fetch_object($query)) {
+        $default_fields[$field->column_name]['name'] = $field->name;
+        $default_fields[$field->column_name]['description'] = $field->description;
+      }
+      
       // get the default join settings and handlers
       $sql = "SELECT * FROM {tripal_views_join} WHERE setup_id = %d";
       $query = db_query($sql,$setup_id);
@@ -295,18 +304,12 @@ function tripal_views_integration_form(&$form_state, $setup_id = NULL){
 
     // get list of all handlers
     $all_handlers = tripal_views_integration_discover_handlers();
-    $handlers_fields = array();
-    $handlers_filters = array();
-    $handlers_sort = array();
-    $handlers_arguments = array();
-    $handlers_join = array();
-    $handlers_rel = array();
-    $handlers_fields[0] = "Select a field handler"; 
-    $handlers_filters[0] = "Select a filter handler";
-    $handlers_sort[0] = "Select a sort handler";
-    $handlers_argument[0] = "Select an argument handler";
-    $handlers_join[0] = "Select a join handler";
-    $handlers_rel[0] = "Select a relationship handler";
+    $handlers_fields = array(0 => "Select a field handler"); 
+    $handlers_filters = array(0 => "Select a filter handler");
+    $handlers_sort = array(0 => "Select a sort handler");
+    $handlers_argument = array(0 => "Select an argument handler");
+    $handlers_join = array(0 => "Select a join handler");
+    $handlers_rel = array(0 => "Select a relationship handler");
     foreach($all_handlers as $handler){
        if(preg_match("/views_handler_field/",$handler)){
           $handlers_fields[$handler] = $handler;
@@ -358,7 +361,38 @@ function tripal_views_integration_form(&$form_state, $setup_id = NULL){
                     "<div class=\"column-form-fields\"><div class=\"column-one\">",
       );
       $data['field_types'][$column_name] = $column_type;
-
+  
+      // set the default values for the human-readable name and description
+      $default_name = '';
+      $default_descrip = '';
+      if (isset($setup_id) && !isset($form_state['storage']["fields_readable_name_$table_id-$i"])){
+        $default_name = $default_fields[$column_name]['name'];
+        $default_descrip = $default_fields[$column_name]['description'];
+      } else {
+        $default_name = $form_state['storage']["fields_readable_name_$table_id-$i"];
+        $default_descrip = $form_state['storage']["fields_description_$table_id-$i"];
+      }
+      
+      $form['view_setup_table']["fields_readable_name_$table_id-$i"] = array(
+        '#type' => 'textfield',
+        '#title' => 'Human-Readable Name',
+        '#description' => 'This is the name of the field in the Views UI',
+        '#required' => TRUE,
+        //'#suffix' => '</div><div class="column-two">',
+        '#default_value' => $default_name,
+      );
+      
+      $form['view_setup_table']["fields_description_$table_id-$i"] = array(
+        '#type' => 'textarea',
+        '#title' => 'Short Description',
+        '#description' => 'This is the field help in the Views UI',
+        '#required' => TRUE,
+        '#cols' => 42,
+        '#rows' => 3,
+        '#suffix' => '</div><div class="column-two">',
+        '#default_value' => $default_descrip,
+      );
+      
       // set the default values for the join table and columns
       $default_join_table = 0;
       $default_join_field = 0;
@@ -580,11 +614,12 @@ function tripal_views_integration_form_submit($form, &$form_state){
      $sql = "SELECT * FROM {tripal_mviews} WHERE mview_id = $mview_id";
      $mview = db_fetch_object(db_query($sql));
      $table_name = $mview->mv_table;
+     $table_id = $mview_id;
      $type = 'mview';
    } else {
      $type = 'chado';
+     $table_id = $table_name;
    }
-   
 
    // If this is for a materialized view then we want to add/update that record
    $tripal_views_record = array();
@@ -632,6 +667,7 @@ function tripal_views_integration_form_submit($form, &$form_state){
    
    // if this is an update then clean out the existing joins and handlers so we can add new ones
    if($setup_id){  
+      db_query("DELETE FROM {tripal_views_field} WHERE setup_id = %d",$setup_id);
       db_query("DELETE FROM {tripal_views_join} WHERE setup_id = %d",$setup_id);
       db_query("DELETE FROM {tripal_views_handlers} WHERE setup_id = %d",$setup_id);
    }
@@ -641,6 +677,16 @@ function tripal_views_integration_form_submit($form, &$form_state){
    $i = 1;
    foreach ($form_state['values']['field_types'] as $key => $value){
 
+      // add the field definition
+      $view_field_record = array(
+        'setup_id' => $tripal_views_record['setup_id'],
+        'column_name' => $key, 
+        'name' => $form_state['values']["fields_readable_name_$table_id-$i"], 
+        'description' => $form_state['values']["fields_description_$table_id-$i"], 
+        'type' => $value,
+      );
+      drupal_write_record('tripal_views_field', $view_field_record);
+      
       // first add the join if it exists
       $left_table = $form_state['values']["fields_join_$table_id-$i"];
       $left_column = $form_state['values']["fields_join_column_$table_id-$i"];