Beispiel #1
0
 public function draw_category_chart($ref_rec, $gb_captions)
 {
     $f = $this->init_module(Libs_OpenFlashChart::module_name());
     $title = new OFC_Elements_Title($ref_rec);
     $f->set_title($title);
     $labels = array();
     foreach ($gb_captions as $cap) {
         $labels[] = $cap['name'];
     }
     $x_ax = new OFC_Elements_Axis_X();
     $x_ax->set_labels_from_array($labels);
     $f->set_x_axis($x_ax);
     $max = 5;
     $color = 0;
     foreach ($this->ref_records as $q => $r) {
         $results = call_user_func($this->display_cell_callback, $r);
         $title2 = strip_tags(call_user_func($this->ref_record_display_callback, $r, true));
         $bar = new OFC_Charts_Line();
         $bar->set_colour(self::$colours[$color % count(self::$colours)]);
         $color++;
         $bar->set_key($title2, 10);
         $arr = array();
         foreach ($results as $v) {
             if ($ref_rec) {
                 if (is_array($v[$ref_rec])) {
                     $v[$ref_rec] = array_pop($v[$ref_rec]);
                 }
                 $val = (double) strip_tags($v[$ref_rec]);
             } else {
                 if (is_array($v)) {
                     $v = array_pop($v);
                 }
                 $val = (double) strip_tags($v);
             }
             $arr[] = $val;
             if ($max < $val) {
                 $max = $val;
             }
         }
         $bar->set_values($arr);
         $f->add_element($bar);
     }
     $y_ax = new OFC_Elements_Axis_Y();
     $y_ax->set_range(0, $max);
     $y_ax->set_steps($max / 10);
     $f->set_y_axis($y_ax);
     $f->set_width(950);
     $f->set_height(400);
     $this->display_module($f);
 }
Beispiel #2
0
function create_chart_data_object($type, $y_values_array)
{
    switch ($type) {
        case 'line':
            $data_object = new OFC_Charts_Line();
            if (array_var($y_values_array, 'color')) {
                $data_object->set_colour(array_var($y_values_array, 'color'));
            }
            if (array_var($y_values_array, 'dot_size')) {
                $data_object->set_dot_size(array_var($y_values_array, 'dot_size'));
            }
            if (array_var($y_values_array, 'halo_size')) {
                $data_object->set_halo_size(array_var($y_values_array, 'halo_size'));
            }
            if (array_var($y_values_array, 'text')) {
                $data_object->set_key(array_var($y_values_array, 'text', ''), array_var($y_values_array, 'text_size', 10));
            }
            if (array_var($y_values_array, 'width')) {
                $data_object->set_width(array_var($y_values_array, 'width'));
            }
            $values_data = array_var($y_values_array, 'values', array());
            break;
        case 'bar':
            $data_object = new OFC_Charts_Bar_3d();
            if (array_var($y_values_array, 'color')) {
                $data_object->set_colour(array_var($y_values_array, 'color'));
            }
            if (array_var($y_values_array, 'tooltip')) {
                $data_object->set_tooltip(array_var($y_values_array, 'tooltip'));
            }
            if (array_var($y_values_array, 'text')) {
                $data_object->set_key(array_var($y_values_array, 'text', ''), array_var($y_values_array, 'text_size', 10));
            }
            if (array_var($y_values_array, 'alpha')) {
                $data_object->set_alpha(array_var($y_values_array, 'alpha'));
            }
            $values_data = array_var($y_values_array, 'values', array());
            break;
        case 'bar-stack':
            $data_object = new OFC_Charts_Bar_Stack();
            if (array_var($y_values_array, 'color')) {
                $data_object->set_colour(array_var($y_values_array, 'color'));
            }
            if (array_var($y_values_array, 'colors')) {
                $data_object->{'colours'} = array_var($y_values_array, 'colors');
            }
            if (array_var($y_values_array, 'keys')) {
                $data_object->{'keys'} = array_var($y_values_array, 'keys');
            }
            if (array_var($y_values_array, 'tooltip')) {
                $data_object->set_tooltip(array_var($y_values_array, 'tooltip'));
            }
            if (array_var($y_values_array, 'text')) {
                $data_object->set_key(array_var($y_values_array, 'text', ''), array_var($y_values_array, 'text_size', 10));
            }
            if (array_var($y_values_array, 'alpha')) {
                $data_object->set_alpha(array_var($y_values_array, 'alpha'));
            }
            $data = array_var($y_values_array, 'values', array());
            foreach ($data as $d) {
                $data_object->append_stack($d);
            }
            break;
        default:
            continue;
    }
    if (isset($values_data)) {
        $data_object->set_values($values_data);
    }
    return $data_object;
}
Beispiel #3
0
 private function createGraph(Gpf_Chart_DataRecordSet $data)
 {
     if ($this->chartType == Gpf_Rpc_Chart::CHART_TYPE_LINE_DOT && $this->data1->getSize() > 150) {
         $this->chartType = Gpf_Rpc_Chart::CHART_TYPE_LINE;
     }
     switch ($this->chartType) {
         case Gpf_Rpc_Chart::CHART_TYPE_AREA:
             if ($data->getSize() > 40) {
                 $areaGraph = new OFC_Charts_Area_Line();
             } else {
                 $areaGraph = new OFC_Charts_Area_Hollow();
             }
             $areaGraph->set_width(3);
             $areaGraph->set_dot_size(3);
             $areaGraph->set_colour($data->getColor());
             $areaGraph->set_key($data->getName(), 10);
             $areaGraph->set_values($data->getValues());
             $areaGraph->set_tooltip($data->getTooltip());
             return $areaGraph;
         case Gpf_Rpc_Chart::CHART_TYPE_BAR_OUTLINE:
             $barGraph = new OFC_Charts_Bar();
             $barGraph->set_alpha(50);
             $barGraph->set_colour($data->getColor());
             $barGraph->set_key($data->getName(), 10);
             $barGraph->set_values($data->getValues());
             $barGraph->set_tooltip($data->getTooltip());
             return $barGraph;
         case Gpf_Rpc_Chart::CHART_TYPE_LINE_DOT:
             $lineDotGraph = new OFC_Charts_Line_Dot();
             $lineDotGraph->set_width(3);
             $lineDotGraph->set_dot_size(3);
             $lineDotGraph->set_colour($data->getColor());
             $lineDotGraph->set_key($data->getName(), 10);
             $lineDotGraph->set_values($data->getValues());
             $lineDotGraph->set_tooltip($data->getTooltip());
             return $lineDotGraph;
         default:
             $lineGraph = new OFC_Charts_Line();
             $lineGraph->set_width(3);
             $lineGraph->set_dot_size(3);
             $lineGraph->set_colour($data->getColor());
             $lineGraph->set_key($data->getName(), 10);
             $lineGraph->set_values($data->getValues());
             $lineGraph->set_tooltip($data->getTooltip());
             return $lineGraph;
     }
 }
 /**
  * @Route("/{anno}/{mes}/panel_proyeccion_nuevos_ingresos_marco_data.json", name="panel_proyeccion_nuevos_ingresos_marco_data", defaults={"anno"="2013","mes"="01"}, options={"expose"=true})
  */
 public function panelProyeccionNuevosIngresosMarcoAction($anno, $mes)
 {
     include_once __DIR__ . "/../Util/OFC/OFC_Chart.php";
     $title = new \OFC_Elements_Title('Proyección ingresos por contratos marco ' . $anno);
     //Me conecto a la BD y pregunto por los ingresos del año:
     $ingresos = array();
     //El primer indice lo lleno con ceros:
     foreach ($this->meses as $key => $value) {
         $ingresos[] = 0;
     }
     $sql = "SELECT MONTH(date_closed) as MES, SUM( CASE 1 WHEN ( (DATEDIFF('" . $anno . "-12-31',opportunities_cstm.fecha_de_inicio_ejecucion_c) > 1) AND (opportunities_cstm.fecha_fin_contrato_c > '" . $anno . "-12-31')) THEN ROUND((amount * (DATEDIFF('" . $anno . "-12-31',opportunities_cstm.fecha_de_inicio_ejecucion_c)/DATEDIFF(opportunities_cstm.fecha_fin_contrato_c,opportunities_cstm.fecha_de_inicio_ejecucion_c))),2)    WHEN (DATEDIFF('" . $anno . "-12-31',opportunities_cstm.fecha_de_inicio_ejecucion_c) < 1) THEN 0  WHEN (DATEDIFF('" . $anno . "-12-31',opportunities_cstm.fecha_fin_contrato_c) > -1) THEN amount  END) as SUMA FROM opportunities INNER JOIN opportunities_cstm ON opportunities_cstm.id_c = opportunities.id WHERE deleted = 0 AND sales_stage = 'Closed Won' AND YEAR(date_closed) = " . $anno . " AND opportunities_cstm.contrato_marzo_c = 1  GROUP BY MES ORDER BY MES ASC;\n";
     $stmt = $this->container->get('doctrine')->getManager()->getConnection()->prepare($sql);
     $stmt->execute();
     foreach ($stmt->fetchAll() as $data) {
         $ingresos[$data["MES"] - 1] = (int) $data["SUMA"];
     }
     $ingresos = array_slice($ingresos, 0, $mes);
     $this->acumulate($ingresos);
     $line_dot = new \OFC_Charts_Line();
     $line_dot->set_values($ingresos);
     $line_dot->set_key("Ingresos", 10);
     $line_dot->set_width(1);
     $line_dot->set_colour('#FF0000');
     $line_dot->set_dot_size(3);
     //Me conecto a la BD y pregunto por la proyeccion del año:
     $proyecciones = array();
     //El primer indice lo lleno con ceros:
     foreach ($this->meses as $key => $value) {
         $proyecciones[] = 0;
     }
     $sql = "SELECT MONTH(date_closed) as MES, SUM( ( CASE 1 WHEN ( (DATEDIFF('" . $anno . "-12-31',opportunities_cstm.fecha_de_inicio_ejecucion_c) > 1) AND (opportunities_cstm.fecha_fin_contrato_c > '" . $anno . "-12-31')) THEN ROUND((amount * (DATEDIFF('" . $anno . "-12-31',opportunities_cstm.fecha_de_inicio_ejecucion_c)/DATEDIFF(opportunities_cstm.fecha_fin_contrato_c,opportunities_cstm.fecha_de_inicio_ejecucion_c))),2)    WHEN (DATEDIFF('" . $anno . "-12-31',opportunities_cstm.fecha_de_inicio_ejecucion_c) < 1) THEN 0  WHEN (DATEDIFF('" . $anno . "-12-31',opportunities_cstm.fecha_fin_contrato_c) > -1) THEN amount  END)  * IFNULL(probabiidad_adjudicacion_c/100,0) ) as SUMA FROM opportunities INNER JOIN opportunities_cstm ON opportunities_cstm.id_c = opportunities.id WHERE deleted = 0 AND sales_stage IN ('APROBADO','EN_ESTUDIO','PROSPECCION_CONTINGENTE','PROSPECCION_GENERAL') AND YEAR(date_closed) = " . $anno . "  AND opportunities_cstm.contrato_marzo_c = 1 GROUP BY MES ORDER BY MES ASC;\n";
     $stmt = $this->container->get('doctrine')->getManager()->getConnection()->prepare($sql);
     $stmt->execute();
     foreach ($stmt->fetchAll() as $data) {
         $proyecciones[$data["MES"] - 1] = (int) $data["SUMA"];
     }
     //La proyección del mes actual es la ultima de los ingresos.
     $proyecciones[$mes - 1] = $proyecciones[$mes - 1] + $ingresos[$mes - 1];
     $this->acumulate($proyecciones);
     $line_dot_proyeccion = new \OFC_Charts_Line();
     $line_dot_proyeccion->set_values($proyecciones);
     $line_dot_proyeccion->set_key("Estimado", 10);
     $line_dot_proyeccion->set_width(1);
     $line_dot_proyeccion->set_colour('#41DB00');
     $line_dot_proyeccion->set_dot_size(3);
     //Metas
     $sql = "SELECT enero,febrero,marzo,abril,mayo,junio,julio,agosto,septiembre,octubre,noviembre,diciembre FROM metas_metas WHERE anno = 2013 AND deleted = 0 AND anno = " . $anno . " and es_marco = 1 LIMIT 1";
     $stmt = $this->container->get('doctrine')->getManager()->getConnection()->prepare($sql);
     $stmt->execute();
     $metas = array(0 => 0);
     foreach ($stmt->fetchAll() as $data) {
         $metas[0] = (int) $data["enero"];
         $metas[1] = (int) $data["febrero"];
         $metas[2] = (int) $data["marzo"];
         $metas[3] = (int) $data["abril"];
         $metas[4] = (int) $data["mayo"];
         $metas[5] = (int) $data["junio"];
         $metas[6] = (int) $data["julio"];
         $metas[7] = (int) $data["agosto"];
         $metas[8] = (int) $data["septiembre"];
         $metas[9] = (int) $data["octubre"];
         $metas[10] = (int) $data["noviembre"];
         $metas[11] = (int) $data["diciembre"];
     }
     $line_dot_metas = new \OFC_Charts_Line();
     $line_dot_metas->set_values($metas);
     $line_dot_metas->set_key("Metas", 10);
     $line_dot_metas->set_width(1);
     $line_dot_metas->set_colour('#1240AB');
     $line_dot_metas->set_dot_size(3);
     $x = new \OFC_Elements_Axis_X();
     $x->set_labels_from_array($this->meses);
     $y = new \OFC_Elements_Axis_Y();
     $max_avg = max($ingresos);
     $max_avg = $max_avg > max($proyecciones) ? $max_avg : max($proyecciones);
     $max = $max_avg > max($metas) ? $max_avg : max($metas);
     $max = round($max * 1.25, -3);
     $y->set_range(0, $max, round($max / 4, 0));
     $chart = new \OFC_Chart();
     $chart->set_bg_colour('#FFFFFF');
     $chart->set_title($title);
     $chart->add_element($line_dot);
     $chart->add_element($line_dot_proyeccion);
     $chart->add_element($line_dot_metas);
     $chart->set_x_axis($x);
     $chart->set_y_axis($y);
     $response = new Response($chart->toPrettyString());
     $response->headers->set('Content-Type', 'application/json');
     return $response;
 }
Beispiel #5
0
/**
 * $array['title']
 * $array['legend_y']
 * $array['legend_x']
 * $array['values']
 * $array['values_key']
 * $array['range_max']
 * $array['range_step']
 * @param $array
 * @return unknown_type
 */
function create_chart_data($array)
{
    if (!$array) {
        return;
    }
    require_once 'OFC/OFC_Chart.php';
    $chart = new OFC_Chart();
    $chart->set_bg_colour('#ffffff');
    $title = new OFC_Elements_Title($array['title']);
    $title->set_style('{color: #567300; font-size: 16px; font-weight:bold;}');
    $chart->set_title($title);
    $yl = new OFC_Elements_Legend_Y($array['legend_y']);
    $yl->set_style('{font-size:18px;}');
    $chart->set_y_legend($yl);
    $xl = new OFC_Elements_Legend_X($array['legend_x']);
    $xl->set_style('{font-size:18px;color:#Ff0}');
    $chart->set_x_legend($xl);
    $elements = array();
    $colors = array('', '#CC00AA', '#9C48F0', '#b0de09', '#0d8ecf', '#ff6600', '#fcd202', '#E2EBFF', '#AAAAAA');
    foreach ($array['values'] as $k => $v) {
        ksort($v, SORT_STRING);
        $line = new OFC_Charts_Line();
        $line->set_key($array['values_key'][$k], 12);
        $colors[$k] ? $line->set_colour($colors[$k]) : '';
        $line->set_values(array_values($v));
        $default_dot = new OFC_Charts_Line_Dot();
        $default_dot->tooltip('#x_label#<br>#val#');
        $line->set_default_dot_style($default_dot);
        $elements[] = $line;
        $array['values'][$k] =& $v;
    }
    foreach ($elements as $element) {
        $chart->add_element($element);
    }
    $x = new OFC_Elements_Axis_X();
    $x->colour = '#909090';
    $x_axis_labels = new OFC_Elements_Axis_X_Label_Set();
    $x->set_steps($array['show_step']);
    $x_axis_labels->set_steps($array['show_step']);
    if (is_array($array['values'][0])) {
        $keys = array_keys($array['values'][0]);
    } else {
        $keys = array_keys($array['values']);
    }
    $x_axis_labels->set_labels($keys);
    $x_axis_labels->set_size(12);
    $x_axis_labels->set_colour('#Ff0');
    $x_axis_labels->set_rotate('-45');
    $x->set_labels($x_axis_labels);
    $chart->set_x_axis($x);
    $y = new OFC_Elements_Axis_Y();
    $range_min = isset($array['range_min']) ? $array['range_min'] : 0;
    $y->set_range($range_min, $array['range_max'], $array['range_step']);
    $chart->set_y_axis($y);
    return $chart->toPrettyString();
}