<?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!');
}
}
|