Skip to content

Commit 97b3d42

Browse files
author
ttpllt46
committed
Issue #172665 feat: Support set of filters in TjReports
1 parent 76099dc commit 97b3d42

4 files changed

Lines changed: 328 additions & 112 deletions

File tree

tjreports/site/assets/js/tjrContentUI.js

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@ tjrContentUI.root_url = (typeof root_url == 'undefined') ? '' : root_url;
1212
tjrContentUI.base_url = (typeof root_url == 'undefined') ? '' : root_url;
1313
tjrContentUI.report = tjrContentUI.report ? tjrContentUI.report : {};
1414

15-
15+
addMorefilterCnt = 1;
1616
jQuery.extend(tjrContentUI.report, {
1717
searchToggle: true,
1818
$form: null,
1919
url: 'index.php?option=com_tjreports&view=reports&format=json',
2020
querySaveUrl: 'index.php?option=com_tjreports&format=json',
21-
submitTJRData: function(task) {
21+
submitTJRData: function(task, addMorefilter) {
2222

2323
// Set the view layout on the basis of task
2424
task = (typeof task == 'undefined' ) ? 'default' : task;
@@ -47,6 +47,19 @@ jQuery.extend(tjrContentUI.report, {
4747
this.searchToggle = jQuery('div#topFilters').is(':visible');
4848
tjrContentUI.utility.loadingLayer('show');
4949
this.$form = jQuery('#adminForm');
50+
51+
if (addMorefilterCnt >= 1)
52+
{
53+
if (addMorefilter != undefined)
54+
{
55+
addMorefilterCnt++;
56+
}
57+
58+
jQuery('#tjReportaddMorefilter').remove();
59+
60+
this.$form.append('<input type="hidden" id="tjReportaddMorefilter" name="addMorefilter" value=' + addMorefilterCnt + '>');
61+
}
62+
5063
var doProcess = this.validate();
5164
if (!doProcess) {
5265
return false;
@@ -138,6 +151,7 @@ jQuery.extend(tjrContentUI.report, {
138151
.val('')
139152
.removeAttr('checked')
140153
.removeAttr('selected');
154+
addMorefilterCnt = 1;
141155
tjrContentUI.report.submitTJRData(task);
142156
},
143157
validate: function() {

tjreports/site/models/reports.php

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,9 @@ class TjreportsModelReports extends ListModel
117117
*/
118118
public $supportedFieldTypesForSummaryReport = array ('radio', 'checkbox', 'rating');
119119

120+
121+
public $allowToCreateResultSets = false;
122+
120123
/**
121124
* Constructor.
122125
*
@@ -676,6 +679,8 @@ protected function getListQuery()
676679
$colToshow = array_merge($colToshow, $topLevelFilters);
677680
}
678681

682+
$addMorefilter = $input->get('addMorefilter', 0, 'INT');
683+
679684
// Select columns which are directly linked to table columns
680685
foreach ($colToshow as $columnName)
681686
{
@@ -730,11 +735,34 @@ protected function getListQuery()
730735
{
731736
if ($dispFilter['type'] == 'custom')
732737
{
733-
$query->where(sprintf($dispFilter['searchin'], $db->quote($filters[$key])));
738+
if ($dispFilter['search_type'] == 'select' && $dispFilter['multiple'] && is_array($filters[$key]))
739+
{
740+
$filters[$key] = array_map(array($db, 'quote'), $filters[$key]);
741+
742+
// Create safe string of array.
743+
$filters[$key] = implode(',', $filters[$key]);
744+
$query->where(sprintf($dispFilter['searchin'], $filters[$key]));
745+
}
746+
else
747+
{
748+
$query->where(sprintf($dispFilter['searchin'], $db->quote($filters[$key])));
749+
}
734750
}
735751
else
736752
{
737-
$query->where($db->quoteName($columnName) . '=' . $db->quote($filters[$key]));
753+
if ($dispFilter['search_type'] == 'select' && $dispFilter['multiple'] && is_array($filters[$key]))
754+
{
755+
$filters[$key] = array_map(array($db, 'quote'), $filters[$key]);
756+
757+
// Create safe string of array.
758+
$filters[$key] = implode(',', $filters[$key]);
759+
760+
$query->where($db->quoteName($columnName) . ' IN (' . $filters[$key] . ')');
761+
}
762+
else
763+
{
764+
$query->where($db->quoteName($columnName) . '=' . $db->quote($filters[$key]));
765+
}
738766
}
739767
}
740768
else

0 commit comments

Comments
 (0)