Skip to content
Snippets Groups Projects
Commit dd0a0af3 authored by Tim van Dijen's avatar Tim van Dijen
Browse files

Show proper error message when no data available

parent 0d1599a2
No related branches found
No related tags found
No related merge requests found
......@@ -19,38 +19,42 @@ echo '<tr><td class="selecttime_icon"><img src="' . SimpleSAML\Utils\HTTP::getBa
echo '<td>';
echo '<form action="#">';
echo $this->data['post_rule'];
echo '<select onchange="submit();" name="rule">';
foreach ($this->data['available.rules'] as $key => $rule) {
if ($key === $this->data['selected.rule']) {
echo '<option selected="selected" value="' . $key . '">' . $rule['name'] . '</option>';
} else {
echo '<option value="' . $key . '">' . $rule['name'] . '</option>';
if (!empty($this->data['available.rules'])) {
echo '<select onchange="submit();" name="rule">';
foreach ($this->data['available.rules'] as $key => $rule) {
if ($key === $this->data['selected.rule']) {
echo '<option selected="selected" value="' . $key . '">' . $rule['name'] . '</option>';
} else {
echo '<option value="' . $key . '">' . $rule['name'] . '</option>';
}
}
echo '</select>';
}
echo '</select></form>';
echo '</td>';
echo '</form></td>';
// Select delimiter
echo '<td class="td_right">';
echo '<form action="#">';
echo $this->data['post_d'];
echo '<select onchange="submit();" name="d">';
foreach ($this->data['availdelimiters'] as $key => $delim) {
$delimName = $delim;
if (array_key_exists($delim, $this->data['delimiterPresentation'])) {
$delimName = $this->data['delimiterPresentation'][$delim];
}
if ($key == '_') {
echo '<option value="_">Total</option>';
} elseif (isset($_REQUEST['d']) && $delim == $_REQUEST['d']) {
echo '<option selected="selected" value="' . htmlspecialchars($delim) . '">' . htmlspecialchars($delimName) . '</option>';
} else {
echo '<option value="' . htmlspecialchars($delim) . '">' . htmlspecialchars($delimName) . '</option>';
if(!empty($this->data['availdelimiters'])) {
echo '<select onchange="submit();" name="d">';
foreach ($this->data['availdelimiters'] as $key => $delim) {
$delimName = $delim;
if (array_key_exists($delim, $this->data['delimiterPresentation'])) {
$delimName = $this->data['delimiterPresentation'][$delim];
}
if ($key == '_') {
echo '<option value="_">Total</option>';
} elseif (isset($_REQUEST['d']) && $delim == $_REQUEST['d']) {
echo '<option selected="selected" value="' . htmlspecialchars($delim) . '">' . htmlspecialchars($delimName) . '</option>';
} else {
echo '<option value="' . htmlspecialchars($delim) . '">' . htmlspecialchars($delimName) . '</option>';
}
}
echo '</select>';
}
echo '</select></form>';
echo '</td></tr>';
echo '</form></td></tr>';
echo '</table>';
......@@ -70,30 +74,34 @@ if (isset($this->data['available.times.prev'])) {
echo '<td class="td_right">';
echo '<form action="#">';
echo $this->data['post_res'];
echo '<select onchange="submit();" name="res">';
foreach ($this->data['available.timeres'] as $key => $timeresname) {
if ($key == $this->data['selected.timeres']) {
echo '<option selected="selected" value="' . $key . '">' . $timeresname . '</option>';
} else {
echo '<option value="' . $key . '">' . $timeresname . '</option>';
if (!empty($this->data['available.timeres'])) {
echo '<select onchange="submit();" name="res">';
foreach ($this->data['available.timeres'] as $key => $timeresname) {
if ($key == $this->data['selected.timeres']) {
echo '<option selected="selected" value="' . $key . '">' . $timeresname . '</option>';
} else {
echo '<option value="' . $key . '">' . $timeresname . '</option>';
}
}
echo '</select>';
}
echo '</select></form>';
echo '</td>';
echo '</form></td>';
echo '<td class="td_left">';
echo '<form action="#">';
echo $this->data['post_time'];
echo '<select onchange="submit();" name="time">';
foreach ($this->data['available.times'] as $key => $timedescr) {
if ($key == $this->data['selected.time']) {
echo '<option selected="selected" value="' . $key . '">' . $timedescr . '</option>';
} else {
echo '<option value="' . $key . '">' . $timedescr . '</option>';
if (!empty($this->data['available.times'])) {
echo '<select onchange="submit();" name="time">';
foreach ($this->data['available.times'] as $key => $timedescr) {
if ($key == $this->data['selected.time']) {
echo '<option selected="selected" value="' . $key . '">' . $timedescr . '</option>';
} else {
echo '<option value="' . $key . '">' . $timedescr . '</option>';
}
}
echo '</select>';
}
echo '</select></form>';
echo '</td>';
echo '</form></td>';
if (isset($this->data['available.times.next'])) {
echo '<td class="td_right td_next_right"><a href="' . $this->data['get_times_next'] . '">Next »</a></td>';
......@@ -102,94 +110,96 @@ if (isset($this->data['available.times.next'])) {
}
echo '</tr></table>';
echo '<div id="tabdiv"><ul class="tabset_tabs">
<li><a href="#graph">Graph</a></li>
<li><a href="#table">Summary table</a></li>
<li><a href="#debug">Time serie</a></li>
</ul>';
echo '
<div id="graph" class="tabset_content">';
echo '<img src="' . htmlspecialchars($this->data['imgurl']) . '" alt="Graph" />';
echo '<form action="#">';
echo '<p class="p_right">Compare with total from this dataset ';
echo $this->data['post_rule2'];
echo '<select onchange="submit();" name="rule2">';
echo ' <option value="_">None</option>';
foreach ($this->data['available.rules'] as $key => $rule) {
if ($key === $this->data['selected.rule2']) {
echo '<option selected="selected" value="' . $key . '">' . $rule['name'] . '</option>';
} else {
echo '<option value="' . $key . '">' . $rule['name'] . '</option>';
echo '<div id="tabdiv">';
if (!empty($this->data['results'])){
echo '<ul class="tabset_tabs">
<li><a href="#graph">Graph</a></li>
<li><a href="#table">Summary table</a></li>
<li><a href="#debug">Time serie</a></li>
</ul>';
echo '
<div id="graph" class="tabset_content">';
echo '<img src="' . htmlspecialchars($this->data['imgurl']) . '" alt="Graph" />';
echo '<form action="#">';
echo '<p class="p_right">Compare with total from this dataset ';
echo $this->data['post_rule2'];
echo '<select onchange="submit();" name="rule2">';
echo ' <option value="_">None</option>';
foreach ($this->data['available.rules'] as $key => $rule) {
if ($key === $this->data['selected.rule2']) {
echo '<option selected="selected" value="' . $key . '">' . $rule['name'] . '</option>';
} else {
echo '<option value="' . $key . '">' . $rule['name'] . '</option>';
}
}
}
echo '</select></p></form>';
echo '</select></p></form>';
echo '</div>'; // end graph content.
echo '</div>'; // end graph content.
/**
* Handle table view - - - - - -
*/
$classint = array('odd', 'even'); $i = 0;
echo '<div id="table" class="tabset_content">';
/**
* Handle table view - - - - - -
*/
$classint = array('odd', 'even'); $i = 0;
echo '<div id="table" class="tabset_content">';
if (isset($this->data['pieimgurl'])) {
echo '<img src="' . $this->data['pieimgurl'] . '" alt="Pie chart" />';
}
echo '<table class="tableview"><tr><th class="value">Value</th><th class="category">Data range</th></tr>';
foreach ($this->data['summaryDataset'] as $key => $value) {
$clint = $classint[$i++ % 2];
$keyName = $key;
if (array_key_exists($key, $this->data['delimiterPresentation'])) {
$keyName = $this->data['delimiterPresentation'][$key];
if (isset($this->data['pieimgurl'])) {
echo '<img src="' . $this->data['pieimgurl'] . '" alt="Pie chart" />';
}
echo '<table class="tableview"><tr><th class="value">Value</th><th class="category">Data range</th></tr>';
if ($key === '_') {
echo '<tr class="total ' . $clint . '"><td class="value">' . $value . '</td><td class="category">' . $keyName . '</td></tr>';
} else {
echo '<tr class="' . $clint . '"><td class="value">' . $value . '</td><td class="category">' . $keyName . '</td></tr>';
}
}
foreach ($this->data['summaryDataset'] as $key => $value) {
$clint = $classint[$i++ % 2];
echo '</table></div>';
// - - - - - - - End table view - - - - - - -
$keyName = $key;
if (array_key_exists($key, $this->data['delimiterPresentation'])) {
$keyName = $this->data['delimiterPresentation'][$key];
}
echo '<div id="debug" >';
echo '<table class="timeseries">';
echo '<tr><th>Time</th><th>Total</th>';
foreach ($this->data['topdelimiters'] as $key) {
$keyName = $key;
if (array_key_exists($key, $this->data['delimiterPresentation'])) {
$keyName = $this->data['delimiterPresentation'][$key];
if ($key === '_') {
echo '<tr class="total ' . $clint . '"><td class="value">' . $value . '</td><td class="category">' . $keyName . '</td></tr>';
} else {
echo '<tr class="' . $clint . '"><td class="value">' . $value . '</td><td class="category">' . $keyName . '</td></tr>';
}
}
echo'<th>' . $keyName . '</th>';
}
echo '</tr>';
$i = 0;
foreach ($this->data['debugdata'] as $slot => $dd) {
echo '<tr class="' . ((++$i % 2) == 0 ? 'odd' : 'even') . '">';
echo '<td>' . $dd[0] . '</td>';
echo '<td class="datacontent">' . $dd[1] . '</td>';
echo '</table></div>';
// - - - - - - - End table view - - - - - - -
echo '<div id="debug" >';
echo '<table class="timeseries">';
echo '<tr><th>Time</th><th>Total</th>';
foreach ($this->data['topdelimiters'] as $key) {
echo '<td class="datacontent">' . (array_key_exists($key, $this->data['results'][$slot]) ?
$this->data['results'][$slot][$key] : '&nbsp;') . '</td>';
$keyName = $key;
if (array_key_exists($key, $this->data['delimiterPresentation'])) {
$keyName = $this->data['delimiterPresentation'][$key];
}
echo'<th>' . $keyName . '</th>';
}
echo '</tr>';
}
echo '</table>';
$i = 0;
foreach ($this->data['debugdata'] as $slot => $dd) {
echo '<tr class="' . ((++$i % 2) == 0 ? 'odd' : 'even') . '">';
echo '<td>' . $dd[0] . '</td>';
echo '<td class="datacontent">' . $dd[1] . '</td>';
foreach ($this->data['topdelimiters'] as $key) {
echo '<td class="datacontent">' . (array_key_exists($key, $this->data['results'][$slot]) ?
$this->data['results'][$slot][$key] : '&nbsp;') . '</td>';
}
echo '</tr>';
}
echo '</table>';
echo '</div>'; // End debug tab content
echo '</div>'; // End debug tab content
} else {
echo '<h4 align="center">'.$this->data['error'].'</h4>';
echo '<p align="center"><a href="showstats.php">Clear selection</a></p>';
}
echo '</div>'; // End tab div
$this->includeAtTemplateBase('includes/footer.php');
......@@ -42,8 +42,35 @@ $ruleset = new sspmod_statistics_Ruleset($statconfig);
$statrule = $ruleset->getRule($preferRule);
$rule = $statrule->getRuleID();
$dataset = $statrule->getDataset($preferTimeRes, $preferTime);
$dataset->setDelimiter($delimiter);
$t = new SimpleSAML_XHTML_Template($config, 'statistics:statistics.tpl.php');
$t->data['pageid'] = 'statistics';
$t->data['header'] = 'stat';
$t->data['available.rules'] = $ruleset->availableRulesNames();
$t->data['selected.rule']= $rule;
$t->data['selected.rule2']= $preferRule2;
try {
$dataset = $statrule->getDataset($preferTimeRes, $preferTime);
$dataset->setDelimiter($delimiter);
$dataset->aggregateSummary();
$dataset->calculateMax();
if (array_key_exists('output', $_REQUEST) && $_REQUEST['output'] === 'csv') {
header('Content-type: text/csv');
header('Content-Disposition: attachment; filename="simplesamlphp-data.csv"');
$data = $dataset->getDebugData();
foreach ($data as $de) {
if (isset($de[1])) {
echo '"' . $de[0] . '",' . $de[1] . "\n";
}
}
exit;
}
} catch (Exception $e) {
$t->data['error'] = "No data available";
$t->show();
exit;
}
$delimiter = $dataset->getDelimiter();
......@@ -53,9 +80,6 @@ $availableFileSlots = $statrule->availableFileSlots($timeres);
$timeNavigation = $statrule->getTimeNavigation($timeres, $preferTime);
$dataset->aggregateSummary();
$dataset->calculateMax();
$piedata = $dataset->getPieData();
$datasets = array();
......@@ -69,45 +93,33 @@ $maxes[] = $dataset->getMax();
if (isset($preferRule2)) {
$statrule = $ruleset->getRule($preferRule2);
$dataset2 = $statrule->getDataset($preferTimeRes, $preferTime);
$dataset2->aggregateSummary();
$dataset2->calculateMax();
$datasets[] = $dataset2->getPercentValues();
$maxes[] = $dataset2->getMax();
try {
$dataset2 = $statrule->getDataset($preferTimeRes, $preferTime);
$dataset2->aggregateSummary();
$dataset2->calculateMax();
$datasets[] = $dataset2->getPercentValues();
$maxes[] = $dataset2->getMax();
} catch (Exception $e) {
$t->data['error'] = "No data available to compare";
$t->show();
exit;
}
}
$dimx = $statconfig->getValue('dimension.x', 800);
$dimy = $statconfig->getValue('dimension.y', 350);
$grapher = new sspmod_statistics_Graph_GoogleCharts($dimx, $dimy);
if (array_key_exists('output', $_REQUEST) && $_REQUEST['output'] === 'csv') {
header('Content-type: text/csv');
header('Content-Disposition: attachment; filename="simplesamlphp-data.csv"');
$data = $dataset->getDebugData();
foreach ($data as $de) {
if (isset($de[1])) {
echo '"' . $de[0] . '",' . $de[1] . "\n";
}
}
exit;
}
$t = new SimpleSAML_XHTML_Template($config, 'statistics:statistics.tpl.php');
$t->data['pageid'] = 'statistics';
$t->data['header'] = 'stat';
$t->data['imgurl'] = $grapher->show($axis['axis'], $axis['axispos'], $datasets, $maxes);
if (isset($piedata)) {
$t->data['pieimgurl'] = $grapher->showPie( $dataset->getDelimiterPresentationPie(), $piedata);
}
$t->data['available.rules'] = $ruleset->availableRulesNames();
$t->data['available.times'] = $statrule->availableFileSlots($timeres);
$t->data['available.timeres'] = $statrule->availableTimeRes();
$t->data['available.times.prev'] = $timeNavigation['prev'];
$t->data['available.times.next'] = $timeNavigation['next'];
$t->data['selected.rule']= $rule;
$t->data['selected.rule2']= $preferRule2;
$t->data['selected.time'] = $fileslot;
$t->data['selected.timeres'] = $timeres;
$t->data['selected.delimiter'] = $delimiter;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment