From 31b5f041beb94973b4464b5abb8923954421da3c Mon Sep 17 00:00:00 2001 From: Claus Due Date: Mon, 7 Sep 2015 00:36:48 +0200 Subject: [PATCH] [TASK] Allow rendering multiple charts when no counter is specified Action requires token to be present; individual charts to not. As a measure to prevent abuse. --- composer.json | 2 +- composer.lock | 12 ++++++------ src/ChartQuery.php | 19 +++++++++++++++++++ src/NumerologChart.php | 5 ++++- web/index.php | 34 +++++++++++++++++++++++++++++++++- 5 files changed, 63 insertions(+), 9 deletions(-) diff --git a/composer.json b/composer.json index 308e2fd..9932f3d 100644 --- a/composer.json +++ b/composer.json @@ -2,7 +2,7 @@ "name": "namelesscoder/numerolog-lavacharts", "description": "Chart renderer for Numerolog data sources", "require": { - "namelesscoder/numerolog": "^1.0", + "namelesscoder/numerolog": "^1.2", "khill/lavacharts": "^2.5" }, "require-dev": { diff --git a/composer.lock b/composer.lock index 43dd3c2..bd0f841 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "a2f247a7b002d3161ce06e44ea1a8864", + "hash": "55757f68ec7e05bc1b4e2f35ef02278e", "packages": [ { "name": "khill/lavacharts", @@ -60,16 +60,16 @@ }, { "name": "namelesscoder/numerolog", - "version": "1.0.0", + "version": "1.2.5", "source": { "type": "git", "url": "https://github.com/NamelessCoder/numerolog.git", - "reference": "cbb9544099c01d9fd546f60565a975fe597ab8e4" + "reference": "fd2a22dc5d331113b46a5ab392a1cffd36fa3bc5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/NamelessCoder/numerolog/zipball/cbb9544099c01d9fd546f60565a975fe597ab8e4", - "reference": "cbb9544099c01d9fd546f60565a975fe597ab8e4", + "url": "https://api.github.com/repos/NamelessCoder/numerolog/zipball/fd2a22dc5d331113b46a5ab392a1cffd36fa3bc5", + "reference": "fd2a22dc5d331113b46a5ab392a1cffd36fa3bc5", "shasum": "" }, "require": { @@ -89,7 +89,7 @@ } }, "notification-url": "https://packagist.org/downloads/", - "time": "2015-09-05 16:22:40" + "time": "2015-09-06 21:22:05" }, { "name": "nesbot/carbon", diff --git a/src/ChartQuery.php b/src/ChartQuery.php index 06bcda4..ee57cf8 100644 --- a/src/ChartQuery.php +++ b/src/ChartQuery.php @@ -55,6 +55,10 @@ class ChartQuery extends Query { */ protected $count = 20; + /** + * @var boolean + */ + protected $scriptOnly = FALSE; /** * @var array @@ -181,6 +185,21 @@ public function setChartDateTimeFormat($chartDateTimeFormat) { $this->chartDateTimeFormat = $chartDateTimeFormat; } + /** + * @return boolean + */ + public function getScriptOnly() { + return $this->scriptOnly; + } + + /** + * @param boolean $scriptOnly + * @return void + */ + public function setScriptOnly($scriptOnly) { + $this->scriptOnly = $scriptOnly; + } + /** * @return array */ diff --git a/src/NumerologChart.php b/src/NumerologChart.php index e11d1f0..942b505 100644 --- a/src/NumerologChart.php +++ b/src/NumerologChart.php @@ -16,7 +16,7 @@ class NumerologChart extends Lavacharts { * @param ChartQuery $query * @return string */ - public function renderGraphQuery(ChartQuery $query) { + public function renderChartQuery(ChartQuery $query) { if (Query::ACTION_GET !== $query->getAction()) { throw new \RuntimeException('NumerologChart only accepts the Numerolog `get` command'); } @@ -34,6 +34,9 @@ public function renderGraphQuery(ChartQuery $query) { $chart->setOptions($chartAttributes); } $chart->datatable($table); + if ($query->getScriptOnly()) { + return $this->render($chartType, $chartLabel, $query->getChartId()); + } return $this->render($chartType, $chartLabel, $query->getChartId(), array( 'width' => $query->getChartWidth(), 'height' => $query->getChartHeight() diff --git a/web/index.php b/web/index.php index 0ed0aab..53fb06a 100644 --- a/web/index.php +++ b/web/index.php @@ -2,5 +2,37 @@ require_once __DIR__ . '/../vendor/autoload.php'; $query = new \NamelessCoder\NumerologLavacharts\ChartQuery($_GET); +$query->setAction(\NamelessCoder\Numerolog\Query::ACTION_GET); $chart = new \NamelessCoder\NumerologLavacharts\NumerologChart(); -echo $chart->renderGraphQuery($query); + + +if ($query->getCounter()) { + echo $chart->renderChartQuery($query); +} + +if (!$query->getCounter()) { + $countersQuery = clone $query; + $countersQuery->setAction(\NamelessCoder\Numerolog\Query::ACTION_COUNTERS); + $client = new \NamelessCoder\Numerolog\Client(); + $client->setPackage($query->getPackage()); + $client->setToken($query->getToken()); + $counters = $client->query($countersQuery); + foreach (array_keys($counters['results']) as $index => $counterName) { + $counterNumber = $i + 1; + $query->setCounter($counterName); + $query->setChartId('chart-' . $counterNumber); + $query->setChartLabel('chart-' . $counterNumber); + if (!$query->getScriptOnly()) { + echo $chart->renderChartQuery($query); + $query->setScriptOnly(TRUE); + } else { + echo sprintf( + '
', + $counterNumber, + $query->getChartWidth(), + $query->getChartHeight() + ); + } + } +} +