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' => '', '#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' => '', '#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' => '', '#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 = " {$thead}{$tbody}
"; return $table; }