; also addd if not around nid field * * BASE TABLE: analysis * @code * create table analysis ( * analysis_id serial not null, * primary key (analysis_id), * name varchar(255), * description text, * program varchar(255) not null, * programversion varchar(255) not null, * algorithm varchar(255), * sourcename varchar(255), * sourceversion varchar(255), * sourceuri text, * timeexecuted timestamp not null default current_timestamp, * constraint analysis_c1 unique (program,programversion,sourcename) * ); * @endcode * * @ingroup tripal_analysis_views */ function retrieve_analysis_views_data() { global $db_url; $data = array(); // if the chado database is not local to the drupal database // then we need to set the database name. This should always // be 'chado'. if(is_array($db_url) and array_key_exists('chado',$db_url)){ $database = 'chado'; } // Basic table definition $data['analysis']['table']['group'] = 'Chado Analysis'; $data['analysis']['table']['base'] = array( 'field' => 'analysis_id', 'title' => t('Chado Analysis'), 'help' => t("An analysis is a particular type of a computational analysis; it may be a blast of one sequence against another, or an all by all blast, or a different kind of analysis altogether. It is a single unit of computation."), ); if($database){ $data['analysis']['table']['base']['database'] = $database; } // Define relationships between this table and others $data['analysis']['table']['join']['feature'] = array( 'linking' => array( 'table' => 'analysisfeature', 'left_field' => 'feature_id', 'field' => 'analysis_id', ), 'left_field' => 'feature_id', 'field' => 'analysis_id', 'handler' => 'views_handler_join_chado_through_linking' ); // Analysis properties? $data['analysisprop']['table'] = array( 'group' => 'Chado analysis Properties', 'field' => 'analysisprop_id', 'title' => t('Chado analysis Properties'), 'help' => ' ', ); $data['analysisprop']['table']['join']['analysis'] = array( 'left_field' => 'analysis_id', 'field' => 'analysis_id', 'handler' => 'views_handler_join_chado_aggregator' ); $data['analysisprop']['value'] = array( 'title' => t('Value'), 'help' => t(' '), 'field' => array( 'handler' => 'chado_views_handler_field', 'click sortable' => TRUE, ), 'sort' => array( 'handler' => 'chado_views_handler_sort', ), 'filter' => array( 'handler' => 'chado_views_handler_filter_string', ), 'argument' => array( 'handler' => 'views_handler_argument_string', ), ); $data['analysisprop']['all'] = array( 'title' => t('All'), 'help' => t('An aggregate field that contains all fields for a row.'), 'field' => array( 'handler' => 'chado_views_handler_field_aggregate', 'click sortable' => TRUE, ), 'sort' => array( 'handler' => 'chado_views_handler_sort', ), 'filter' => array( 'handler' => 'chado_views_handler_filter_string', ), 'argument' => array( 'handler' => 'views_handler_argument_string', ), ); // Table Field Definitions---------------------- // Field: analysis_id (primary key) $data['analysis']['analysis_id'] = array( 'title' => 'analysis ID', 'help' => 'The primary key of the analysis table.', 'field' => array( 'handler' => 'views_handler_field_numeric', 'click sortable' => TRUE, ), 'filter' => array( 'handler' => 'views_handler_filter_numeric', ), 'sort' => array( 'handler' => 'chado_views_handler_sort', ), ); // Calculated Field: Node ID // use custom field handler to query drupal for the node ID // this is only needed if chado is in a separate database from drupal if($database){ $data['analysis']['analysis_nid'] = array( 'title' => 'Node ID', 'help' => 'The node ID for the current analysis', 'field' => array( 'handler' => 'views_handler_field_computed_analysis_nid', ), ); } else { // Add relationship between chado_analysis and analysis $data['analysis']['analysis_nid'] = array( 'group' => 'Analysis', 'title' => 'Analysis Node', 'help' => 'Links Chado Analysis Fields/Data to the Nodes in the current View.', 'real field' => 'analysis_id', 'relationship' => array( 'handler' => 'views_handler_relationship', 'title' => t('Analysis => Chado'), 'label' => t('Analysis => Chado'), 'real field' => 'analysis_id', 'base' => 'chado_analysis', 'base field' => 'analysis_id' ), ); } // Field: name (varchar 255) $data['analysis']['name'] = array( 'title' => t('Name'), 'help' => t(''), 'field' => array( 'handler' => 'views_handler_field', 'click sortable' => TRUE, ), 'sort' => array( 'handler' => 'chado_views_handler_sort', ), 'filter' => array( 'handler' => 'views_handler_filter_chado_select_string', ), 'argument' => array( 'handler' => 'views_handler_argument_string', ), ); // if joined to the node table add a "Link to Node" option for the field if (!$database) { $data['analysis']['name']['field']['handler'] = 'views_handler_field_node_optional'; } // Field: description (text) $data['analysis']['description'] = array( 'title' => t('Description'), 'help' => t(''), 'field' => array( 'handler' => 'views_handler_field', 'click sortable' => TRUE, ), 'sort' => array( 'handler' => 'chado_views_handler_sort', ), 'filter' => array( 'handler' => 'chado_views_handler_filter_string', ), 'argument' => array( 'handler' => 'views_handler_argument_string', ), ); // Field: program (varchar 255) $data['analysis']['program'] = array( 'title' => t('Program'), 'help' => t('Program name, e.g. blastx, blastp, sim4, genscan.'), 'field' => array( 'handler' => 'views_handler_field', 'click sortable' => TRUE, ), 'sort' => array( 'handler' => 'chado_views_handler_sort', ), 'filter' => array( 'handler' => 'views_handler_filter_chado_select_string', ), 'argument' => array( 'handler' => 'views_handler_argument_string', ), ); // Field: program version (varchar 255) $data['analysis']['programversion'] = array( 'title' => t('Program Version'), 'help' => t('Version description, e.g. TBLASTX 2.0MP-WashU [09-Nov-2000].'), 'field' => array( 'handler' => 'views_handler_field', 'click sortable' => TRUE, ), 'sort' => array( 'handler' => 'chado_views_handler_sort', ), 'filter' => array( 'handler' => 'views_handler_filter_chado_select_string', ), 'argument' => array( 'handler' => 'views_handler_argument_string', ), ); // Field: algorithm (varchar 255) $data['analysis']['algorithm'] = array( 'title' => t('Algorithm'), 'help' => t('Algorithm name, e.g. blast.'), 'field' => array( 'handler' => 'views_handler_field', 'click sortable' => TRUE, ), 'sort' => array( 'handler' => 'chado_views_handler_sort', ), 'filter' => array( 'handler' => 'views_handler_filter_chado_select_string', ), 'argument' => array( 'handler' => 'views_handler_argument_string', ), ); $data['analysis']['sourcename'] = array( 'title' => t('Source Name'), 'help' => t('Source name, e.g. cDNA, SwissProt.'), 'field' => array( 'handler' => 'views_handler_field', 'click sortable' => TRUE, ), 'sort' => array( 'handler' => 'chado_views_handler_sort', ), 'filter' => array( 'handler' => 'chado_views_handler_filter_string', ), 'argument' => array( 'handler' => 'views_handler_argument_string', ), ); // Field: source version (varchar 255) $data['analysis']['sourceversion'] = array( 'title' => t('Source Version'), 'help' => t('The version of the source.'), 'field' => array( 'handler' => 'views_handler_field', 'click sortable' => TRUE, ), 'sort' => array( 'handler' => 'chado_views_handler_sort', ), 'filter' => array( 'handler' => 'chado_views_handler_filter_string', ), 'argument' => array( 'handler' => 'views_handler_argument_string', ), ); // Field: source URI/URL (text) $data['analysis']['sourceuri'] = array( 'title' => t('Source URL'), 'help' => t('This is an optional, permanent URL or URI for the source of the analysis.'), 'field' => array( 'handler' => 'views_handler_field', 'click sortable' => TRUE, ), 'sort' => array( 'handler' => 'chado_views_handler_sort', ), 'filter' => array( 'handler' => 'chado_views_handler_filter_string', ), 'argument' => array( 'handler' => 'views_handler_argument_string', ), ); // Field: time executed (datetime) $data['analysis']['timeexecuted'] = array( 'title' => 'Time Executed', 'help' => 'The date & time when this analysis was executed.', 'field' => array( 'handler' => 'views_handler_field_readable_date', 'click sortable' => TRUE, ), 'sort' => array( 'handler' => 'chado_views_handler_sort_date', ), ); return $data; }