array(
"title" => t("Access fossee_stats"),
"description" => t("Allows users to view job postings.")
),
"manage fossee_stats" => array(
"title" => t("Manage fossee_stats"),
"description" => t("Allows users to manage job postings.")
),
);
}
function fossee_stats_menu() {
$items = array();
$items["fossee-stats"] = array(
"title" => "FOSSEE STATS",
"page callback" => "drupal_get_form",
"page arguments" => array("fossee_stats_form"),
"access arguments" => array("access fossee_stats"),
"type" => MENU_NORMAL_ITEM,
);
$items["fossee-stats-all"] = array(
"title" => "FOSSEE STATS",
"page callback" => "fossee_stats_all",
"access arguments" => array("access fossee_stats"),
"type" => MENU_NORMAL_ITEM,
);
$items["example-charts"] = array(
"title" => "Example",
"page callback" => "example_page",
"access arguments" => array("access content"),
"type" => MENU_NORMAL_ITEM,
);
$items["jobs/ajax"] = array(
"title" => "Ajax callbacks",
"page callback" => "fossee_stats_ajax",
"access arguments" => array("access fossee_stats"),
"type" => MENU_CALLBACK
);
return $items;
}
function fossee_stats_all(){
$page = "";
$fossee_stats = drupal_get_form('fossee_stats_form');
$page .= drupal_render($fossee_stats);
$page .= "
";
$page .= "
";
return $page;
}
function fossee_stats_form($form, &$form_state) {
$options_first = _ajax_example_get_first_dropdown_options();
if(isset($form_state['values']['foss_sub_project'])&&isset($form_state['values']['foss_type'])&&isset($form_state['values']['foss_sub_project_status'])){
$foss_project = isset($form_state['values']['foss_type']) ? $form_state['values']['foss_type'] : key ($options_first);
}else{
$foss_project = '';
}
$form['foss_type'] = array(
'#type' => 'select',
'#title' => 'FOSS Type',
'#options' => $options_first,
'#default_value' => $foss_project,
'#ajax' => array(
'callback' =>'ajax_example_dependent_dropdown_callback',
'wrapper' => 'dropdown-second-replace',
),
);
if(isset($form_state['values']['foss_sub_project'])&&isset($form_state['values']['foss_type'])&&isset($form_state['values']['foss_sub_project_status'])){
$foss_sub_project = isset($form_state['values']['foss_sub_project']) ? $form_state['values']['foss_sub_project'] : key(_ajax_example_get_second_dropdown_options($foss_project));
}else{
$foss_sub_project = '';
}
$form['foss_sub_project'] = array(
'#type' => 'select',
'#title' => t('Foss Sub Project'),
'#options' => _ajax_example_get_second_dropdown_options($foss_project),
'#prefix' => '',
'#suffix' => '
',
'#default_value' => '',
'#ajax' => array(
'callback' =>'ajax_example_dependent_dropdown_callback1',
'wrapper' => 'dropdown-third-replace',
),
);
if(isset($form_state['values']['foss_sub_project'])&&isset($form_state['values']['foss_type'])&&isset($form_state['values']['foss_sub_project_status'])){
$foss_sub_project_status = isset($form_state['values']['$foss_sub_project_status']) ? $form_state['values']['$foss_sub_project_status'] : '';
}else{
$foss_sub_project_status = '';
}
$form['foss_sub_project_status'] = array(
'#type' => 'select',
'#title' => t('Status'),
'#options' => _ajax_example_get_third_dropdown_options($foss_sub_project),
'#prefix' => '',
'#suffix' => '
',
'#default_value' => $foss_sub_project_status,
);
if(isset($form_state['values']['foss_sub_project'])&&isset($form_state['values']['foss_type'])&&isset($form_state['values']['foss_sub_project_status'])){
$foss_select_branch = isset($form_state['values']['foss_select_branch']) ? $form_state['values']['foss_select_branch'] : '';
}else{
$foss_select_branch = '';
}
$form['foss_select_branch'] = array(
'#type' => 'select',
'#title' => t('Branch'),
'#options' => _ajax_get_branch_options($form, $form_state),
'#prefix' => '',
'#suffix' => '
',
'#default_value' => $foss_select_branch,
);
$form['start_date'] = array(
'#type' => 'date_popup',
'#title' => t('Start Date:'),
'#date_label_position' => '',
'#description' => '',
'#default_value' => '',
'#date_type' => DATE_DATETIME,
'#date_format' => 'd/m/Y',
'#date_increment' => 1,
'#date_year_range' => '-3:+3',
);
$form['end_date'] = array(
'#type' => 'date_popup',
'#title' => t('End Date:'),
'#date_label_position' => '',
'#description' => '',
'#default_value' =>'',
'#date_type' => DATE_DATETIME,
'#date_format' => 'd/m/Y',
'#date_increment' => 1,
'#date_year_range' => '-3:+3',
);
$form['submit'] = array(
'#type' => 'submit',
'#ajax' => array(
'callback' => 'ajax_example_submit_driven_callback',
'wrapper' => 'box',
),
'#value' => t('Filter'),
);
$form['reset'] = array(
'#type' => 'submit',
'#value' => t('Reset'),
);
$form['displaytext'] = array(
'#type' => 'markup',
'#prefix' => '',
'#suffix' => '
',
'#markup' => '',
);
$form['box'] = array(
'#type' => 'markup',
'#prefix' => '',
'#suffix' => '
',
'#markup' => 'Initial markup for box
',
);
return $form;
}
/**
* Callback function for menu item.
*/
function example_page() {
$data = array(
array('fruit' => 'apple', 'votes' => 16),
array('fruit' => 'mango', 'votes' => 10),
array('fruit' => 'banana', 'votes' => 34),
array('fruit' => 'peach', 'votes' => 20),
array('fruit' => 'orange', 'votes' => 15),
);
$options_pie = array(
'title' => 'Favourite fruits',
'fields' => array(
'votes' => array(
'label' => t('Votes'),
'enabled' => TRUE,
),
),
'xAxis' => array(
'labelField' => 'fruit',
),
'data' => $data,
'type' => 'pie',
);
$options_column = array(
'title' => 'Favourite fruits',
'fields' => array(
'votes' => array(
'label' => t('Votes'),
'enabled' => TRUE,
),
),
'xAxis' => array(
'labelField' => 'fruit',
),
'data' => $data,
'type' => 'column',
);
$build['pie'] = array(
'#theme' => 'visualization',
'#options' => $options_pie,
);
return $build;
}
function _ajax_example_get_first_dropdown_options(){
$query = db_select('foss_type');
$query->fields('foss_type', array('id'));
$query->fields('foss_type', array('foss_name'));
$result = $query->execute();
$options = array();
$options[''] = "--------------";
while ($foss_detail = $result->fetchObject())
{
$options[$foss_detail->id] = $foss_detail->foss_name;
}
return $options;
}
function _ajax_example_get_second_dropdown_options($foss_project = ''){
if($foss_project != NULL){
$query = db_select('foss_type');
$query->fields('foss_type', array('tbc'));
$query->fields('foss_type', array('lab_migration'));
$query->condition('id',$foss_project);
$result = $query->execute();
$subproject_detail = $result->fetchObject();
$options = array();
if(($subproject_detail->tbc)!=0&&($subproject_detail->lab_migration)!=0){
$options[0] = "--------------";
$options[1] = "Textbook Companion";
$options[2] = "Lab Migration";
}else if(($subproject_detail->tbc)!=0&&($subproject_detail->lab_migration)==0){
$options[0] = "--------------";
$options[1] = "Textbook Companion";
}else if(($subproject_detail->tbc)==0&&($subproject_detail->lab_migration)!=0){
$options[0] = "--------------";
$options[2] = "Lab Migration";
}else if(($subproject_detail->tbc)==0&&($subproject_detail->lab_migration)==0) {
$options[0] = "No Sub-Project Available";
}else{
$options[0] = "--------------";
}
return $options;
}else{
$options[0] = "--------------";
return $options;
}
}
function _ajax_example_get_third_dropdown_options($foss_sub_project=''){
$options = array();
if($foss_sub_project!=0){
if($foss_sub_project==1){
$options[0] = "--------------";
$options[1] = "Books In Progress";
$options[2] = "Completed Books";
}else if($foss_sub_project==2){
$options[0] = "--------------";
$options[1] = "Labs in Progress";
$options[2] = "Completed Labs";
}else{
$options[0] = "--------------";
}
}else{
$options[0] = "--------------";
}
return $options;
}
function _ajax_get_branch_options($form, $form_state){
$foss_sub_projectname=$form['foss_sub_project']['#options'][$form_state['values']['foss_sub_project']];
$foss_project=$form['foss_type']['#options'][$form_state['values']['foss_type']];
if($foss_project!='--------------'){
db_set_active($foss_project);//Active other database
$options = array();
if($foss_sub_projectname=='Textbook Companion'){
$query = db_select('textbook_companion_proposal');
$query->fields('textbook_companion_proposal', array('branch'));
$query->distinct();
$query->orderBy('branch', 'ASC');
$result = $query->execute();
$options['0'] = "--------------";
$x = 1;
while ($foss_branch = $result->fetchObject())
{
$options[$x++] = $foss_branch->branch;
}
}else if($foss_sub_projectname=='No Sub-Project Available'||$foss_sub_projectname=='--------------'){
$options[0] ="--------------";
}else if($foss_sub_projectname=='Lab Migration'){
$query = db_select('lab_migration_proposal');
$query->fields('lab_migration_proposal', array('department'));
$query->distinct();
$query->orderBy('department', 'ASC');
$result = $query->execute();
$options['0'] = "--------------";
$x = 1;
while ($foss_branch = $result->fetchObject())
{
$options[$x++] = $foss_branch->department;
}
}
db_set_active('default'); // We need to call the main (drupal) db back
return $options;
db_set_active(); // without the paramater means set back to the default for the site
}else{
$options[0] ="--------------";
}
return $options;
}
function ajax_example_dependent_dropdown_callback($form, $form_state){
$form['foss_sub_project_status']['#options']=_ajax_example_get_third_dropdown_options($foss_sub_project);
$form['foss_select_branch']['#value'] = '';
$commands[] = ajax_command_replace("#dropdown-second-replace", drupal_render($form['foss_sub_project']));
$commands[] = ajax_command_replace("#dropdown-third-replace", drupal_render($form['foss_sub_project_status']));
$commands[] = ajax_command_replace("#dropdown-fourth-replace", drupal_render($form['foss_select_branch']));
return array('#type' => 'ajax', '#commands' => $commands);
}
function ajax_example_dependent_dropdown_callback1($form, $form_state){
$commands[] = ajax_command_replace("#dropdown-third-replace", drupal_render($form['foss_sub_project_status']));
$commands[] = ajax_command_replace("#dropdown-fourth-replace", drupal_render($form['foss_select_branch']));
return array('#type' => 'ajax', '#commands' => $commands);
}
function ajax_example_submit_driven_callback($form, $form_state) {
$foss_type=$form['foss_type']['#options'][$form_state['values']['foss_type']];
$foss_sub_project=$form['foss_sub_project']['#options'][$form_state['values']['foss_sub_project']];
$foss_sub_project_status=$form['foss_sub_project_status']['#options'][$form_state['values']['foss_sub_project_status']];
$foss_select_branch=$form['foss_select_branch']['#options'][$form_state['values']['foss_select_branch']];
$startdate=$form_state['values']['start_date'];
$end_date=$form_state['values']['end_date'];
//Get completed book count from tbc
db_set_active($foss_type);
if($foss_sub_project!='--------------'){
if($foss_sub_project=='Textbook Companion'){
$query = db_select('textbook_companion_proposal');
$query->addExpression('count(*)', 'count');
$query->condition('proposal_status', 3);
$query->where('FROM_UNIXTIME(completion_date) LIKE :val', array('val'=>'%'));
$query->condition('branch', '%', 'LIKE');
$query->orderBy('id', 'ASC');
$result = $query->execute();
$completedbooks = $result->fetchObject();
}else{
$query = db_select('textbook_companion_proposal');
$query->addExpression('count(*)', 'count');
$query->condition('proposal_status',3,'<>' );
$query->where('FROM_UNIXTIME(completion_date) LIKE :val', array('val'=>'%'));
$query->condition('branch', '%', 'LIKE');
$query->orderBy('id', 'ASC');
$result = $query->execute();
$pendingbooks = $result->fetchObject();
}
}
db_set_active('default'); // We need to call the main (drupal) db back
db_set_active();
$headers = array(
"#", "test", "TBC", "Lab Migration",
);
$query = db_select('foss_type');
$query->fields('foss_type');
$result = $query->execute()->fetchAll();
$rows = array();
$i=1;
foreach($result as $row) {
$item = array(
$i,
$row->foss_name,
$row->tbc,
$row->lab_migration,
);
array_push($rows, $item);
$i++;
}
$form['box']['#markup']=bootstrap_table_format($headers, $rows).drupal_render(example_page());
//$form['displaytext']['#markup']=t("Total number of books completed : ".(string)$completedbooks);
//$commands[] = ajax_command_replace("#displaytext", drupal_render($form['displaytext']));
$commands[] = ajax_command_replace("#box", drupal_render($form['box']));
return array('#type' => 'ajax', '#commands' => $commands);
}
function bootstrap_table_format($headers, $rows) {
$thead = "";
$tbody = "";
foreach($headers as $header) {
$thead .= "{$header} | ";
}
foreach($rows as $row){
$tbody .= "";
foreach($row as $data) {
$tbody .= "{$data} | ";
}
$tbody .= "
";
}
$table = "
";
return $table;
}