title JBrowse"); $breadcrumb = array(); $breadcrumb[] = l('Home', ''); $breadcrumb[] = l('Administration', 'admin'); $breadcrumb[] = l('Tripal', 'admin/tripal'); $breadcrumb[] = l('Extensions', 'admin/tripal/extension'); $breadcrumb[] = l('Tripal JBrowse', 'admin/tripal/extension/tripal_jbrowse/management'); drupal_set_breadcrumb($breadcrumb); $content = []; $content['instance_table'] = [ '#type' => 'markup', '#markup' => theme( 'table', [ 'header' => ['Key', 'Value'], 'rows' => [ ['Instance Name', $instance->title], ['Sequence Assembly', $instance->analysis->name ?? 'Not provided'], ['Created At', date('m/d/Y', $instance->created_at)], [ 'Organism', "{$instance->organism->genus} {$instance->organism->species}", ], ['Created By', $instance->user->name], [ 'Launch', l( 'See ' . $instance->title . ' on JBrowse', $settings['link'], ['query' => tripal_jbrowse_mgmt_build_http_query($instance)] ), ], ], ] ), ]; // First get tracks added by this module. $tracks = tripal_jbrowse_mgmt_get_tracks($instance, ['is_deleted' => 0]); $content['tracks_title'] = [ '#type' => 'item', '#markup' => '

Tracks

', ]; $managed_tracks = []; $rows = []; if (!empty($tracks)) { foreach ($tracks as $track) { // Keep track of managed tracks so they are not duplicated later. $managed_tracks[] = $track->label; // Add the current tracks to the table. $rows[] = [ $track->label, $track->track_type, $track->file_type, $track->user->name, date('m/d/Y', $track->created_at), l('Manage Track', 'admin/tripal/extension/tripal_jbrowse/management/tracks/' . $track->id), l( 'Delete Track', 'admin/tripal/extension/tripal_jbrowse/management/tracks/' . $track->id . '/delete' ), ]; } } // Second grab all tracks from the JSON. $trackList = tripal_jbrowse_mgmt_get_json($instance); if (!empty($trackList) and isset($trackList['tracks'])) { foreach ($trackList['tracks'] as $track) { // Make sure we only get the readable component for the type. $path_type = explode('/', $track['type']); $type = end($path_type); // Make sure this is not a managed track. if (in_array($track['key'], $managed_tracks)) { continue; } // Now compile our row. $rows[] = [ $track['key'], $type, '', '', '', '', '', ]; } } // Finally, if there are tracks, show them in a table. if (!empty($rows)) { $content['tracks_table'] = [ '#type' => 'markup', '#markup' => theme( 'table', [ 'header' => [ 'Label', 'Track Type', 'File Type', 'Created By', 'Created At', 'Manage', 'Delete Track', ], 'rows' => $rows, ] ), ]; } // Otherwise, prompt people to add tracks! else { $content['no_tracks'] = [ '#type' => 'item', '#markup' => 'No tracks found for this instance. Please use the add tracks link above to add new tracks.', ]; } return $content; }