- Added parameter hideSave to hide save button and fields

- Correctly saves personal filters
This commit is contained in:
Paolo
2017-12-13 13:51:38 +01:00
parent 0bb1d62c46
commit aeae34f4e0
4 changed files with 141 additions and 1 deletions
@@ -36,6 +36,7 @@ class TestFilterWidget extends VileSci_Controller
AND p.person_id < 1000
',
'hideHeader' => false,
'hideSave' => false,
'checkboxes' => array('PersonId'),
'additionalColumns' => array('Delete', 'Edit'),
'formatRaw' => function($fieldName, $fieldValue, $datasetRaw) {
@@ -40,6 +40,11 @@
}
});
$("#saveCustomFilterButton").click(function() {
$("#saveCustomFilter").val(true);
$("#filterForm").submit();
});
});
</script>
<body>
@@ -56,6 +61,12 @@
<br>
<div>
<?php FilterWidget::loadViewSaveFilter(); ?>
</div>
<br>
<div>
<?php FilterWidget::loadViewTableDataset($dataset); ?>
</div>
@@ -0,0 +1,7 @@
<div>
Filter short description: <input type="text" id="customFilterKurzbz" name="customFilterKurzbz" value="">
</div>
<div>
<input type="button" id="saveCustomFilterButton" value="Save filter">
<input type="hidden" id="saveCustomFilter" name="saveCustomFilter" value="false">
</div>
+122 -1
View File
@@ -15,6 +15,7 @@ class FilterWidget extends Widget
const FORMAT_RAW = 'formatRaw';
const CHECKBOXES = 'checkboxes';
const HIDE_HEADER = 'hideHeader';
const HIDE_SAVE = 'hideSave';
const DATASET_PARAMETER = 'dataset';
const METADATA_PARAMETER = 'metaData';
@@ -24,6 +25,7 @@ class FilterWidget extends Widget
const WIDGET_URL_SELECT_FIELDS = 'widgets/filter/selectFields';
const WIDGET_URL_TABLE_DATASET = 'widgets/filter/tableDataset';
const WIDGET_URL_SELECT_FILTERS = 'widgets/filter/selectFilters';
const WIDGET_URL_SAVE_FILTER = 'widgets/filter/saveFilter';
const SESSION_NAME = 'FILTER';
@@ -83,6 +85,7 @@ class FilterWidget extends Widget
//
$this->load->model('system/Filters_model', 'FiltersModel');
$this->load->model('person/Benutzer_model', 'BenutzerModel');
self::$FilterWidgetInstance = $this;
}
@@ -98,6 +101,9 @@ class FilterWidget extends Widget
//
$this->_setSessionFilterData();
//
$this->_saveFilter();
//
$this->FiltersModel->resetQuery();
@@ -172,6 +178,17 @@ class FilterWidget extends Widget
}
}
/**
*
*/
public static function loadViewSaveFilter()
{
if (self::$FilterWidgetInstance->hideSave != true)
{
self::_loadView(self::WIDGET_URL_SAVE_FILTER);
}
}
/**
*
*/
@@ -422,7 +439,7 @@ class FilterWidget extends Widget
/**
*
*/
private static function _loadView($viewName, $parameters)
private static function _loadView($viewName, $parameters = null)
{
$ci =& get_instance();
$ci->load->view($viewName, $parameters);
@@ -487,6 +504,7 @@ class FilterWidget extends Widget
$this->formatRaw = null;
$this->checkboxes = null;
$this->hideHeader = false;
$this->hideSave = false;
if (!is_array($args) || (is_array($args) && count($args) == 0))
{
@@ -558,6 +576,11 @@ class FilterWidget extends Widget
{
$this->hideHeader = $args[self::HIDE_HEADER];
}
if (isset($args[self::HIDE_SAVE]) && is_bool($args[self::HIDE_SAVE]))
{
$this->hideSave = $args[self::HIDE_SAVE];
}
}
}
@@ -668,6 +691,104 @@ class FilterWidget extends Widget
}
}
/**
*
*/
private function _saveFilter()
{
if (isset($_POST['saveCustomFilter']) && $_POST['saveCustomFilter'] == 'true')
{
$objToBeSaved = new stdClass();
$filterSessionArray = $this->session->userdata(self::SESSION_NAME);
if (isset($filterSessionArray[self::SELECTED_FIELDS]))
{
$selectedFields = $filterSessionArray[self::SELECTED_FIELDS];
$objToBeSaved->columns = array();
for ($selectedFieldsCounter = 0; $selectedFieldsCounter < count($selectedFields); $selectedFieldsCounter++)
{
$objToBeSaved->columns[$selectedFieldsCounter] = new stdClass();
$objToBeSaved->columns[$selectedFieldsCounter]->name = $selectedFields[$selectedFieldsCounter];
}
}
if (isset($filterSessionArray[self::SELECTED_FILTERS]))
{
$selectedFilters = $filterSessionArray[self::SELECTED_FILTERS];
$objToBeSaved->filters = array();
for ($selectedFiltersCounter = 0; $selectedFiltersCounter < count($selectedFilters); $selectedFiltersCounter++)
{
$objToBeSaved->filters[$selectedFiltersCounter] = new stdClass();
$objToBeSaved->filters[$selectedFiltersCounter]->name = $selectedFilters[$selectedFiltersCounter];
if (isset($filterSessionArray[self::ACTIVE_FILTERS])
&& isset($filterSessionArray[self::ACTIVE_FILTERS][$selectedFilters[$selectedFiltersCounter]]))
{
$objToBeSaved->filters[$selectedFiltersCounter]->condition = $filterSessionArray[self::ACTIVE_FILTERS][$selectedFilters[$selectedFiltersCounter]];
}
if (isset($filterSessionArray[self::ACTIVE_FILTERS_OPERATION])
&& isset($filterSessionArray[self::ACTIVE_FILTERS_OPERATION][$selectedFilters[$selectedFiltersCounter]]))
{
$objToBeSaved->filters[$selectedFiltersCounter]->operation = $filterSessionArray[self::ACTIVE_FILTERS_OPERATION][$selectedFilters[$selectedFiltersCounter]];
}
if (isset($filterSessionArray[self::ACTIVE_FILTERS_OPTION])
&& isset($filterSessionArray[self::ACTIVE_FILTERS_OPTION][$selectedFilters[$selectedFiltersCounter]]))
{
$objToBeSaved->filters[$selectedFiltersCounter]->option = $filterSessionArray[self::ACTIVE_FILTERS_OPTION][$selectedFilters[$selectedFiltersCounter]];
}
}
}
$result = $this->FiltersModel->loadWhere(array(
'app' => $this->app,
'dataset_name' => $this->datasetName,
'filter_kurzbz' => $_POST['customFilterKurzbz']
));
if (hasData($result))
{
$this->FiltersModel->update(
array(
'app' => $this->app,
'dataset_name' => $this->datasetName,
'filter_kurzbz' => $_POST['customFilterKurzbz']
),
array(
'description' => '{}',
'sort' => null,
'default_filter' => false,
'filter' => json_encode($objToBeSaved),
'oe_kurzbz' => null
)
);
}
else
{
$result = $this->BenutzerModel->load(getAuthUID());
if (hasData($result))
{
$this->FiltersModel->insert(array(
'app' => $this->app,
'dataset_name' => $this->datasetName,
'filter_kurzbz' => $_POST['customFilterKurzbz'],
'person_id' => $result->retval[0]->person_id,
'description' => '{}',
'sort' => null,
'default_filter' => false,
'filter' => json_encode($objToBeSaved),
'oe_kurzbz' => null
));
}
}
}
}
/**
*
*/