'; $output .= drupal_get_form('consulta_reporte_configurado_reporte_form'); $output .= '

'; //**************************************************************************** $anno_seleccionado_para_reporte = isset($_SESSION['datos_para_generar_reporte_rconfig']) && isset($_SESSION['datos_para_generar_reporte_rconfig']['anho']) ? $_SESSION['datos_para_generar_reporte_rconfig']['anho'] : date('Y'); if($anno_seleccionado_para_reporte > 0){ $anho_selecc = $anno_seleccionado_para_reporte; }else{ $anho_selecc = 'Todos'; } $sub_opciones_campo = array(t('Unidad Ejecutora'), t('Sector del Proyecto'),t('Directriz PNDES'), t('Estratégia MCTI'), t('Estatus del Proyecto'), t('Situación Presupuestaria'),); $campo_seleccionado_para_reporte = isset($_SESSION['datos_para_generar_reporte_rconfig']) && isset($_SESSION['datos_para_generar_reporte_rconfig']['campo']) ? $_SESSION['datos_para_generar_reporte_rconfig']['campo'] : 0; $campo_selec = $sub_opciones_campo[$campo_seleccionado_para_reporte]; $sub_opciones_tipografico = array(t('Columna'), t('Barra'),t('Circulo'),); $tipografico_seleccionado_para_reporte = isset($_SESSION['datos_para_generar_reporte_rconfig']) && isset($_SESSION['datos_para_generar_reporte_rconfig']['tipografico']) ? $_SESSION['datos_para_generar_reporte_rconfig']['tipografico'] : 0; $tipografico_selec = $sub_opciones_tipografico[$tipografico_seleccionado_para_reporte]; $header = array(); $rows1 = array(); $row1 = array(); $row1[] = array('data' => 'Año', 'bgcolor' => 'E6E6E6', 'style' => 'font-weight: bold;'); $row1[] = array('data' => $anho_selecc, 'bgcolor' => 'FCFCFC',); $rows1[] = $row1; $row1 = array(); $row1[] = array('data' => 'Campo de Agrupación', 'bgcolor' => 'E6E6E6', 'style' => 'font-weight: bold;'); $row1[] = array('data' => $campo_selec, 'bgcolor' => 'FCFCFC',); $rows1[] = $row1; $row1 = array(); $row1[] = array('data' => 'Tipo de Gráfico', 'bgcolor' => 'E6E6E6', 'style' => 'font-weight: bold;'); $row1[] = array('data' => $tipografico_selec, 'bgcolor' => 'FCFCFC',); $rows1[] = $row1; $output .= theme('table', $header, $rows1); $output .= '

'; $header = array(); $header[] = array('data' => $campo_selec); $header[] = array('data' => t('Cantidad de proyectos')); $sql1 = "SELECT"; $sql_campos = " COUNT(*) AS cant"; $sql_tablas = " FROM {proyectos_operativos} po, {node} n, {content_type_proyectos_operativos} ctpo, {workflow_node} AS wn"; $sql_condiciones = " WHERE po.nid = n.nid AND n.vid = ctpo.vid AND wn.nid = n.nid AND wn.sid = %d"; $sql_agrupacion = "";//GROUP BY cn.field_sc_mes_value $inputs[] = variable_get('proyectos_operativos_state_aprobado', NULL);//proyectos aprobados if($anno_seleccionado_para_reporte > 0){ $sql_condiciones .= " AND po.year = %d"; $inputs[] = $anno_seleccionado_para_reporte; } if($campo_selec == t('Unidad Ejecutora')){ $sql_campos .= ", ctpo.field_proyecto_ente_nid AS nombrecampocol"; $sql_agrupacion = " GROUP BY ctpo.field_proyecto_ente_nid"; }elseif($campo_selec == t('Sector del Proyecto')){ $sql_campos .= ", ctpo.field_proyecto_sector_value AS nombrecampocol"; $sql_agrupacion = " GROUP BY ctpo.field_proyecto_sector_value"; }elseif($campo_selec == t('Directriz PNDES')){ $sql_campos .= ", ctpo.field_proyecto_pndes_value AS nombrecampocol"; $sql_agrupacion = " GROUP BY ctpo.field_proyecto_pndes_value"; }elseif($campo_selec == t('Estratégia MCTI')){ $sql_campos .= ", ctpo.field_proyecto_mcti_value AS nombrecampocol"; $sql_agrupacion = " GROUP BY ctpo.field_proyecto_mcti_value"; }elseif($campo_selec == t('Estatus del Proyecto')){ $sql_campos .= ", ctpo.field_proyecto_status_value AS nombrecampocol"; $sql_agrupacion = " GROUP BY ctpo.field_proyecto_status_value"; }elseif($campo_selec == t('Situación Presupuestaria')){ $sql_campos .= ", ctpo.field_proyecto_situacion_p_value AS nombrecampocol"; $sql_agrupacion = " GROUP BY ctpo.field_proyecto_situacion_p_value"; } $sql1 .= $sql_campos.$sql_tablas.$sql_condiciones.$sql_agrupacion; $queryResult1 = db_query ( $sql1, $inputs); $tablas = array(); $rows = array(); $datos_grafica = array(); while ($resultado_consult_tabla = db_fetch_array ( $queryResult1 ) ){ if($campo_selec == t('Unidad Ejecutora')){ $nodo_ente = node_load($resultado_consult_tabla['nombrecampocol']); $nombre_campo_valor = $nodo_ente->title; }elseif(($campo_selec == t('Sector del Proyecto')) || ($campo_selec == t('Directriz PNDES'))||($campo_selec == t('Estratégia MCTI'))){ $term = taxonomy_get_term($resultado_consult_tabla['nombrecampocol']); $nombre_campo_valor = $term->name; }else{//if(($campo_selec == t('Estatus del Proyecto'))||($campo_selec == t('Situación Presupuestaria'))) $nombre_campo_valor = $resultado_consult_tabla['nombrecampocol']; } $row = array(); $row[] = array('data' => $nombre_campo_valor,); $row[] = array('data' => $resultado_consult_tabla['cant']); //copiar para datos graficas $dato_graf = array( 'nombre_opcion' => $nombre_campo_valor, 'cantidad' => $resultado_consult_tabla['cant'], ); $datos_grafica[] = $dato_graf; $rows[] = $row; } $tablas[]= theme('table', $header, $rows); //generación de grafica $output .= generar_grafica_relacionada($datos_grafica, $campo_selec, $tipografico_selec); if (count($tablas)) { $output .= implode('', $tablas); } $output .='

'; return $output; } //*********************************************************** function generar_grafica_relacionada($datos_grafica, $campo_selec, $tipografico_selec) { $page_content = ''; $path = libraries_get_path('Highcharts-3.0.1'); if($tipografico_selec == t('Columna')){ $options = grafica_basica_columnas_opciones($datos_grafica, $campo_selec); }elseif($tipografico_selec == t('Barra')){ $options = grafica_basica_barras_opciones($datos_grafica, $campo_selec); }elseif($tipografico_selec == t('Circulo')){ $options = grafica_basica_circulo_opciones($datos_grafica, $campo_selec); } if (is_object($options)) { // Render the chart options object, and retrieve the chart id. highcharts_render($options); // Define required and optional chart container attributes. $attributes = array( // Required chart id passed by reference. 'id' => $options->chart->renderTo, // Optionally add styles or any other valid attribute. 'style' => 'height: 400px;width: 800px;' ); $page_content .= theme_highcharts_chart($options->chart->renderTo); $page_content .= theme('highcharts_chart', $attributes); } $path_biblioteca_Highcharts = libraries_get_path('Highcharts-3.0.1'); drupal_add_js($path_biblioteca_Highcharts . '/js/modules/exporting.js'); return $page_content; } /** * Column-basic highcharts options object. * * @see highcharts_render() */ function grafica_basica_columnas_opciones($datos_grafica, $campo_selec) { $options = new stdClass(); // Chart. $options->chart = (object)array( 'renderTo' => 'container', 'plotBackgroundColor' => NULL, 'plotBorderWidth' => NULL, 'plotShadow' => FALSE, ); $options->chart->type = 'column'; // Title. $options->title->text = 'Distribución de Proyectos Operativos según '.$campo_selec.''; $options->subtitle->text = 'Reporte Configurado SIPP'; $categorias_xAxis = array(); $categorias_xAxis[] = $campo_selec; $options->xAxis->categories = $categorias_xAxis; $options->yAxis->title->text = 'Cantidad de Proyectos'; $options->yAxis->allowDecimals = FALSE; // Tooltip. // Normally formatter is a function callback. For now we'll make it a string. // @todo whenever this is user defined (views config, etc) be sure to sanitize // this string before passing to highcharts_render(). $options->tooltip->formatter = "function() {return ''+ this.series.name +': '+ this.point.y +' proyecto(s)';}"; // Plot options. $options->plotOptions->column = (object)array( 'allowPointSelect' => TRUE, 'cursor' => 'pointer', 'dataLabels' => array( 'enabled' => FALSE, ), 'showInLegend' => TRUE, ); // Series. $options->series = array(); foreach($datos_grafica as $valor_opc_i){ $series = new StdClass(); $series->name = $valor_opc_i['nombre_opcion']; $series->data = array(); $series->data[] = array($valor_opc_i['cantidad']*1.0); $options->series[] = $series; } // Diable credits. $options->credits->enabled = FALSE; return $options; } /** * Bar-basic highcharts options object. * * @see highcharts_render() */ function grafica_basica_barras_opciones($datos_grafica, $campo_selec) { $options = new stdClass(); // Chart. $options->chart = (object)array( 'renderTo' => 'container', 'plotBackgroundColor' => NULL, 'plotBorderWidth' => NULL, 'plotShadow' => FALSE, ); $options->chart->type = 'bar'; // Title. $options->title->text = 'Distribución de Proyectos Operativos según '.$campo_selec.''; $options->subtitle->text = 'Reporte Configurado SIPP'; $categorias_xAxis = array(); $categorias_xAxis[] = $campo_selec; $options->xAxis->categories = $categorias_xAxis; $options->yAxis->title->text = 'Cantidad de Proyectos'; $options->yAxis->allowDecimals = FALSE; // Tooltip. // Normally formatter is a function callback. For now we'll make it a string. // @todo whenever this is user defined (views config, etc) be sure to sanitize // this string before passing to highcharts_render(). $options->tooltip->formatter = "function() {return ''+ this.series.name +': '+ this.point.y +' proyecto(s)';}"; // Plot options. $options->plotOptions->bar = (object)array( 'allowPointSelect' => TRUE, 'cursor' => 'pointer', 'dataLabels' => array( 'enabled' => FALSE, ), 'showInLegend' => TRUE, ); // Series. $options->series = array(); foreach($datos_grafica as $valor_opc_i){ $series = new StdClass(); $series->name = $valor_opc_i['nombre_opcion']; $series->data = array(); $series->data[] = array($valor_opc_i['cantidad']*1.0); $options->series[] = $series; } // Diable credits. $options->credits->enabled = FALSE; return $options; } /** * Pie-basic highcharts options object. * * @see highcharts_render() */ function grafica_basica_circulo_opciones($datos_grafica, $campo_selec) { $options = new stdClass(); // Chart. $options->chart = (object)array( 'renderTo' => 'container', 'plotBackgroundColor' => NULL, 'plotBorderWidth' => NULL, 'plotShadow' => FALSE, ); // Title. $options->title->text = 'Distribución de Proyectos Operativos según '.$campo_selec.''; $options->subtitle->text = 'Reporte Configurado SIPP'; // Tooltip. // Normally formatter is a function callback. For now we'll make it a string. // @todo whenever this is user defined (views config, etc) be sure to sanitize // this string before passing to highcharts_render(). $options->tooltip->formatter = "function() {return ''+ this.point.name +': '+ this.point.y + ' proyecto(s), ' + this.percentage.toFixed(2) +' %';}"; // Plot options. $options->plotOptions->pie = (object)array( 'allowPointSelect' => TRUE, 'cursor' => 'pointer', 'dataLabels' => array( 'enabled' => FALSE, ), 'showInLegend' => TRUE, ); // Series. $options->series = array(); $series = new StdClass(); $series->type = 'pie'; $series->name = $campo_selec; $series->data = array(); foreach($datos_grafica as $valor_opc_i){ $series->data[] = array($valor_opc_i['nombre_opcion'], $valor_opc_i['cantidad']*1.0); } $options->series[] = $series; // Diable credits. $options->credits->enabled = FALSE; return $options; } //*********************************************************** /** * Implementation of consulta_matriz_de_procesos_reporte_form(). * Formulario de busqueda de proyecto. */ function consulta_reporte_configurado_reporte_form($form_state) { $form = array(); //años disponibles $anno_actual = date("Y"); for($i = $anno_actual - 10; $i <= $anno_actual; $i++) { $annos[$i] = $i; } $annos[0] = 'Todos'; $anno_seleccionado_para_reporte = isset($_SESSION['datos_para_generar_reporte_rconfig']) && isset($_SESSION['datos_para_generar_reporte_rconfig']['anho']) ? $_SESSION['datos_para_generar_reporte_rconfig']['anho'] : date('Y'); $form['anno_seleccionado_para_reporte'] = array( '#title' => t('Consultar para el año'), '#type' => 'select', '#default_value' => $anno_seleccionado_para_reporte, '#options' => $annos, ); $sub_opciones_campo = array(t('Unidad Ejecutora'), t('Sector del Proyecto'),t('Directriz PNDES'), t('Estratégia MCTI'), t('Estatus del Proyecto'), t('Situación Presupuestaria'),); $campo_seleccionado_para_reporte = isset($_SESSION['datos_para_generar_reporte_rconfig']) && isset($_SESSION['datos_para_generar_reporte_rconfig']['campo']) ? $_SESSION['datos_para_generar_reporte_rconfig']['campo'] : 0; $form['campo_seleccionado_para_reporte'] = array( '#title' => t('Campo de agrupación'), '#type' => 'select', '#default_value' => $campo_seleccionado_para_reporte, '#options' => $sub_opciones_campo, ); $sub_opciones_tipografico = array(t('Columna'), t('Barra'),t('Circulo'),); $tipografico_seleccionado_para_reporte = isset($_SESSION['datos_para_generar_reporte_rconfig']) && isset($_SESSION['datos_para_generar_reporte_rconfig']['tipografico']) ? $_SESSION['datos_para_generar_reporte_rconfig']['tipografico'] : 0; $form['tipografico_seleccionado_para_reporte'] = array( '#title' => t('Tipo de Gráfico'), '#type' => 'select', '#default_value' => $tipografico_seleccionado_para_reporte, '#options' => $sub_opciones_tipografico, ); //boton de enviar consulta $form['buttons'] = array( '#prefix' => '
', '#suffix' => '
', ); $form['buttons']['submit'] = array( '#type' => 'submit', '#value' => t('Consultar'), ); return $form; } /** * Implementation of consulta_matriz_de_procesos_reporte_form_submit(). * cambia el filtro de busqueda de proyectos. */ function consulta_reporte_configurado_reporte_form_submit($form, &$form_state) { $_SESSION['datos_para_generar_reporte_rconfig'] = array(); $_SESSION['datos_para_generar_reporte_rconfig']['anho'] = $form_state['values']['anno_seleccionado_para_reporte']; $_SESSION['datos_para_generar_reporte_rconfig']['campo'] = $form_state['values']['campo_seleccionado_para_reporte']; $_SESSION['datos_para_generar_reporte_rconfig']['tipografico'] = $form_state['values']['tipografico_seleccionado_para_reporte']; }