Hola! estoy trabajando con un ei_grafico de barras. He podido rotarlo, agregarle margenes, margenes extras, etiquetarlo, e incluso definir el ancho de cada barra.
El problema con el que me encuentro es que el conjunto de datos, es variable.
Es decir, es un gráfico simple de barras que puede mostrar de 0 a N datos.
No he podido, accediendo a la documentación del JpGraph y a los ejemplos que vi en la web, definir el alto del gráfico.
Si son 10 elementos, se muestra impecable. Pero si son 100 se muestran encimados.
Hay alguna API que no he podido ver a través de la cual pueda definir el alto del gráfico basándome en la cantidad de elementos a mostrar?
Mil gracias!
Hola
Cuando se crea el gráfico se crea con el ancho y alto.
Habría que ver en ese punto de modificar la creación de acuerdo a los datos que tengas.
Emilio
Si, tal cual, pero cuando entro a la pantalla donde se crea el gráfico, ya tengo la cantidad de datos. Si tuviera la oportunidad de usar una constante x cantidad_datos y aplicarlo a la altura antes de la creación del gráfico…
Quizá extendiendolo, pero la verdad, no encontré la ventana donde poder hacerlo.
Si lo extendes al gráfico y sobreescribis el _construct o ini_conf podes cambiarle el tamaño al gráfico.
Emilio
Ah, claro, tengo algo hecho así con los filtros, reacomodando el layout en el archivo mi_proyecto_ei_filtro.php en la carpeta extension_toba.
La idea sería esa no? reemplazar el _construct con algo que me permita pasarle parámetros?
Para probar, agregué un gráfico en una pantalla y me genera un objeto heredado de ei_grafico.
Este último crea el gráfico en el ini_conf.
Yo diría que es mejor tocar ese evento.
Sinceramente no tengo clara la cadena de eventos que se desencadenan al convocar una operación.
Emilio
Pruebo y te cuento…
esto funcionó
class grafico_barras extends toba_ei_grafico
{
function ini_conf()
{
$this->_ancho = 600;
$this->_alto = 2000;
parent::ini_conf();
}
}
ahora, como llegan los valores ahi, ya es otra cosa.
Ahí lo hice funcionar (claro que con tu ayuda)… pero le agregué una forma de tomar la cantidad de elementos.
Al filtrar, ejecuto la SQL que recupera los datos y hago
toba::memoria()->set_dato('cantidad_elementos', count($resultado_sql));
en la extensión del grafico:
function ini_conf()
{
if (toba::memoria()->existe_dato('cantidad_elementos')) {
$altura = toba::memoria()->get_dato('cantidad_elementos') * 40;
$this->_alto = $altura;
toba::memoria()->eliminar_dato('cantidad_elementos');
}
parent::ini_conf();
}
De todas formas, capaz puede quedar la sugerencia de la posible necesidad de corregir dinámicamente los valores de estos campos, más allá de los expresados en el editor.
Mil gracias!!!