Browse Source

Views integration now supports chado t/f booleans and uses the boolean field handler as a default for chado tables.

Lacey Sanderson 12 years ago
parent
commit
d811fb8c2e

+ 7 - 0
tripal_views/tripal_views.api.inc

@@ -434,6 +434,13 @@ function tripal_views_get_integration_array_for_chado_table($table_name, $base_t
           'sort' => array('name' => 'chado_views_handler_sort'),
         );
       }
+      elseif (preg_match('/^boolean/', $field_schema['type'])) {
+        $defn_array['fields'][$field_name]['handlers'] = array(
+          'field' => array('name' => 'chado_views_handler_field_boolean'),
+          'filter' => array('name' => 'chado_views_handler_filter_string'),
+          'sort' => array('name' => 'chado_views_handler_sort'),
+        );
+      }
       else {
         $defn_array['fields'][$field_name]['handlers'] = array(
           'field' => array('name' => 'chado_views_handler_field'),

+ 0 - 3
tripal_views/tripal_views.views.inc

@@ -93,9 +93,6 @@ function tripal_views_views_handlers() {
       'views_handler_field_node_optional' => array(
         'parent' => 'views_handler_field_node',
       ),
-      'views_handler_field_chado_tf_boolean' => array(
-        'parent' => 'views_handler_field_boolean',
-      ),
       'views_handler_field_chado_count' => array(
         'parent' => 'views_handler_field',
       ),

+ 13 - 0
tripal_views/views/handlers/chado_views_handler_field_boolean.inc

@@ -85,6 +85,19 @@ class chado_views_handler_field_boolean extends views_handler_field_boolean {
    *   The values retrieved from the database.
    */
   function render($values) {
+
+    // check to see if this is a t/f boolean field or a 1/0 boolean field
+    // parent render expects 1/0 so need to translate to that form before rendering
+    if (!is_array($values->{$this->field_alias})) {
+      if (!preg_match('/^[01]$/',$values->{$this->field_alias})) {
+        if (preg_match('/^[tT]/',$values->{$this->field_alias})) {
+          $values->{$this->field_alias} = 1;
+        }  elseif (preg_match('/^[fF]/',$values->{$this->field_alias})) {
+          $values->{$this->field_alias} = 0;
+        }
+      }
+    }
+
     return chado_wrapper_render_items($this, $values);
   }