PHP Classes

File: src/Command/GenGraphCommand.php

Recommend this page to a friend!
  Classes of Joseluis Laso   PHP Stats Graphs   src/Command/GenGraphCommand.php   Download  
File: src/Command/GenGraphCommand.php
Role: Class source
Content type: text/plain
Description: Class source
Class: PHP Stats Graphs
Generate SVG charts from sample data
Author: By
Last change:
Date: 7 years ago
Size: 2,376 bytes
 

Contents

Class file image Download
<?php

namespace JLaso\SimpleStats\Command;

use
JLaso\SimpleStats\Graph\BaseGraph;
use
JLaso\SimpleStats\Graph\Scatter;
use
Symfony\Component\Console\Command\Command;
use
Symfony\Component\Console\Input\InputArgument;
use
Symfony\Component\Console\Input\InputInterface;
use
Symfony\Component\Console\Input\InputOption;
use
Symfony\Component\Console\Output\OutputInterface;

class
GenGraphCommand extends Command
{
    protected function
configure()
    {
       
$this
           
->setName('graph:create')
            ->
setDescription('Create graph')
            ->
addOption('graph', null, InputOption::VALUE_REQUIRED, 'Graph type')
            ->
addOption('event', null, InputOption::VALUE_REQUIRED, 'Event name')
            ->
addOption('width', null, InputOption::VALUE_OPTIONAL, 'Graph width', 600)
            ->
addOption('height', null, InputOption::VALUE_OPTIONAL, 'Graph height', 480)
            ->
addOption('start', null, InputOption::VALUE_OPTIONAL, 'Start date', 0)
            ->
addOption('end', null, InputOption::VALUE_OPTIONAL, 'End date', 99999999999)
            ->
addOption('title', null, InputOption::VALUE_OPTIONAL, 'Report title', 'This is the title')
            ->
addOption('output', null, InputOption::VALUE_OPTIONAL, 'Output file', 'temp.svg.html')
        ;
    }

    protected function
execute(InputInterface $input, OutputInterface $output)
    {
       
$start = microtime(true);
       
$outputFile = $input->getOption('output');
       
$width = $input->getOption('width');
       
$height = $input->getOption('height');
       
$title = $input->getOption('title');
       
$startDate = $input->getOption('start');
       
$endDate = $input->getOption('end');
       
$sourceEvent = $input->getOption('event');
       
       
$graphType = ucfirst(strtolower($input->getOption('graph')));
        switch (
$graphType) {
            case
'Scatter':
               
$graph = Scatter::getInstance();
                break;

            default:
                throw new \
Exception("Graph type '{$graphType}' not recognized!");
        }
       
       
/** @var BaseGraph $graph */
       
$graph->draw($title, $sourceEvent, array($startDate, $endDate), $width, $height, $outputFile);
       
$output->writeln('Graph generated on '.$outputFile.' in '.intval((microtime(true)-$start)*1000).' msec');
       
$output->writeln('Done!');
    }
}