You are here

function views_plugin_style_pivot::options_form in Pivot Tables for Views 7

Options form.

Overrides views_plugin_style_table::options_form

File

./views_plugin_style_pivot.inc, line 30
Holds views_plugin_style_chart class which implements the chart plugin.

Class

views_plugin_style_pivot

Code

function options_form(&$form, &$form_state) {
  parent::options_form($form, $form_state);
  $columns = $this
    ->sanitize_columns($this->options['columns']);
  $form['#theme'] = 'views_ui_style_plugin_pivot';
  $column_keys = array_keys($columns);
  $default_pivot_col = empty($this->options['pivot_col']) ? array_pop($column_keys) : $this->options['pivot_col'];
  $default_pivot_row = empty($this->options['pivot_row']) ? array_shift($column_keys) : $this->options['pivot_row'];
  $aggregates = array(
    '0' => '-' . t('none') . '-',
    'sum' => t('sum of values'),
    'avg' => t('average of values'),
    'count' => t('number of values'),
    'min' => t('minimum value'),
    'max' => t('maximum value'),
  );
  foreach ($columns as $field => $column) {
    $safe = str_replace(array(
      '][',
      '_',
      ' ',
    ), '-', $field);

    // the $id of the column for dependency checking.
    $id = 'edit-style-options-columns-' . $safe;
    $radio_id = drupal_html_id('edit-pivot-row-' . $field);
    $form['info'][$field]['pivot_row'] = array(
      '#type' => 'radio',
      '#return_value' => $field,
      '#parents' => array(
        'style_options',
        'pivot_row',
      ),
      '#id' => $radio_id,
      '#attributes' => array(
        'id' => $radio_id,
      ),
      '#default_value' => $default_pivot_row,
      '#dependency' => array(
        $id => array(
          $field,
        ),
      ),
      '#required' => TRUE,
    );
    $form['info'][$field]['pivot_row_extra'] = array(
      '#type' => 'checkbox',
      '#default_value' => !empty($this->options['info'][$field]['pivot_row_extra']),
      '#dependency' => array(
        $id => array(
          $field,
        ),
      ),
    );
    $radio_id = drupal_html_id('edit-pivot-col-' . $field);
    $form['info'][$field]['pivot_col'] = array(
      '#type' => 'radio',
      '#return_value' => $field,
      '#parents' => array(
        'style_options',
        'pivot_col',
      ),
      '#id' => $radio_id,
      '#attributes' => array(
        'id' => $radio_id,
      ),
      '#default_value' => $default_pivot_col,
      '#dependency' => array(
        $id => array(
          $field,
        ),
      ),
      '#required' => TRUE,
    );
    $form['info'][$field]['pivot_row_aggregate'] = array(
      '#type' => 'select',
      '#default_value' => empty($this->options['info'][$field]['pivot_row_aggregate']) ? 0 : $this->options['info'][$field]['pivot_row_aggregate'],
      '#options' => $aggregates,
      '#dependency' => array(
        $id => array(
          $field,
        ),
      ),
    );
    $form['info'][$field]['pivot_row_aggregate_label'] = array(
      '#type' => 'textfield',
      '#size' => 15,
      '#default_value' => empty($this->options['info'][$field]['pivot_row_aggregate_label']) ? '' : $this->options['info'][$field]['pivot_row_aggregate_label'],
      '#dependency' => array(
        $id => array(
          $field,
        ),
      ),
      '#states' => array(
        'invisible' => array(
          ':input[name="style_options[info][' . $field . '][pivot_row_aggregate]"]' => array(
            'value' => '0',
          ),
        ),
      ),
      '#attributes' => array(
        'placeholder' => t('Label'),
      ),
    );
    $form['info'][$field]['pivot_col_aggregate'] = array(
      '#type' => 'select',
      '#default_value' => empty($this->options['info'][$field]['pivot_col_aggregate']) ? 0 : $this->options['info'][$field]['pivot_col_aggregate'],
      '#options' => $aggregates,
      '#dependency' => array(
        $id => array(
          $field,
        ),
      ),
    );
    $form['info'][$field]['pivot_col_aggregate_label'] = array(
      '#type' => 'textfield',
      '#size' => 15,
      '#default_value' => empty($this->options['info'][$field]['pivot_col_aggregate_label']) ? '' : $this->options['info'][$field]['pivot_col_aggregate_label'],
      '#dependency' => array(
        $id => array(
          $field,
        ),
      ),
      '#states' => array(
        'invisible' => array(
          ':input[name="style_options[info][' . $field . '][pivot_col_aggregate]"]' => array(
            'value' => '0',
          ),
        ),
      ),
      '#attributes' => array(
        'placeholder' => t('Label'),
      ),
    );
  }
  $form['pivot_mode_multi_values'] = array(
    '#type' => 'radios',
    '#title' => t('Arrange multiple values'),
    '#options' => array(
      VIEWS_PIVOT_MODE_MULTI_VALUE_HORIZONTAL => t('horizontally'),
      VIEWS_PIVOT_MODE_MULTI_VALUE_VERTICAL => t('vertically'),
    ),
    '#default_value' => $this->options['pivot_mode_multi_values'],
  );
}