Browse Source

Fixed bug with views filters

Stephen Ficklin 7 years ago
parent
commit
28757e8cc2
20 changed files with 67 additions and 32 deletions
  1. 31 7
      tripal/includes/TripalFields/TripalField.inc
  2. 15 5
      tripal/tripal_views_query.inc
  3. 1 1
      tripal_chado/includes/TripalFields/data__protein_sequence/data__protein_sequence.inc
  4. 1 1
      tripal_chado/includes/TripalFields/data__sequence/data__sequence.inc
  5. 1 1
      tripal_chado/includes/TripalFields/data__sequence_checksum/data__sequence_checksum.inc
  6. 1 1
      tripal_chado/includes/TripalFields/data__sequence_coordinates/data__sequence_coordinates.inc
  7. 1 1
      tripal_chado/includes/TripalFields/data__sequence_length/data__sequence_length.inc
  8. 1 1
      tripal_chado/includes/TripalFields/go__gene_expression/go__gene_expression.inc
  9. 1 1
      tripal_chado/includes/TripalFields/local__source_data/local__source_data.inc
  10. 1 1
      tripal_chado/includes/TripalFields/obi__organism/obi__organism.inc
  11. 1 1
      tripal_chado/includes/TripalFields/ogi__location_on_map/ogi__location_on_map.inc
  12. 1 1
      tripal_chado/includes/TripalFields/sbo__database_cross_reference/sbo__database_cross_reference.inc
  13. 1 1
      tripal_chado/includes/TripalFields/sbo__phenotype/sbo__phenotype.inc
  14. 4 3
      tripal_chado/includes/TripalFields/sbo__relationship/sbo__relationship.inc
  15. 1 1
      tripal_chado/includes/TripalFields/schema__publication/schema__publication.inc
  16. 1 1
      tripal_chado/includes/TripalFields/sio__references/sio__references.inc
  17. 1 1
      tripal_chado/includes/TripalFields/so__cds/so__cds.inc
  18. 1 1
      tripal_chado/includes/TripalFields/so__genotype/so__genotype.inc
  19. 1 1
      tripal_chado/includes/TripalFields/so__transcript/so__transcript.inc
  20. 1 1
      tripal_chado/includes/TripalFields/taxrank__infraspecific_taxon/taxrank__infraspecific_taxon.inc

+ 31 - 7
tripal/includes/TripalFields/TripalField.inc

@@ -183,7 +183,7 @@ class TripalField {
     return $this->term;
   }
 
-  protected function getFieldTermID() {
+  public function getFieldTermID() {
     $class = get_called_class();
     return $this->instance['settings']['term_vocabulary'] . ':' . $this->instance['settings']['term_accession'];
   }
@@ -284,10 +284,20 @@ class TripalField {
     $elements = $this->elementInfo();
     $field_details = $elements[$field_term];
 
+    // Get any titles or help text that is overriden.
+    $title = ucfirst($this->instance['label']);
+    if (array_key_exists('label', $field_details)) {
+      $title = $field_details['label'];
+    }
+    $help = $this->instance['description'];
+    if (array_key_exists('help', $field_details)) {
+      $help = $field_details['help'];
+    }
+
     // Build the entry for the field.
     $data[$view_base_id][$field_name] = array(
-      'title' => $this->instance['label'],
-      'help' => $this->instance['description'],
+      'title' => $title,
+      'help' => $help,
       'field' => array(
         'handler' => 'tripal_views_handler_field',
         'click sortable' => TRUE,
@@ -317,7 +327,6 @@ class TripalField {
         $this->_addViewsDataElement($data, $view_base_id, $field_name, $element_name, $element_details);
       }
     }
-
     return $data;
   }
 
@@ -339,10 +348,20 @@ class TripalField {
     list($vocabulary, $accession) = explode(':', $element_name);
     $term = tripal_get_term_details($vocabulary, $accession);
 
+    // Get any titles or help text that is overriden.
+    $title = ucfirst($term['name']);
+    if (array_key_exists('label', $element_details)) {
+      $title = $element_details['label'];
+    }
+    $help = $term['definition'];
+    if (array_key_exists('help', $element_details)) {
+      $help = $element_details['help'];
+    }
+
     // Build the entry for the field.
     $data[$view_base_id][$field_name] = array(
-      'title' => ucfirst($term['name']),
-      'help' => $term['definition'],
+      'title' => $title,
+      'help' => $help,
       'field' => array(
         'handler' => 'tripal_views_handler_field_element',
       ),
@@ -464,6 +483,11 @@ class TripalField {
    *     'gte', 'lte'.  These opertaions are applicable to strings: 'eq', 'ne',
    *     'contains', and 'starts'.  These operations are applicable for numeric
    *     values: 'gt', 'lt', 'gte', 'lte'.
+   *   -label: The label (if applicable) to appear for the elmeent. The default
+   *     is to use the term's name.
+   *   -help: Help text (if applicable) to appear for the element. The default
+   *     is to use the term's definition.
+   *   -type: The data type: e.g. 'string' or 'numeric'. Default is 'string'.
    *   -sortable: TRUE if the element can be sorted.  FALSE if not.
    *   -elements:  If this field value is a simple scalar (i.e. string or
    *     number) then this key is not needed. But, if the 'value' of the
@@ -532,7 +556,7 @@ class TripalField {
    * @return
    *   An associative array of the value elements provided by this field.
    */
-  protected function elementInfo() {
+  public function elementInfo() {
     $field_term = $this->getFieldTermID();
     return array(
       $field_term => array(

+ 15 - 5
tripal/tripal_views_query.inc

@@ -111,13 +111,23 @@ class tripal_views_query extends views_plugin_query {
         if (preg_match('/^(.+?)\.(.*)$/', $field_name, $matches)) {
            $field_name = $matches[1];
            $element_name = $matches[2];
-           // Remove the double underscore from the $element_name and put
-           // back the colon
-           $element_name = preg_replace('/__/', ':', $element_name);
-          $this->query->fieldCondition($field_name, $element_name, $value, $operator);
+           if (tripal_load_include_field_class($field_name)) {
+             $field = field_info_field($field_name);
+             $instance = field_info_instance('TripalEntity', $field_name, $this->query->entityConditions['bundle']['value']);
+             $field_obj = new $field_name($field, $instance);
+             $element_name = $field_obj->getFieldTermID() . ',' . $element_name;
+             // Replace periods with commas.
+             $element_name = preg_replace('/\./', ',', $element_name);
+             $this->query->fieldCondition($field_name, $element_name, $value, $operator);
+           }
+           else {
+             throw new Exception("Unkown element id: '$element_name'.");
+           }
         }
         else {
-          $this->query->fieldCondition($field_name, $field_name, $value, $operator);
+          $instance = field_info_instance('TripalEntity', $field_name, $this->query->entityConditions['bundle']['value']);
+          $field_term = $instance['settings']['term_vocabulary'] . ':' . $instance['settings']['term_accession'];
+          $this->query->fieldCondition($field_name, $field_term, $value, $operator);
         }
       }
     }

+ 1 - 1
tripal_chado/includes/TripalFields/data__protein_sequence/data__protein_sequence.inc

@@ -47,7 +47,7 @@ class data__protein_sequence extends ChadoField {
   /**
    * @see TripalField::elementInfo()
    */
-  protected function elementInfo() {
+  public function elementInfo() {
     $field_term = $this->getFieldTermID();
     return array(
       $field_term => array(

+ 1 - 1
tripal_chado/includes/TripalFields/data__sequence/data__sequence.inc

@@ -47,7 +47,7 @@ class data__sequence extends ChadoField {
   /**
    * @see TripalField::elementInfo()
    */
-  protected function elementInfo() {
+  public function elementInfo() {
     $field_term = $this->getFieldTermID();
     return array(
       $field_term => array(

+ 1 - 1
tripal_chado/includes/TripalFields/data__sequence_checksum/data__sequence_checksum.inc

@@ -57,7 +57,7 @@ class data__sequence_checksum extends ChadoField {
   /**
    * @see TripalField::elementInfo()
    */
-  protected function elementInfo() {
+  public function elementInfo() {
     $field_term = $this->getFieldTermID();
     return array(
       $field_term => array(

+ 1 - 1
tripal_chado/includes/TripalFields/data__sequence_coordinates/data__sequence_coordinates.inc

@@ -58,7 +58,7 @@ class data__sequence_coordinates extends ChadoField {
   /**
    * @see TripalField::elementInfo()
    */
-  protected function elementInfo() {
+  public function elementInfo() {
     $field_term = $this->getFieldTermID();
     return array(
       $field_term => array(

+ 1 - 1
tripal_chado/includes/TripalFields/data__sequence_length/data__sequence_length.inc

@@ -58,7 +58,7 @@ class data__sequence_length extends ChadoField {
   /**
    * @see TripalField::elementInfo()
    */
-  protected function elementInfo() {
+  public function elementInfo() {
     $field_term = $this->getFieldTermID();
     return array(
       $field_term => array(

+ 1 - 1
tripal_chado/includes/TripalFields/go__gene_expression/go__gene_expression.inc

@@ -63,7 +63,7 @@ class go__gene_expression extends ChadoField {
   /**
    * @see TripalField::elementInfo()
    */
-  protected function elementInfo() {
+  public function elementInfo() {
     $field_term = $this->getFieldTermID();
     return array(
       $field_term => array(

+ 1 - 1
tripal_chado/includes/TripalFields/local__source_data/local__source_data.inc

@@ -58,7 +58,7 @@ class local__source_data extends ChadoField {
   /**
    * @see TripalField::elementInfo()
    */
-  protected function elementInfo() {
+  public function elementInfo() {
     $field_term = $this->getFieldTermID();
 
     $sourcename_term = tripal_get_chado_semweb_term('analysis', 'sourcename');

+ 1 - 1
tripal_chado/includes/TripalFields/obi__organism/obi__organism.inc

@@ -272,7 +272,7 @@ class obi__organism extends ChadoField {
     $alias = $this->field['field_name'];
     $operator = $condition['operator'];
 
-    dpm($condition);
+    //dpm($condition);
 
     $field_term_id = $this->getFieldTermID();
     $genus_term = $field_term_id . ',' . tripal_get_chado_semweb_term('organism', 'genus');

+ 1 - 1
tripal_chado/includes/TripalFields/ogi__location_on_map/ogi__location_on_map.inc

@@ -57,7 +57,7 @@ class ogi__location_on_map extends ChadoField {
   /**
    * @see TripalField::elementInfo()
    */
-  protected function elementInfo() {
+  public function elementInfo() {
     $field_term = $this->getFieldTermID();
 
     $name_term = tripal_get_chado_semweb_term('featuremap', 'name');

+ 1 - 1
tripal_chado/includes/TripalFields/sbo__database_cross_reference/sbo__database_cross_reference.inc

@@ -60,7 +60,7 @@ class sbo__database_cross_reference extends ChadoField {
   /**
    * @see TripalField::elementInfo()
    */
-  protected function elementInfo() {
+  public function elementInfo() {
 
     $dbname_term = tripal_get_chado_semweb_term('db', 'name');
     $accession_term = tripal_get_chado_semweb_term('dbxref', 'accession');

+ 1 - 1
tripal_chado/includes/TripalFields/sbo__phenotype/sbo__phenotype.inc

@@ -60,7 +60,7 @@ class sbo__phenotype extends ChadoField {
   /**
    * @see TripalField::elementInfo()
    */
-  protected function elementInfo() {
+  public function elementInfo() {
     $field_term = $this->getFieldTermID();
     return array(
       $field_term => array(

+ 4 - 3
tripal_chado/includes/TripalFields/sbo__relationship/sbo__relationship.inc

@@ -86,7 +86,7 @@ class sbo__relationship extends ChadoField {
         'elements' => array(
           'local:relationship_subject' => array(
             'searchable' => FALSE,
-            'name' => 'scientfic_name',
+            'name' => 'relationship_subject',
             'operations' => array('eq', 'ne', 'contains', 'starts'),
             'sortable' => FALSE,
             'elements' => array(
@@ -99,6 +99,7 @@ class sbo__relationship extends ChadoField {
               'schema:name' => array(
                 'searchable' => TRUE,
                 'name' => 'subject_name',
+                'label' => 'Relationship clause subject name',
                 'operations' => array('eq', 'ne', 'contains', 'starts'),
                 'sortable' => TRUE,
               ),
@@ -110,12 +111,12 @@ class sbo__relationship extends ChadoField {
           ),
           'local:relationship_type' => array(
             'searchable' => TRUE,
-            'name' => 'genus',
+            'name' => 'relationship_type',
             'operations' => array('eq', 'ne', 'contains', 'starts'),
             'sortable' => TRUE,
           ),
           'local:relationship_object' => array(
-            'searchable' => TRUE,
+            'searchable' => FALSE,
             'name' => 'species',
             'operations' => array('eq', 'ne', 'contains', 'starts'),
             'sortable' => TRUE,

+ 1 - 1
tripal_chado/includes/TripalFields/schema__publication/schema__publication.inc

@@ -59,7 +59,7 @@ class schema__publication extends ChadoField {
   /**
    * @see TripalField::elementInfo()
    */
-  protected function elementInfo() {
+  public function elementInfo() {
     $field_term = $this->getFieldTermID();
     return array(
       $field_term => array(

+ 1 - 1
tripal_chado/includes/TripalFields/sio__references/sio__references.inc

@@ -59,7 +59,7 @@ class sio__references extends ChadoField {
   /**
    * @see TripalField::elementInfo()
    */
-  protected function elementInfo() {
+  public function elementInfo() {
     $field_term = $this->getFieldTermID();
     return array(
       $field_term => array(

+ 1 - 1
tripal_chado/includes/TripalFields/so__cds/so__cds.inc

@@ -47,7 +47,7 @@ class so__cds extends ChadoField {
   /**
    * @see TripalField::elementInfo()
    */
-  protected function elementInfo() {
+  public function elementInfo() {
     $field_term = $this->getFieldTermID();
     return array(
       $field_term => array(

+ 1 - 1
tripal_chado/includes/TripalFields/so__genotype/so__genotype.inc

@@ -59,7 +59,7 @@ class so__genotype extends ChadoField {
   /**
    * @see TripalField::elementInfo()
    */
-  protected function elementInfo() {
+  public function elementInfo() {
     $field_term = $this->getFieldTermID();
     return array(
       $field_term => array(

+ 1 - 1
tripal_chado/includes/TripalFields/so__transcript/so__transcript.inc

@@ -57,7 +57,7 @@ class so__transcript extends ChadoField {
   /**
    * @see TripalField::elementInfo()
    */
-  protected function elementInfo() {
+  public function elementInfo() {
     $field_term = $this->getFieldTermID();
     return array(
       $field_term => array(

+ 1 - 1
tripal_chado/includes/TripalFields/taxrank__infraspecific_taxon/taxrank__infraspecific_taxon.inc

@@ -57,7 +57,7 @@ class taxrank__infraspecific_taxon extends ChadoField {
   /**
    * @see TripalField::elementInfo()
    */
-  protected function elementInfo() {
+  public function elementInfo() {
     $field_term = $this->getFieldTermID();
     return array(
       $field_term => array(