';
$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' => '