Я пытаюсь реализовать Ajax в D3 Drupal 7 Module, так я и сделал, но не получил желаемого результата, т.е.
Добавлено меню
function d3_form_menu() {
$items['d3_form'] = array(
'title' => 'D3 form examples',
'description' => 'Different visualization examples using d3.',
'page callback' => 'xxxxxxx',
'access callback' => TRUE,
);
$items['d3_form/simple_form'] = array(
'title' => 'Simple Form',
'page callback' => 'drupal_get_form',
'page arguments' => array('d3_form_frm'),
'access callback' => TRUE,
'type' => MENU_CALLBACK,
);
return $items;
}
** Форма, которая будет запрашивать ввод данных пользователем для круговой диаграммы **
function d3_form_frm($form,&$form_submit) {
$form['firstname'] = array(
'#title' => t('Firstname'),
'#type' => 'textfield',
//'#required' => TRUE,
);
$form['lastname'] = array(
'#title' => t('Lastname'),
'#type' => 'textfield',
);
$form['submit'] = array(
'#value' => t('Submit'),
'#type' => 'submit',
'#ajax'=>array(
'callback' => 'd3_form_frm_ajax_submit',
'wrapper' => 'd3-form-frm',
'method' => 'replace',
'effect' => 'fade',
),
);
return $form;
}
Ajax callback function.
function d3_form_frm_ajax_submit($form, $form_state) {
$pieArray=array();
// Dummy/dumb validation for demo purpose.
if (!empty($form_state['input']['firstname'])) {
$pieArray[0]=$form_state['input']['firstname']*1;
$pieArray[1]=$form_state['input']['lastname']*1;
return d3_form_custom_pie($pieArray);
}
else {
return 'Not input Received';
}
}
Это должно создать круговую диаграмму, которой нет. Она также оставляет кнопку отправки недоступной после одного клика. Тем не менее, я заметил, когда я включаю Devel
Различные блоки, страницы и функции для разработчиков. диаграмма появляется.
function d3_form_custom_pie($pieArray) {
$chart = array(
'id' => 'visualization',
'type' => 'PieChart',
'rows' => array(
array('Development', $pieArray[0]),
array('Strategy', $pieArray[1]),
),
);
return d3_draw($chart);
}
Задача ещё не решена.
Других решений пока нет …