Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 16768 | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |

<?php

namespace LeadersLinked\Library;

use Fpdf\Fpdf;
use Amenadiel\JpGraph\Graph\PieGraph;
use Amenadiel\JpGraph\Plot\PiePlot;
use Amenadiel\JpGraph\Graph\Graph;
use Amenadiel\JpGraph\Plot\LinePlot;
use Amenadiel\JpGraph\Plot\BarPlot;
use Amenadiel\JpGraph\Themes\UniversalTheme;
use Amenadiel\JpGraph\Themes\PastelTheme;
use Amenadiel\JpGraph\Themes\SoftyTheme;
use Laminas\Mvc\I18n\Translator;


class SurveyReport extends FPDF {

    /**
     *
     * @var string
     */
    public $header;
    
    /**
     *
     * @var string
     */
    public $footer;
    
    /**
     *
     * @var string
     */
    public $campaignName;
    
    
    /**
     *
     * @var string
     */
    public $printDate; 
    
    /**
     *
     * @var string
     */
    public $formName;
    
    /**
     *
     * @var string
     */
    public $formText;
    
    /**
     *
     * @var Translator
     */
    public $translator;

    
    
    
    /**
     * Header PDF
     */
    function Header() {
        
        if(empty($this->printDate)) {
            $this->printDate = date('d/m/Y H:i a');
        }
        
        if ($this->header != '') {
            $this->Image($this->header, 10, 8, 190);
            $this->SetY(55);
        }
        
        
        
        $s = Functions::utf8_decode($this->printDate . '  ' . $this->translator->translate('LABEL_PAGE') . ' : ' . $this->PageNo());
        $this->SetFont('Arial', '', 10);
        $this->SetY(12);
        $this->Cell(190, 10, $s, 0, 0, 'R');
        
        
        $this->SetFont('Arial', 'B', 10);
        $this->SetY(20);
        $this->SetX(45);
        $this->SetFont('Arial', 'B', 10);
        $this->Cell(180, 8, Functions::utf8_decode($this->campaignName), 0, 0, 'L');
        $this->setY($this->getY() + 6);
        
        $this->SetFont('Arial', 'B', 10);
        //$this->SetY(20);
        $this->SetX(45);
        $this->Cell(155, 8, $this->formName, 0, 0, 'L');
        $this->setY($this->getY() + 6);
        
        $this->SetFont('Arial', '', 10);
        // $this->SetY(30);
        $this->SetX(45);
        
        $lines = explode('|-|', wordwrap(Functions::utf8_decode($this->formText), 95, '|-|', true) );
        foreach($lines as $line)
        {
            $this->SetX(45);
            $this->Cell(155, 8, $line, 0, 0, 'L');
            $this->setY($this->getY() + 6);
        }
        
        
        if($this->GetY() < 50) {
            $this->SetY(50);
        }
    }
    
    
    
    function addSection($name, $text)
    {
        $this->SetFont('Arial', 'B', 10);
        $this->setX(10);
        $this->Cell(190, 8, Functions::utf8_decode($name), 0, 0, 'C');
        $this->setY($this->getY() + 6);
        
        $s = Functions::utf8_decode($text);
        $lines = explode('|-|', wordwrap( $s, 115, '|-|', true) );
        foreach($lines as $line)
        {
            $this->setX(10);
            $this->SetFont('Arial', '', 10);
            $this->Cell(155, 8, $line, 0, 0, 'L');
            $this->setY($this->getY() + 6);
            
        }
    }

    /**
     * Footer PDF
     */
    function Footer() {
        if ($this->footer != '') {
            $this->SetY(-40);
            $this->Image($this->footer, 10, $this->getY(), 190);
        }
    }
    /**
     * Create chart PDF
     * @param string[] $labels
     * @param float[] $values
     * @param string $title
     * @param string $filename
     */
    function pieChart($labels, $values, $title, $filename) {
        
        // Setup the graph.
        $graph = new PieGraph(600, 240);
        $graph->SetTheme(new SoftyTheme());
        //$graph->clearTheme();
        //$graph->SetShadow();


        // Create the bar pot
        $bplot = new PiePlot($values);
        $bplot->SetLegends($labels);
        $bplot->SetCenter(0.2);

        // Setup color for gradient fill style
        // Set color for the frame of each bar
        $bplot->SetColor("white");
        $bplot->SetLabelType(PIE_VALUE_PER);
        
        $graph->Add($bplot);
        


        $graph->Stroke($filename);
    }
    


    function barChart($labels, $values, $title, $filename)
    {
        $graph = new Graph(700, count($values) * 100, 'auto');
        $graph->SetScale('textint');
        $graph->clearTheme();
        $graph->SetShadow();
        $graph->Set90AndMargin(130, 30, 60, 30);
        
        $graph->yscale->ticks->SupressZeroLabel(false);
        
        // Setup X-axis labels
        $graph->xaxis->SetTickLabels($labels);
        $graph->xaxis->SetLabelAngle(40);
        

        $bplot = new BarPlot($values);
        $bplot->SetFillColor('orange');

        $bplot->SetShadow();
        $bplot->SetCenter(0.2);
        $bplot->SetWidth(0.6);

        $bplot->value->Show();
        $graph->Add($bplot);

        $graph->Stroke($filename);
    }

     /**
    function borderTable($title, $content) {

        // Header Table
        $this->SetFillColor(204, 204, 204);
        $this->SetDrawColor(0, 0, 0);
        $this->SetLineWidth(0);
        $this->SetFont('Arial', 'B', 9);

        $this->Cell(190, 6, Functions::utf8_decode($title), 1, 0, 'L', true);
        $this->Ln();

        // Body Table
        $this->SetFillColor(225, 255, 255);
        $this->SetTextColor(0);

        foreach ($content as $rs) {
            if (isset($rs['title'])) {

                $this->SetFont('Arial', 'B', 9);
                $this->Cell(50, 10, Functions::utf8_decode($rs['title']), 1, 0, 'L', false);
                $this->MultiCell(140, 10, Functions::utf8_decode($rs['content']), 1, 'L', false);
                $this->Ln();
            } else {

                $this->SetFont('Arial', '', 9);
                $this->MultiCell(190, 6, Functions::utf8_decode($rs['content']), 1, 'L', false);
            }
        }
        $this->Ln(5);
    }*/
    

}