function charts_settings_form in Charts 8
Same name and namespace in other branches
- 7.2 includes/charts.pages.inc \charts_settings_form()
Parameters
$form:
array $defaults:
array $field_options:
array $parents:
Return value
mixed
2 calls to charts_settings_form()
- ChartsPluginStyleChart::buildOptionsForm in src/
Plugin/ views/ style/ ChartsPluginStyleChart.php - Provide a form to edit options for this plugin.
- charts_default_settings_form in includes/
charts.pages.inc - Menu callback; Configure the site-wide defaults for charts.
File
- includes/
charts.pages.inc, line 218 - Menu callbacks for Charts module.
Code
function charts_settings_form($form, $defaults = array(), $field_options = array(), $parents = array()) {
// Ensure all defaults are set.
$options = array_merge(charts_default_settings(), $defaults);
$form['#attached']['library'][] = array(
'charts',
'charts.admin',
);
// Get a list of available chart libraries.
$charts_info = charts_info();
$library_options = array();
foreach ($charts_info as $library_name => $library_info) {
$library_options[$library_name] = $library_info['label'];
}
$form['library'] = array(
'#title' => t('Charting library'),
'#type' => 'select',
'#options' => $library_options,
'#default_value' => $options['library'],
'#required' => TRUE,
'#access' => count($library_options) > 1,
'#attributes' => array(
'class' => array(
'chart-library-select',
),
),
'#weight' => -15,
'#parents' => array_merge($parents, array(
'library',
)),
);
$chart_types = charts_type_info();
$type_options = array();
foreach ($chart_types as $chart_type => $chart_type_info) {
$type_options[$chart_type] = $chart_type_info['label'];
}
$form['type'] = array(
'#title' => t('Chart type'),
'#type' => 'radios',
'#default_value' => $options['type'],
'#options' => $type_options,
'#required' => TRUE,
'#weight' => -20,
'#attributes' => array(
'class' => array(
'chart-type-radios',
'container-inline',
),
),
'#parents' => array_merge($parents, array(
'type',
)),
);
// Set data attributes to identify special properties of different types.
foreach ($chart_types as $chart_type => $chart_type_info) {
if ($chart_type_info['axis_inverted']) {
$form['type'][$chart_type]['#attributes']['data-axis-inverted'] = TRUE;
}
if ($chart_type_info['axis'] === CHARTS_SINGLE_AXIS) {
$form['type'][$chart_type]['#attributes']['data-axis-single'] = TRUE;
}
}
if ($field_options) {
$first_field = key($field_options);
$form['#theme'] = 'charts_settings_fields';
$form['fields'] = array(
'#title' => t('Charts fields'),
'#type' => 'fieldset',
);
$form['fields']['label_field'] = array(
'#type' => 'radios',
'#title' => t('Label field'),
'#options' => $field_options + array(
'' => t('No label field'),
),
'#default_value' => isset($options['label_field']) ? $options['label_field'] : $first_field,
'#weight' => -10,
'#parents' => array_merge($parents, array(
'label_field',
)),
);
$form['fields']['table'] = array(
'#type' => 'table',
'#header' => array(
t('Field Name'),
t('Provides Data'),
t('Color'),
),
'#tabledrag' => TRUE,
);
$field_count = 0;
foreach ($field_options as $field_name => $field_label) {
$form['fields']['table'][$field_count]['label_label'] = array(
'#type' => 'label',
'#title' => $field_label,
'#column' => 'one',
);
$form['fields']['table'][$field_count]['data_fields'][$field_name] = array(
'#type' => 'checkbox',
'#title' => $field_name,
'#default_value' => $options['data_fields'][$field_name],
'#return_value' => $field_name,
'#weight' => -9,
'#states' => array(
'disabled' => array(
':input[name="style_options[label_field]"]' => array(
'value' => $field_name,
),
),
),
'#parents' => array_merge($parents, array(
'data_fields',
$field_name,
)),
'#column' => 'two',
);
$form['fields']['table'][$field_count]['field_colors'][$field_name] = array(
'#type' => 'textfield',
'#attributes' => array(
'TYPE' => 'color',
),
'#size' => 10,
'#maxlength' => 7,
'#theme_wrappers' => array(),
'#default_value' => !empty($options['field_colors'][$field_name]) ? $options['field_colors'][$field_name] : $options['colors'][$field_count],
'#parents' => array_merge($parents, array(
'field_colors',
$field_name,
)),
'#column' => 'three',
);
$field_count++;
}
}
$form['display'] = array(
'#title' => t('Display'),
'#type' => 'fieldset',
'#collapsible' => TRUE,
'#collapsed' => TRUE,
);
$form['display']['title'] = array(
'#title' => t('Chart title'),
'#type' => 'textfield',
'#default_value' => $options['title'],
'#parents' => array_merge($parents, array(
'title',
)),
);
$form['display']['title_position'] = array(
'#title' => t('Title position'),
'#type' => 'select',
'#options' => array(
'' => t('None'),
'out' => t('Outside'),
'in' => t('Inside'),
),
'#default_value' => $options['title_position'],
'#parents' => array_merge($parents, array(
'title_position',
)),
);
$form['display']['tooltips'] = array(
'#title' => t('Tooltips'),
'#type' => 'select',
'#options' => array(
'' => t('Disabled'),
'TRUE' => t('Enabled'),
),
'#description' => t('Show data details on mouse over? Note: unavailable for print or on mobile devices.'),
'#default_value' => $options['tooltips'],
'#parents' => array_merge($parents, array(
'tooltips',
)),
);
$form['display']['data_labels'] = array(
'#title' => t('Data labels'),
'#type' => 'select',
'#options' => array(
'' => t('Disabled'),
'TRUE' => t('Enabled'),
),
'#default_value' => $options['data_labels'],
'#description' => t('Show data details as labels on chart? Note: recommended for print or on mobile devices.'),
'#parents' => array_merge($parents, array(
'data_labels',
)),
);
$form['display']['legend_position'] = array(
'#title' => t('Legend position'),
'#type' => 'select',
'#options' => array(
'' => t('None'),
'top' => t('Top'),
'right' => t('Right'),
'bottom' => t('Bottom'),
'left' => t('Left'),
),
'#default_value' => $options['legend_position'],
'#parents' => array_merge($parents, array(
'legend_position',
)),
);
$form['display']['background'] = array(
'#title' => t('Background color'),
'#type' => 'textfield',
'#size' => 10,
'#maxlength' => 7,
'#attributes' => array(
'placeholder' => t('transparent'),
),
'#description' => t('Leave blank for a transparent background.'),
'#default_value' => $options['background'],
'#parents' => array_merge($parents, array(
'background',
)),
);
$form['display']['dimensions'] = array(
'#title' => t('Dimensions'),
'#theme_wrappers' => array(
'form_element',
),
'#description' => t('If dimensions are left empty, the chart will fill its containing element.'),
);
$form['display']['dimensions']['width'] = array(
'#type' => 'textfield',
'#attributes' => array(
'TYPE' => 'number',
'step' => 1,
'min' => 0,
'max' => 9999,
'placeholder' => t('auto'),
),
'#default_value' => $options['width'],
'#size' => 8,
'#suffix' => ' x ',
'#theme_wrappers' => array(),
'#parents' => array_merge($parents, array(
'width',
)),
);
$form['display']['dimensions']['height'] = array(
'#type' => 'textfield',
'#attributes' => array(
'TYPE' => 'number',
'step' => 1,
'min' => 0,
'max' => 9999,
'placeholder' => t('auto'),
),
'#default_value' => $options['height'],
'#size' => 8,
'#suffix' => ' px',
'#theme_wrappers' => array(),
'#parents' => array_merge($parents, array(
'height',
)),
);
$form['xaxis'] = array(
'#title' => t('Horizontal axis'),
'#type' => 'fieldset',
'#collapsible' => TRUE,
'#collapsed' => TRUE,
'#attributes' => array(
'class' => array(
'chart-xaxis',
),
),
);
$form['xaxis']['title'] = array(
'#title' => t('Custom title'),
'#type' => 'textfield',
'#default_value' => $options['xaxis_title'],
'#parents' => array_merge($parents, array(
'xaxis_title',
)),
);
$form['xaxis']['labels_rotation'] = array(
'#title' => t('Labels rotation'),
'#type' => 'select',
'#options' => array(
0 => t('0°'),
30 => t('30°'),
45 => t('45°'),
60 => t('60°'),
90 => t('90°'),
),
// This is only shown on non-inverted charts.
'#attributes' => array(
'class' => array(
'axis-inverted-hide',
),
),
'#default_value' => $options['xaxis_labels_rotation'],
'#parents' => array_merge($parents, array(
'xaxis_labels_rotation',
)),
);
$form['yaxis'] = array(
'#title' => t('Vertical axis'),
'#type' => 'fieldset',
'#collapsible' => TRUE,
'#collapsed' => TRUE,
'#attributes' => array(
'class' => array(
'chart-yaxis',
),
),
);
$form['yaxis']['title'] = array(
'#title' => t('Custom title'),
'#type' => 'textfield',
'#default_value' => $options['yaxis_title'],
'#parents' => array_merge($parents, array(
'yaxis_title',
)),
);
$form['yaxis']['minmax'] = array(
'#title' => t('Value range'),
'#theme_wrappers' => array(
'form_element',
),
);
$form['yaxis']['minmax']['min'] = array(
'#type' => 'textfield',
'#attributes' => array(
'TYPE' => 'number',
'max' => 999999,
'placeholder' => t('Minimum'),
),
'#default_value' => $options['yaxis_min'],
'#size' => 12,
'#parents' => array_merge($parents, array(
'yaxis_min',
)),
'#suffix' => ' ',
'#theme_wrappers' => array(),
);
$form['yaxis']['minmax']['max'] = array(
'#type' => 'textfield',
'#attributes' => array(
'TYPE' => 'number',
'max' => 999999,
'placeholder' => t('Maximum'),
),
'#default_value' => $options['yaxis_max'],
'#size' => 12,
'#parents' => array_merge($parents, array(
'yaxis_max',
)),
'#theme_wrappers' => array(),
);
$form['yaxis']['prefix'] = array(
'#title' => t('Value prefix'),
'#type' => 'textfield',
'#default_value' => $options['yaxis_prefix'],
'#size' => 12,
'#parents' => array_merge($parents, array(
'yaxis_prefix',
)),
);
$form['yaxis']['suffix'] = array(
'#title' => t('Value suffix'),
'#type' => 'textfield',
'#default_value' => $options['yaxis_suffix'],
'#size' => 12,
'#parents' => array_merge($parents, array(
'yaxis_suffix',
)),
);
$form['yaxis']['decimal_count'] = array(
'#title' => t('Decimal count'),
'#type' => 'textfield',
'#attributes' => array(
'TYPE' => 'number',
'step' => 1,
'min' => 0,
'max' => 20,
'placeholder' => t('auto'),
),
'#default_value' => $options['yaxis_decimal_count'],
'#size' => 5,
'#description' => t('Enforce a certain number of decimal-place digits in displayed values.'),
'#parents' => array_merge($parents, array(
'yaxis_decimal_count',
)),
);
$form['yaxis']['labels_rotation'] = array(
'#title' => t('Labels rotation'),
'#type' => 'select',
'#options' => array(
0 => t('0°'),
30 => t('30°'),
45 => t('45°'),
60 => t('60°'),
90 => t('90°'),
),
// This is only shown on inverted charts.
'#attributes' => array(
'class' => array(
'axis-inverted-show',
),
),
'#default_value' => $options['yaxis_labels_rotation'],
'#parents' => array_merge($parents, array(
'yaxis_labels_rotation',
)),
);
return $form;
}