public function sio__annotation_formatter::view

3.x sio__annotation_formatter.inc public sio__annotation_formatter::view(&$element, $entity_type, $entity, $langcode, $items, $display)

Overrides TripalFieldFormatter::view

See also

TripalFieldFormatter::view()

File

tripal_chado/includes/TripalFields/sio__annotation/sio__annotation_formatter.inc, line 14

Class

sio__annotation_formatter

Code

public function view(&$element, $entity_type, $entity, $langcode, $items, $display) {
  $headers = array('Term', 'Definition');
  $rows = array();

  $field_table = $this->instance['settings']['chado_table'];
  $schema = chado_get_schema($field_table);

  $vocabulary_term = chado_get_semweb_term('cvterm', 'cv_id');
  $accession_term = chado_get_semweb_term('dbxref', 'accession');
  $definition_term = chado_get_semweb_term('cvterm', 'definition');
  if (array_key_exists('is_not', $schema['fields'])) {
    $negation_term = chado_get_semweb_term($field_table, 'is_not');
  }

  $chado_table = $this->instance['settings']['chado_table'];
  foreach ($items as $delta => $item) {

    if (!empty($item['chado-' . $chado_table . '__cvterm_id'])) {
      $cvterm = chado_generate_var('cvterm', array('cvterm_id' => $item['chado-' . $chado_table . '__cvterm_id']));
      $dbxref = $cvterm->dbxref_id;

      // Build the accession.
      $accession = $dbxref->db_id->name . ':' . $dbxref->accession;
      if ($dbxref->db_id->urlprefix) {
        $accession = l($accession, chado_get_dbxref_url($dbxref), array('attributes' => array('target' => '_blank')));
      }

      $row = array(
        $accession,
        $item['value'][$definition_term],
      );

      if (array_key_exists('is_not', $schema['fields'])) {
        if ($negation_term == FALSE) {
          $row[1] = 'NOT ' . $row[1];
        }
      }

      $rows[] = $row;
    }
  }

  // Theme the results in a talbe.
  $caption = 'This record is associated with the following annotations.';
  $table = array(
    'header' => $headers,
    'rows' => $rows,
    'attributes' => array(
      'id' => "$chado_table-table-terms",
      'class' => 'tripal-data-table'
    ),
    'caption' => $caption,
    'sticky' => FALSE,
    'colgroups' => array(),
    'empty' => 'There are no annotations of this type',
  );

  if (count($items) > 0) {
    $element[0] = array(
      '#type' => 'markup',
      '#markup' => theme_table($table),
    );
  }
}