Browse Source

Bulk Loader: Added Views integration for the tripal_bulk_loader* tables for purposes of administrative listing views

Lacey Sanderson 11 years ago
parent
commit
695324671d

+ 15 - 0
tripal_bulk_loader/tripal_bulk_loader.module

@@ -214,6 +214,21 @@ function tblid_to_arg($arg, $map, $index) {
   }
 }
 
+/**
+ * Implements hook_views_api()
+ *
+ * Purpose: Essentially this hook tells drupal that there is views support for
+ *  for this module which then includes tripal_views.views.inc where all the
+ *  views integration code is
+ *
+ * @ingroup tripal_views
+ */
+function tripal_bulk_loader_views_api() {
+  return array(
+    'api' => 3.0,
+  );
+}
+
 /**
  * Implements hook_theme
  *

+ 352 - 0
tripal_bulk_loader/tripal_bulk_loader.views.inc

@@ -0,0 +1,352 @@
+<?php
+
+/**
+ * Generates a dynamic data array for Views
+ *
+ * Purpose: This function is a hook used by the Views module. It populates and
+ *   returns a data array that specifies for the Views module the base table,
+ *   the tables it joins with and handlers.  The data array is populated
+ *   using the data stored in the tripal_views tables.
+ *
+ * @return a data array formatted for the Views module
+ *
+ * D7 @todo: Add support for materialized views relationships using the new method
+ *
+ * @ingroup tripal_views
+ */
+function tripal_bulk_loader_views_data() {
+  $data = array();
+
+  // Tripal Bulk Loader *************************
+  $data['tripal_bulk_loader']['table']['group'] = t('Tripal Bulk Loading Jobs');
+  $data['tripal_bulk_loader']['table']['base'] = array(
+    'field' => 'nid',
+    'title' => t('Tripal Bulk Loading Jobs'),
+    'help' => t('Jobs created to load chado data using a Tripal Bulk Loader Template.'),
+  );
+
+  // This table references the {node} table. The declaration below creates an
+  // 'implicit' relationship to the node table, so that when 'node' is the base
+  // table, the fields are automatically available.
+  $data['tripal_bulk_loader']['table']['join'] = array(
+    'node' => array(
+      'left_field' => 'nid',
+      'field' => 'nid',
+    ),
+  );
+
+  $data['tripal_bulk_loader']['table']['join']['tripal_bulk_loader_template'] = array(
+      'left_field' => 'template_id',
+      'field' => 'template_id',
+  );
+
+  $data['tripal_bulk_loader']['table']['join']['tripal_bulk_loader_constants'] = array(
+      'left_field' => 'nid',
+      'field' => 'nid',
+  );
+
+ // Node ID table field.
+ $data['tripal_bulk_loader']['nid'] = array(
+    'title' => t('Tripal Bulk Loading Jobs'),
+    'help' => t('Tripal Bulk Loading Jobs.'),
+
+    // Define a relationship to the {node} table, so tripal_bulk_loader views can
+    // add a relationship to nodes. If you want to define a relationship the
+    // other direction, use hook_views_data_alter(), or use the 'implicit' join
+    // method described above.
+    'relationship' => array(
+      'base' => 'node',
+      'base field' => 'nid',
+      'handler' => 'views_handler_relationship',
+      'label' => t('Bulk Loading Job => Node'),
+      'title' => t('Bulk Loading Job => Node'),
+      'help' => t('Link Tripal Bulk loading jobs to their nodes.'),
+    ),
+  );
+
+  $data['tripal_bulk_loader']['loader_name'] = array(
+    'title' => t('Name'),
+    'help' => t('The name of the loading job.'),
+    'field' => array(
+      'handler' => 'views_handler_field',
+      'click sortable' => TRUE, // This is use by the table display plugin.
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_string',
+    ),
+    'argument' => array(
+      'handler' => 'views_handler_argument_string',
+    ),
+  );
+
+  $data['tripal_bulk_loader']['template_id'] = array(
+    'title' => t('Template ID'),
+    'help' => t('The template to be used for this bulk loading job.'),
+    'field' => array(
+      'handler' => 'views_handler_field_numeric',
+      'click sortable' => TRUE,
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_numeric',
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+  );
+
+  $data['tripal_bulk_loader']['file'] = array(
+    'title' => t('File'),
+    'help' => t('The path to the file to be loaded.'),
+    'field' => array(
+      'handler' => 'views_handler_field',
+      'click sortable' => TRUE, // This is use by the table display plugin.
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_string',
+    ),
+    'argument' => array(
+      'handler' => 'views_handler_argument_string',
+    ),
+  );
+
+  $data['tripal_bulk_loader']['job_id'] = array(
+    'title' => t('Tripal Job ID'),
+    'help' => t('The Tripal job ID corresponding to this Tripal Bulk Loading job.'),
+    'field' => array(
+      'handler' => 'views_handler_field_numeric',
+      'click sortable' => TRUE,
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_numeric',
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+  );
+
+  $data['tripal_bulk_loader']['job_status'] = array(
+    'title' => t('Job Status'),
+    'help' => t('A description of the status of the loading job.'),
+    'field' => array(
+      'handler' => 'views_handler_field',
+      'click sortable' => TRUE, // This is use by the table display plugin.
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_string',
+    ),
+    'argument' => array(
+      'handler' => 'views_handler_argument_string',
+    ),
+  );
+
+ $data['tripal_bulk_loader']['file_has_header'] = array(
+    'title' => t('File has a Header'),
+    'help' => t('Whether the file has a single header line or not.'),
+    'field' => array(
+      'handler' => 'views_handler_field_boolean',
+      'click sortable' => TRUE,
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_boolean_operator',
+      'type' => 'yes-no',
+      'use equal' => TRUE,
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+  );
+
+  $data['tripal_bulk_loader']['keep_track_inserted'] = array(
+    'title' => t('Tracking Inserted IDs'),
+    'help' => t('Whether the loader is keeping track of inserted IDs to allow reverse of loading.'),
+    'field' => array(
+      'handler' => 'views_handler_field_boolean',
+      'click sortable' => TRUE,
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_boolean_operator',
+      'type' => 'yes-no',
+      'use equal' => TRUE,
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+  );
+
+  // Tripal Bulk Loader Template ****************
+  $data['tripal_bulk_loader_template']['table']['group'] = t('Tripal Bulk Loader Templates');
+  $data['tripal_bulk_loader_template']['table']['base'] = array(
+    'field' => 'template_id',
+    'title' => t('Tripal Bulk Loader Templates'),
+    'help' => t('Tripal Bulk Loader Templates used to describe where to load data into chado.'),
+  );
+
+  $data['tripal_bulk_loader_template']['table']['join']['tripal_bulk_loader'] = array(
+      'left_field' => 'template_id',
+      'field' => 'template_id',
+  );
+
+  $data['tripal_bulk_loader_template']['template_id'] = array(
+    'title' => t('Template ID'),
+    'help' => t('The unique identifier for tripal bulk loader templates.'),
+    'field' => array(
+      'handler' => 'views_handler_field_numeric',
+      'click sortable' => TRUE,
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_numeric',
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+    'relationship' => array(
+      'base' => 'tripal_bulk_loader',
+      'base field' => 'template_id',
+      'handler' => 'views_handler_relationship',
+      'label' => t('Templates => TBL Jobs'),
+      'title' => t('Templates => TBL Jobs'),
+      'help' => t('Links each template to the jobs using it.'),
+    ),
+  );
+
+  $data['tripal_bulk_loader_template']['name'] = array(
+    'title' => t('Name'),
+    'help' => t('The human-readable name of the template.'),
+    'field' => array(
+      'handler' => 'views_handler_field',
+      'click sortable' => TRUE,
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_string',
+    ),
+    'argument' => array(
+      'handler' => 'views_handler_argument_string',
+    ),
+  );
+
+  // Tripal Bulk Loader Constants ***************
+  $data['tripal_bulk_loader_constants']['table']['group'] = t('Tripal Bulk Loader Constants');
+  $data['tripal_bulk_loader_constants']['table'] = array(
+    'field' => 'constant_id',
+    'title' => t('Tripal Bulk Loading Job Constants'),
+    'help' => t('Constants described for a particular Tripal Bulk Loading Job.'),
+  );
+
+  $data['tripal_bulk_loader_constants']['table']['join']['tripal_bulk_loader'] = array(
+      'left_field' => 'nid',
+      'field' => 'nid',
+  );
+
+  $data['tripal_bulk_loader_constants']['group_id'] = array(
+    'title' => t('Group ID'),
+    'help' => t('Constants are grouped together allowing for multiple values for the same field.'),
+    'field' => array(
+      'handler' => 'views_handler_field_numeric',
+      'click sortable' => TRUE,
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_numeric',
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+  );
+
+  $data['tripal_bulk_loader_constants']['chado_table'] = array(
+    'title' => t('Chado Table'),
+    'help' => t('The table this constant applies to.'),
+    'field' => array(
+      'handler' => 'views_handler_field',
+      'click sortable' => TRUE, // This is use by the table display plugin.
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_string',
+    ),
+    'argument' => array(
+      'handler' => 'views_handler_argument_string',
+    ),
+  );
+
+  $data['tripal_bulk_loader_constants']['chado_field'] = array(
+    'title' => t('Chado Field'),
+    'help' => t('The field in chado this constant applies to.'),
+    'field' => array(
+      'handler' => 'views_handler_field',
+      'click sortable' => TRUE, // This is use by the table display plugin.
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_string',
+    ),
+    'argument' => array(
+      'handler' => 'views_handler_argument_string',
+    ),
+  );
+
+  $data['tripal_bulk_loader_constants']['record_id'] = array(
+    'title' => t('Record ID'),
+    'help' => t('Unique identifier of a record within the template.'),
+    'field' => array(
+      'handler' => 'views_handler_field_numeric',
+      'click sortable' => TRUE,
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_numeric',
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+  );
+
+  $data['tripal_bulk_loader_constants']['field_id'] = array(
+    'title' => t('Field Index'),
+    'help' => t('Unique identifier of a field within a template record.'),
+    'field' => array(
+      'handler' => 'views_handler_field_numeric',
+      'click sortable' => TRUE,
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_numeric',
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+  );
+
+  $data['tripal_bulk_loader_constants']['value'] = array(
+    'title' => t('Value'),
+    'help' => t('The value of the constant.'),
+    'field' => array(
+      'handler' => 'views_handler_field',
+      'click sortable' => TRUE, // This is use by the table display plugin.
+    ),
+    'sort' => array(
+      'handler' => 'views_handler_sort',
+    ),
+    'filter' => array(
+      'handler' => 'views_handler_filter_string',
+    ),
+    'argument' => array(
+      'handler' => 'views_handler_argument_string',
+    ),
+  );
+
+  return $data;
+}