ercore-8.x-1.20/modules/ercore_core/src/Form/ERCoreTableB.php
modules/ercore_core/src/Form/ERCoreTableB.php
<?php namespace Drupal\ercore_core\Form; /** * @file * Contains Drupal\ercore\Form\ERCoreTableB. */ use Drupal\Core\Form\FormBase; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Link; use Drupal\Core\Url; use Drupal\ercore_core\ErcoreParticipantBuild; /** * Class ERCoreTableB. * * Defines ERCore Table B. * * @package Drupal\ercore\Form */ class ERCoreTableB extends FormBase { /** * {@inheritdoc} */ public function getFormId() { return 'ERCoreTableB'; } /** * {@inheritdoc} */ public function buildForm(array $form, FormStateInterface $form_state) { $url = Url::fromRoute('ercore_core.participants_export'); $link = Link::fromTextAndUrl('Download NSF Table B.', $url); $data = $this->formatResults(); $form['#attached']['library'][] = 'ercore_core/ercore-core-exports.library'; $form['date_filter'] = \Drupal::formBuilder()->getForm('Drupal\ercore_core\Form\ERCoreDateFilter'); $form['data_table'] = [ '#type' => 'fieldset', '#title' => t('Table B Results'), '#open' => TRUE, ]; $form['data_table']['description'] = [ '#markup' => $data, ]; $form['export_link'] = [ '#markup' => '<p class="epscor-download">' . $link->toString() . '</p>', ]; return $form; } /** * {@inheritdoc} */ public function submitForm(array &$form, FormStateInterface $form_state) { // We don't use this, but the interface requires us to implement it. } /** * Format Results. */ public function formatResults() { $data = ErcoreParticipantBuild::getData(); $results = ''; foreach ($data as $institution) { $results .= '<table class="ercore-data-table"><caption>' . $institution['name'] . '</caption>'; $results .= '<thead><tr><th>Senior Project Role</th><th>Total Individuals</th><th>Male</th><th>Female</th><th>Black or African American</th><th>Hispanic</th><th>Other Ethnicity</th><th>Disabilities</th><th>New Hires*</th></tr></thead><tbody>'; foreach ($institution['data'] as $row) { $results .= '<tr><th>' . $row->name . '</th>'; $results .= '<td>' . $row->total . '</td>'; $results .= '<td>' . $row->male . '</td>'; $results .= '<td>' . $row->female . '</td>'; $results .= '<td>' . $row->black . '</td>'; $results .= '<td>' . $row->hispanic . '</td>'; $results .= '<td>' . $row->other . '</td>'; $results .= '<td>' . $row->disabled . '</td>'; $roles = ErcoreParticipantBuild::ercoreNoNewValues(); if (!in_array($row->name, $roles)) { $results .= '<td>' . $row->new . '</td></tr>'; } else { $results .= '<td class="grayed">n/a</td></tr>'; } if (!next($institution['data'])) { if ($institution['name'] === 'Totals') { $results .= '<tr><th>Advisory Board(s)**</th><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>'; } $results .= '</tbody></table>'; } } } return $results; } }