Skip to content

Commit 4477b7f

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

4 files changed

Lines changed: 356 additions & 104 deletions

File tree

tjreports/site/assets/js/tjrContentUI.js

Lines changed: 22 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, removeFilter = '') {
2222

2323
// Set the view layout on the basis of task
2424
task = (typeof task == 'undefined' ) ? 'default' : task;
@@ -47,6 +47,25 @@ 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 (parseInt(addMorefilter) === 1)
54+
{
55+
addMorefilterCnt++;
56+
}
57+
else if (Number.isInteger(removeFilter))
58+
{
59+
addMorefilterCnt--;
60+
}
61+
62+
jQuery('#tjReportaddMorefilter').remove();
63+
this.$form.append('<input type="hidden" id="tjReportaddMorefilter" name="addMorefilter" value=' + addMorefilterCnt + '>');
64+
65+
jQuery('#tjReportremoveFilter').remove();
66+
this.$form.append('<input type="hidden" id="tjReportremoveFilter" name="removeFilter" value=' + removeFilter + '>');
67+
}
68+
5069
var doProcess = this.validate();
5170
if (!doProcess) {
5271
return false;
@@ -138,6 +157,7 @@ jQuery.extend(tjrContentUI.report, {
138157
.val('')
139158
.removeAttr('checked')
140159
.removeAttr('selected');
160+
addMorefilterCnt = 1;
141161
tjrContentUI.report.submitTJRData(task);
142162
},
143163
validate: function() {

tjreports/site/models/reports.php

Lines changed: 28 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
*
@@ -730,11 +733,34 @@ protected function getListQuery()
730733
{
731734
if ($dispFilter['type'] == 'custom')
732735
{
733-
$query->where(sprintf($dispFilter['searchin'], $db->quote($filters[$key])));
736+
if ($dispFilter['search_type'] == 'select' && $dispFilter['multiple'] && is_array($filters[$key]))
737+
{
738+
$filters[$key] = array_map(array($db, 'quote'), $filters[$key]);
739+
740+
// Create safe string of array.
741+
$filters[$key] = implode(',', $filters[$key]);
742+
$query->where(sprintf($dispFilter['searchin'], $filters[$key]));
743+
}
744+
else
745+
{
746+
$query->where(sprintf($dispFilter['searchin'], $db->quote($filters[$key])));
747+
}
734748
}
735749
else
736750
{
737-
$query->where($db->quoteName($columnName) . '=' . $db->quote($filters[$key]));
751+
if ($dispFilter['search_type'] == 'select' && $dispFilter['multiple'] && is_array($filters[$key]))
752+
{
753+
$filters[$key] = array_map(array($db, 'quote'), $filters[$key]);
754+
755+
// Create safe string of array.
756+
$filters[$key] = implode(',', $filters[$key]);
757+
758+
$query->where($db->quoteName($columnName) . ' IN (' . $filters[$key] . ')');
759+
}
760+
else
761+
{
762+
$query->where($db->quoteName($columnName) . '=' . $db->quote($filters[$key]));
763+
}
738764
}
739765
}
740766
else

0 commit comments

Comments
 (0)