Hi,
thanks for your response on how to use collection graph, I have another issue. When I use the code below to fetch data for some users, if some of the users do not have a record on either "Results" or "Colleagues" table, nothing is passed to the "ShowResults chunk" which is a template displaying a table with place holders.
I want the snippet to be able to display data on the chunk irrespective of how many tables in the database have values in them. the snippet and chunk code is stated below
Code for the snippet
<?php
$path = MODX_CORE_PATH . 'components/grades/';
$username = $modx->user->get('username');
$result = $modx->addPackage('grades',$path .
'model/','grade_');
if (! $result) {
return 'failed to add package';
} else {
$output = '<p>added Package</p>';
}
$query = $modx->newQuery('Results');
$query->innerJoin('Colleagues','Colleagues','Colleagues.username = Results.username' );
$query->innerJoin('Results3','Results3','Results3.username = Results.username' );
$query->innerJoin('Results4','Results4','Results4.username = Results.username' );
$query->innerJoin('Results5','Results5','Results5.username = Results.username' );
$query->innerJoin('Results6','Results6','Results6.username = Results.username' );
$query->innerJoin('Results7','Results7','Results7.username = Results.username' );
$query->innerJoin('Results8','Results8','Results8.username = Results.username' );
$query->innerJoin('Results9','Results9','Results9.username = Results.username' );
$query->innerJoin('Results10','Results10','Results10.username = Results.username' );
$query->innerJoin('Results11','Results11','Results11.username = Results.username' );
$query->innerJoin('Results12','Results12','Results12.username = Results.username' );
$query->innerJoin('Results13','Results13','Results13.username = Results.username' );
$query->innerJoin('Results14','Results14','Results14.username = Results.username' );
$query->innerJoin('Results15','Results15','Results15.username = Results.username' );
$query->innerJoin('Results16','Results16','Results16.username = Results.username' );
$query->where(array(
'Results.username'=> $username,
'Colleagues.username' =>$username,
'Results3.username' =>$username,
'Results4.username' =>$username,
'Results5.username' =>$username,
'Results6.username' =>$username,
'Results7.username' =>$username,
'Results8.username' =>$username,
'Results9.username' =>$username,
'Results10.username' =>$username,
'Results11.username' =>$username,
'Results12.username' =>$username,
'Results13.username' =>$username,
'Results14.username' =>$username,
'Results15.username' =>$username,
'Results16.username' =>$username
));
//$query->andCondition(array('Colleagues.username' =>$username));
$query->select(array('Results.*','Colleagues.*', 'Results3.*', 'Results4.*', 'Results5.*', 'Results6.*', 'Results7.*', 'Results8.*', 'Results9.*', 'Results10.*', 'Results11.*', 'Results12.*', 'Results13.*', 'Results14.*', 'Results15.*', 'Results16.*'));
$grades = $modx->getCollection('Results',$query);
$output .= '<p>Total: '. count($grades) . '</p>';
foreach($grades as $grade) {
$fields = $grade->toArray();
$output .= $modx->getChunk('ShowResults', $fields);
}
return $output;
Chunk to display data and graph
<p class="Results">
<html>
<head>
<style>
table, th, td {
border: 1px solid black;
border-collapse: collapse;
}
th, td {
padding: 5px;
text-align: left;
}
</style>
</head>
<body>
<h2>Questionnaire Results</h2>
<table style="width:100%">
<tr>
<th></th>
<th></th>
<th colspan="11">Round1</th>
<th></th>
<th colspan="10">Round2</th>
</tr>
<tr>
<th></th>
<th></th>
<th>Self</th>
<th colspan="10">Colleague Evaluation</th>
<th></th>
<th colspan="10">Colleague Evaluation</th>
</tr>
<tr>
<th></th>
<th></th>
<th></th>
<th>A</th>
<th>B</th>
<th>C</th>
<th>D</th>
<th>E</th>
<th>F</th>
<th>G</th>
<th>H</th>
<th>Total</th>
<th>Average</th>
<th></th>
<th>J</th>
<th>K</th>
<th>L</th>
<th>M</th>
<th>N</th>
<th>O</th>
<th>P</th>
<th>Q</th>
<th>Total</th>
<th>Average</th>
</tr>
<tr>
<td>X1</td>
<td>How well do I establish positive working relationships with colleagues?</td>
<td>[[+SX1]]</td>
<td>[[+X1]]</td>
<td>[[+BX1]]</td>
<td>[[+CX1]]</td>
<td>[[+DX1]]</td>
<td>[[+EX1]]</td>
<td>[[+FX1]]</td>
<td>[[+GX1]]</td>
<td>[[+HX1]]</td>
<td></td>
<td></td>
<td></td>
<td>[[+JX1]]</td>
<td>[[+KX1]]</td>
<td>[[+LX1]]</td>
<td>[[+MX1]]</td>
<td>[[+NX1]]</td>
<td>[[+OX1]]</td>
<td>[[+PX1]]</td>
<td>[[+QX1]]</td>
<td></td>
<td></td>
</tr>
<tr>
<td>X2</td>
<td>How often do I use praise?</td>
<td>[[+SX2]]</td>
<td>[[+X2]]</td>
<td>[[+BX2]]</td>
<td>[[+CX2]]</td>
<td>[[+DX2]]</td>
<td>[[+EX2]]</td>
<td>[[+FX2]]</td>
<td>[[+GX2]]</td>
<td>[[+HX2]]</td>
<td></td>
<td></td>
<td></td>
<td>[[+JX2]]</td>
<td>[[+KX2]]</td>
<td>[[+LX2]]</td>
<td>[[+MX2]]</td>
<td>[[+NX2]]</td>
<td>[[+OX2]]</td>
<td>[[+PX2]]</td>
<td>[[+QX2]]</td>
<td></td>
<td></td>
</tr>
<tr>
<td>X3</td>
<td>How well do I communicate what I think and want?</td>
<td>[[+SX3]]</td>
<td>[[+X3]]</td>
<td>[[+BX3]]</td>
<td>[[+CX3]]</td>
<td>[[+DX3]]</td>
<td>[[+EX3]]</td>
<td>[[+FX3]]</td>
<td>[[+GX3]]</td>
<td>[[+HX3]]</td>
<td></td>
<td></td>
<td></td>
<td>[[+JX3]]</td>
<td>[[+KX3]]</td>
<td>[[+LX3]]</td>
<td>[[+MX3]]</td>
<td>[[+NX3]]</td>
<td>[[+OX3]]</td>
<td>[[+PX3]]</td>
<td>[[+QX3]]</td>
<td></td>
<td></td>
</tr>
<tr>
<td>X4</td>
<td>Am I open and honest?</td>
<td>[[+SX4]]</td>
<td>[[+X4]]</td>
<td>[[+BX4]]</td>
<td>[[+CX4]]</td>
<td>[[+DX4]]</td>
<td>[[+EX4]]</td>
<td>[[+FX4]]</td>
<td>[[+GX4]]</td>
<td>[[+HX4]]</td>
<td></td>
<td></td>
<td></td>
<td>[[+JX4]]</td>
<td>[[+KX4]]</td>
<td>[[+LX4]]</td>
<td>[[+MX4]]</td>
<td>[[+NX4]]</td>
<td>[[+OX4]]</td>
<td>[[+PX4]]</td>
<td>[[+QX4]]</td>
<td></td>
<td></td>
</tr>
<tr>
<td>X5</td>
<td>Grade me on my concern for colleagues</td>
<td>[[+SX5]]</td>
<td>[[+X5]]</td>
<td>[[+BX5]]</td>
<td>[[+CX5]]</td>
<td>[[+DX5]]</td>
<td>[[+EX5]]</td>
<td>[[+FX5]]</td>
<td>[[+GX5]]</td>
<td>[[+HX5]]</td>
<td></td>
<td></td>
<td></td>
<td>[[+JX5]]</td>
<td>[[+KX5]]</td>
<td>[[+LX5]]</td>
<td>[[+MX5]]</td>
<td>[[+NX5]]</td>
<td>[[+OX5]]</td>
<td>[[+PX5]]</td>
<td>[[+QX5]]</td>
<td></td>
<td></td>
</tr>
<tr>
<td>X6</td>
<td>Grade me on my concern for the quality of SystmOne and TPP</td>
<td>[[+SX6]]</td>
<td>[[+X6]]</td>
<td>[[+BX6]]</td>
<td>[[+CX6]]</td>
<td>[[+DX6]]</td>
<td>[[+EX6]]</td>
<td>[[+FX6]]</td>
<td>[[+GX6]]</td>
<td>[[+HX6]]</td>
<td></td>
<td></td>
<td></td>
<td>[[+JX6]]</td>
<td>[[+KX6]]</td>
<td>[[+LX6]]</td>
<td>[[+MX6]]</td>
<td>[[+NX6]]</td>
<td>[[+OX6]]</td>
<td>[[+PX6]]</td>
<td>[[+QX6]]</td>
<td></td>
<td></td>
</tr>
<tr>
<td>X7</td>
<td>Grade me on my personal attitude</td>
<td>[[+SX7]]</td>
<td>[[+X7]]</td>
<td>[[+BX7]]</td>
<td>[[+CX7]]</td>
<td>[[+DX7]]</td>
<td>[[+EX7]]</td>
<td>[[+FX7]]</td>
<td>[[+GX7]]</td>
<td>[[+HX7]]</td>
<td></td>
<td></td>
<td></td>
<td>[[+JX7]]</td>
<td>[[+KX7]]</td>
<td>[[+LX7]]</td>
<td>[[+MX7]]</td>
<td>[[+NX7]]</td>
<td>[[+OX7]]</td>
<td>[[+PX7]]</td>
<td>[[+QX7]]</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Y8</td>
<td>Grade me on how open I am to criticism</td>
<td>[[+SY8]]</td>
<td>[[+Y8]]</td>
<td>[[+BY8]]</td>
<td>[[+CY8]]</td>
<td>[[+DY8]]</td>
<td>[[+EY8]]</td>
<td>[[+FY8]]</td>
<td>[[+GY8]]</td>
<td>[[+HY8]]</td>
<td></td>
<td></td>
<td></td>
<td>[[+JY8]]</td>
<td>[[+KY8]]</td>
<td>[[+LY8]]</td>
<td>[[+MY8]]</td>
<td>[[+NY8]]</td>
<td>[[+OY8]]</td>
<td>[[+PY8]]</td>
<td>[[+QY8]]</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Y9</td>
<td>Do I speak up when things go wrong or when I have a solution to a problem?</td>
<td>[[+SY9]]</td>
<td>[[+Y9]]</td>
<td>[[+BY9]]</td>
<td>[[+CY9]]</td>
<td>[[+DY9]]</td>
<td>[[+EY9]]</td>
<td>[[+FY9]]</td>
<td>[[+GY9]]</td>
<td>[[+HY9]]</td>
<td></td>
<td></td>
<td></td>
<td>[[+JY9]]</td>
<td>[[+KY9]]</td>
<td>[[+LY9]]</td>
<td>[[+MY9]]</td>
<td>[[+NY9]]</td>
<td>[[+OY9]]</td>
<td>[[+PY9]]</td>
<td>[[+QY9]]</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Y10</td>
<td>Do I speak up in group situations?</td>
<td>[[+SY10]]</td>
<td>[[+Y10]]</td>
<td>[[+BY10]]</td>
<td>[[+CY10]]</td>
<td>[[+DY10]]</td>
<td>[[+EY10]]</td>
<td>[[+FY10]]</td>
<td>[[+GY10]]</td>
<td>[[+HY10]]</td>
<td></td>
<td></td>
<td></td>
<td>[[+JY10]]</td>
<td>[[+KY10]]</td>
<td>[[+LY10]]</td>
<td>[[+MY10]]</td>
<td>[[+NY10]]</td>
<td>[[+OY10]]</td>
<td>[[+PY10]]</td>
<td>[[+QY10]]</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Y11</td>
<td>Do I ask questions when I am uncertain?</td>
<td>[[+SY11]]</td>
<td>[[+Y11]]</td>
<td>[[+BY11]]</td>
<td>[[+CY11]]</td>
<td>[[+DY11]]</td>
<td>[[+EY11]]</td>
<td>[[+FY11]]</td>
<td>[[+GY11]]</td>
<td>[[+HY11]]</td>
<td></td>
<td></td>
<td></td>
<td>[[+JY11]]</td>
<td>[[+KY11]]</td>
<td>[[+LY11]]</td>
<td>[[+MY11]]</td>
<td>[[+NY11]]</td>
<td>[[+OY11]]</td>
<td>[[+PY11]]</td>
<td>[[+QY11]]</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Y12</td>
<td>Do I feedback enough?</td>
<td>[[+SY12]]</td>
<td>[[+Y12]]</td>
<td>[[+BY12]]</td>
<td>[[+CY12]]</td>
<td>[[+DY12]]</td>
<td>[[+EY12]]</td>
<td>[[+FY12]]</td>
<td>[[+GY12]]</td>
<td>[[+HY12]]</td>
<td></td>
<td></td>
<td></td>
<td>[[+JY12]]</td>
<td>[[+KY12]]</td>
<td>[[+LY12]]</td>
<td>[[+MY12]]</td>
<td>[[+NY12]]</td>
<td>[[+OY12]]</td>
<td>[[+PY12]]</td>
<td>[[+QY12]]</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Y13</td>
<td>Do I stand up to others?</td>
<td>[[+SY13]]</td>
<td>[[+Y13]]</td>
<td>[[+BY13]]</td>
<td>[[+CY13]]</td>
<td>[[+DY13]]</td>
<td>[[+EY13]]</td>
<td>[[+FY13]]</td>
<td>[[+GY13]]</td>
<td>[[+HY13]]</td>
<td></td>
<td></td>
<td></td>
<td>[[+JY13]]</td>
<td>[[+KY13]]</td>
<td>[[+LY13]]</td>
<td>[[+MY13]]</td>
<td>[[+NY13]]</td>
<td>[[+OY13]]</td>
<td>[[+PY13]]</td>
<td>[[+QY13]]</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Y14</td>
<td>Do I stay calm under pressure?</td>
<td>[[+SY14]]</td>
<td>[[+Y14]]</td>
<td>[[+BY14]]</td>
<td>[[+CY14]]</td>
<td>[[+DY14]]</td>
<td>[[+EY14]]</td>
<td>[[+FY14]]</td>
<td>[[+GY14]]</td>
<td>[[+HY14]]</td>
<td></td>
<td></td>
<td></td>
<td>[[+JY14]]</td>
<td>[[+KY14]]</td>
<td>[[+LY14]]</td>
<td>[[+MY14]]</td>
<td>[[+NY14]]</td>
<td>[[+OY14]]</td>
<td>[[+PY14]]</td>
<td>[[+QY14]]</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Y15</td>
<td>Am I assertive</td>
<td>[[+SY15]]</td>
<td>[[+Y15]]</td>
<td>[[+BY15]]</td>
<td>[[+CY15]]</td>
<td>[[+DY15]]</td>
<td>[[+EY15]]</td>
<td>[[+FY15]]</td>
<td>[[+GY15]]</td>
<td>[[+HY15]]</td>
<td></td>
<td></td>
<td></td>
<td>[[+JY15]]</td>
<td>[[+KY15]]</td>
<td>[[+LY15]]</td>
<td>[[+MY15]]</td>
<td>[[+NY15]]</td>
<td>[[+OY15]]</td>
<td>[[+PY15]]</td>
<td>[[+QY15]]</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Z16</td>
<td>Do I take on responsibility?</td>
<td>[[+SZ16]]</td>
<td>[[+Z16]]</td>
<td>[[+BZ16]]</td>
<td>[[+CZ16]]</td>
<td>[[+DZ16]]</td>
<td>[[+EZ16]]</td>
<td>[[+FZ16]]</td>
<td>[[+GZ16]]</td>
<td>[[+HZ16]]</td>
<td></td>
<td></td>
<td></td>
<td>[[+JZ16]]</td>
<td>[[+KZ16]]</td>
<td>[[+LZ16]]</td>
<td>[[+MZ16]]</td>
<td>[[+NZ16]]</td>
<td>[[+OZ16]]</td>
<td>[[+PZ16]]</td>
<td>[[+QZ16]]</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Z17</td>
<td>Am I willing to take on new challenges?</td>
<td>[[+SZ17]]</td>
<td>[[+Z17]]</td>
<td>[[+BZ17]]</td>
<td>[[+CZ17]]</td>
<td>[[+DZ17]]</td>
<td>[[+EZ17]]</td>
<td>[[+FZ17]]</td>
<td>[[+GZ17]]</td>
<td>[[+HZ17]]</td>
<td></td>
<td></td>
<td></td>
<td>[[+JZ17]]</td>
<td>[[+KZ17]]</td>
<td>[[+LZ17]]</td>
<td>[[+MZ17]]</td>
<td>[[+NZ17]]</td>
<td>[[+OZ17]]</td>
<td>[[+PZ17]]</td>
<td>[[+QZ17]]</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Z18</td>
<td>Do I demonstrate a high level of commitment to the quality of my work and my pursuit of excellence?</td>
<td>[[+SZ18]]</td>
<td>[[+Z18]]</td>
<td>[[+BZ18]]</td>
<td>[[+CZ18]]</td>
<td>[[+DZ18]]</td>
<td>[[+EZ18]]</td>
<td>[[+FZ18]]</td>
<td>[[+GZ18]]</td>
<td>[[+HZ18]]</td>
<td></td>
<td></td>
<td></td>
<td>[[+JZ18]]</td>
<td>[[+KZ18]]</td>
<td>[[+LZ18]]</td>
<td>[[+MZ18]]</td>
<td>[[+NZ18]]</td>
<td>[[+OZ18]]</td>
<td>[[+PZ18]]</td>
<td>[[+QZ18]]</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Z19</td>
<td>Grade me on my ability to conduct myself professionally</td>
<td>[[+SZ19]]</td>
<td>[[+Z19]]</td>
<td>[[+BZ19]]</td>
<td>[[+CZ19]]</td>
<td>[[+DZ19]]</td>
<td>[[+EZ19]]</td>
<td>[[+FZ19]]</td>
<td>[[+GZ19]]</td>
<td>[[+HZ19]]</td>
<td></td>
<td></td>
<td></td>
<td>[[+JZ19]]</td>
<td>[[+KZ19]]</td>
<td>[[+LZ19]]</td>
<td>[[+MZ19]]</td>
<td>[[+NZ19]]</td>
<td>[[+OZ19]]</td>
<td>[[+PZ19]]</td>
<td>[[+QZ19]]</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Z20</td>
<td>Grade me on my effectiveness and ability to get things done</td>
<td>[[+SZ20]]</td>
<td>[[+Z20]]</td>
<td>[[+BZ20]]</td>
<td>[[+CZ20]]</td>
<td>[[+DZ20]]</td>
<td>[[+EZ20]]</td>
<td>[[+FZ20]]</td>
<td>[[+GZ20]]</td>
<td>[[+HZ20]]</td>
<td></td>
<td></td>
<td></td>
<td>[[+JZ20]]</td>
<td>[[+KZ20]]</td>
<td>[[+LZ20]]</td>
<td>[[+MZ20]]</td>
<td>[[+NZ20]]</td>
<td>[[+OZ20]]</td>
<td>[[+PZ20]]</td>
<td>[[+QZ20]]</td>
<td></td>
<td></td>
</tr>
</table>
</body>
</html>
<html>
<head>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = google.visualization.arrayToDataTable([
['Year', 'Self', 'Others'],
['X1', [[+SX1]], [[+X1]]],
['X2', [[+SX2]], [[+X2]]],
['X3', [[+SX3]], [[+X3]]],
['X4', [[+SX4]], [[+X4]]],
['X5', [[+SX5]], [[+X5]]],
['X6', [[+SX6]], [[+X6]]],
['X7', [[+SX7]], [[+X7]]],
['Y8', [[+SY8]], [[+Y8]]],
['Y9', [[+SY9]], [[+Y9]]],
['Y10', [[+SY10]], [[+Y10]]],
['Y11', [[+SY11]], [[+Y11]]],
['Y12', [[+SY12]], [[+Y12]]],
['Y13', [[+SY13]], [[+Y13]]],
['Y14', [[+SY14]], [[+Y14]]]
]);
var options = {
title: 'Grade'
};
var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
chart.draw(data, options);
}
</script>
</head>
<body>
<div id="chart_div" style="width: 1000px; height: 500px;"></div>
</body>
</html>
</p>