mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-20 16:32:20 +00:00
Changed FilterWidget to be more responsive with Javascript
This commit is contained in:
@@ -0,0 +1,382 @@
|
||||
<?php
|
||||
|
||||
if (! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
class Filters extends VileSci_Controller
|
||||
{
|
||||
const SESSION_NAME = 'FILTER';
|
||||
|
||||
const SELECTED_FIELDS = 'selectedFields';
|
||||
const SELECTED_FILTERS = 'selectedFilters';
|
||||
const ACTIVE_FILTERS = 'activeFilters';
|
||||
const ACTIVE_FILTERS_OPTION = 'activeFiltersOption';
|
||||
const ACTIVE_FILTERS_OPERATION = 'activeFiltersOperation';
|
||||
const FILTER_NAME = 'filterName';
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
|
||||
// Load session library
|
||||
$this->load->library('session');
|
||||
|
||||
$this->load->model('system/Filters_model', 'FiltersModel');
|
||||
$this->load->model('person/Benutzer_model', 'BenutzerModel');
|
||||
}
|
||||
|
||||
public function tableDataset()
|
||||
{
|
||||
$json = new stdClass();
|
||||
|
||||
$json->selectedFields = $_SESSION[self::SESSION_NAME]['selectedFields'];
|
||||
$json->columnsAliases = $_SESSION[self::SESSION_NAME]['columnsAliases'];
|
||||
$json->additionalColumns = $_SESSION[self::SESSION_NAME]['additionalColumns'];
|
||||
$json->checkboxes = $_SESSION[self::SESSION_NAME]['checkboxes'];
|
||||
$json->dataset = $_SESSION[self::SESSION_NAME]['dataset'];
|
||||
|
||||
$this->output->set_content_type('application/json')->set_output(json_encode($json));
|
||||
}
|
||||
|
||||
public function selectFields()
|
||||
{
|
||||
$json = new stdClass();
|
||||
|
||||
$json->allSelectedFields = $_SESSION[self::SESSION_NAME]['allSelectedFields'];
|
||||
$json->allColumnsAliases = $_SESSION[self::SESSION_NAME]['allColumnsAliases'];
|
||||
|
||||
$json->selectedFields = $_SESSION[self::SESSION_NAME]['selectedFields'];
|
||||
$json->columnsAliases = $_SESSION[self::SESSION_NAME]['columnsAliases'];
|
||||
|
||||
$this->output->set_content_type('application/json')->set_output(json_encode($json));
|
||||
}
|
||||
|
||||
public function selectFilters()
|
||||
{
|
||||
$json = new stdClass();
|
||||
|
||||
$json->allSelectedFields = $_SESSION[self::SESSION_NAME]['allSelectedFields'];
|
||||
$json->allColumnsAliases = $_SESSION[self::SESSION_NAME]['allColumnsAliases'];
|
||||
|
||||
$json->selectedFilters = $_SESSION[self::SESSION_NAME]['selectedFilters'];
|
||||
$json->selectedFiltersAliases = array();
|
||||
$json->selectedFiltersMetaData = array();
|
||||
|
||||
$json->selectedFiltersActiveFilters = array();
|
||||
$json->selectedFiltersActiveFiltersOperation = array();
|
||||
$json->selectedFiltersActiveFiltersOption = array();
|
||||
|
||||
$metaData = $_SESSION[self::SESSION_NAME]['metaData'];
|
||||
$activeFilters = $_SESSION[self::SESSION_NAME]['activeFilters'];
|
||||
$activeFiltersOperation = $_SESSION[self::SESSION_NAME]['activeFiltersOperation'];
|
||||
$activeFiltersOption = $_SESSION[self::SESSION_NAME]['activeFiltersOption'];
|
||||
|
||||
for ($i = 0; $i < count($json->selectedFilters); $i++)
|
||||
{
|
||||
$pos = array_search($json->selectedFilters[$i], $json->allSelectedFields);
|
||||
|
||||
if ($pos !== false)
|
||||
{
|
||||
$json->selectedFiltersAliases[] = $json->allColumnsAliases[$pos];
|
||||
$json->selectedFiltersMetaData[] = $metaData[$pos];
|
||||
|
||||
if (isset($activeFilters[$json->selectedFilters[$i]]))
|
||||
{
|
||||
$json->selectedFiltersActiveFilters[] = $activeFilters[$json->selectedFilters[$i]];
|
||||
}
|
||||
|
||||
if (isset($activeFiltersOperation[$json->selectedFilters[$i]]))
|
||||
{
|
||||
$json->selectedFiltersActiveFiltersOperation[] = $activeFiltersOperation[$json->selectedFilters[$i]];
|
||||
}
|
||||
|
||||
if (isset($activeFiltersOption[$json->selectedFilters[$i]]))
|
||||
{
|
||||
$json->selectedFiltersActiveFiltersOption[] = $activeFiltersOption[$json->selectedFilters[$i]];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->output->set_content_type('application/json')->set_output(json_encode($json));
|
||||
}
|
||||
|
||||
public function saveFilter()
|
||||
{
|
||||
$this->_saveFilter($this->input->post("customFilterDescription"));
|
||||
|
||||
$this->output->set_content_type('application/json')->set_output(json_encode('Tutto bene!!!'));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private function _saveFilter($customFilterDescription)
|
||||
{
|
||||
$objToBeSaved = new stdClass();
|
||||
|
||||
$filterSessionArray = $this->session->userdata(self::SESSION_NAME);
|
||||
|
||||
$objToBeSaved->name = $customFilterDescription;
|
||||
|
||||
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]];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$desc = $customFilterDescription;
|
||||
$descPGArray = '{"'.$desc.'", "'.$desc.'", "'.$desc.'", "'.$desc.'"}';
|
||||
|
||||
$resultBenutzer = $this->BenutzerModel->load(getAuthUID());
|
||||
$personId = $resultBenutzer->retval[0]->person_id;
|
||||
|
||||
$result = $this->FiltersModel->loadWhere(array(
|
||||
'app' => $_SESSION[self::SESSION_NAME]['app'],
|
||||
'dataset_name' => $_SESSION[self::SESSION_NAME]['datasetName'],
|
||||
'description' => $descPGArray,
|
||||
'person_id' => $personId
|
||||
));
|
||||
|
||||
if (hasData($result))
|
||||
{
|
||||
$this->FiltersModel->update(
|
||||
array(
|
||||
'app' => $_SESSION[self::SESSION_NAME]['app'],
|
||||
'dataset_name' => $_SESSION[self::SESSION_NAME]['datasetName'],
|
||||
'description' => $descPGArray,
|
||||
'person_id' => $personId
|
||||
),
|
||||
array(
|
||||
'filter' => json_encode($objToBeSaved)
|
||||
)
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->FiltersModel->insert(array(
|
||||
'app' => $_SESSION[self::SESSION_NAME]['app'],
|
||||
'dataset_name' => $_SESSION[self::SESSION_NAME]['datasetName'],
|
||||
'filter_kurzbz' => uniqid($personId, true),
|
||||
'person_id' => $personId,
|
||||
'description' => $descPGArray,
|
||||
'sort' => null,
|
||||
'default_filter' => false,
|
||||
'filter' => json_encode($objToBeSaved),
|
||||
'oe_kurzbz' => null
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function deleteCustomFilter()
|
||||
{
|
||||
$filter_id = $this->input->post('filter_id');
|
||||
|
||||
if (is_numeric($filter_id))
|
||||
{
|
||||
$this->FiltersModel->deleteCustomFilter($filter_id);
|
||||
|
||||
$this->output->set_content_type('application/json')->set_output(json_encode('Tutto bene!!!'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function removeSelectedFields()
|
||||
{
|
||||
$fieldName = $this->input->post('fieldName');
|
||||
|
||||
$allSelectedFields = $_SESSION[self::SESSION_NAME]['allSelectedFields'];
|
||||
$allColumnsAliases = $_SESSION[self::SESSION_NAME]['allColumnsAliases'];
|
||||
|
||||
$selectedFields = $_SESSION[self::SESSION_NAME]['selectedFields'];
|
||||
$columnsAliases = $_SESSION[self::SESSION_NAME]['columnsAliases'];
|
||||
|
||||
if (($pos = array_search($fieldName, $selectedFields)) !== false)
|
||||
{
|
||||
array_splice($selectedFields, $pos, 1);
|
||||
array_splice($columnsAliases, $pos, 1);
|
||||
}
|
||||
|
||||
$_SESSION[self::SESSION_NAME]['selectedFields'] = $selectedFields;
|
||||
$_SESSION[self::SESSION_NAME]['columnsAliases'] = $columnsAliases;
|
||||
|
||||
$json = new stdClass();
|
||||
|
||||
$json->allSelectedFields = $allSelectedFields;
|
||||
$json->allColumnsAliases = $allColumnsAliases;
|
||||
$json->selectedFields = $selectedFields;
|
||||
$json->columnsAliases = $columnsAliases;
|
||||
|
||||
$this->output->set_content_type('application/json')->set_output(json_encode($json));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function removeSelectedFilters()
|
||||
{
|
||||
$fieldName = $this->input->post('fieldName');
|
||||
|
||||
$selectedFilters = $_SESSION[self::SESSION_NAME]['selectedFilters'];
|
||||
$selectedFiltersActiveFilters = $_SESSION[self::SESSION_NAME]['activeFilters'];
|
||||
$selectedFiltersActiveFiltersOperation = $_SESSION[self::SESSION_NAME]['activeFiltersOperation'];
|
||||
$selectedFiltersActiveFiltersOption = $_SESSION[self::SESSION_NAME]['activeFiltersOption'];
|
||||
|
||||
if (($pos = array_search($fieldName, $selectedFilters)) !== false)
|
||||
{
|
||||
array_splice($selectedFilters, $pos, 1);
|
||||
array_splice($selectedFiltersActiveFilters, $pos, 1);
|
||||
array_splice($selectedFiltersActiveFiltersOperation, $pos, 1);
|
||||
array_splice($selectedFiltersActiveFiltersOption, $pos, 1);
|
||||
}
|
||||
|
||||
$_SESSION[self::SESSION_NAME]['selectedFilters'] = $selectedFilters;
|
||||
$_SESSION[self::SESSION_NAME]['activeFilters'] = $selectedFiltersActiveFilters;
|
||||
$_SESSION[self::SESSION_NAME]['activeFiltersOperation'] = $selectedFiltersActiveFiltersOperation;
|
||||
$_SESSION[self::SESSION_NAME]['activeFiltersOption'] = $selectedFiltersActiveFiltersOption;
|
||||
|
||||
$json = new stdClass();
|
||||
|
||||
$json->selectedFilters = $selectedFilters;
|
||||
$json->selectedFiltersActiveFilters = $selectedFiltersActiveFilters;
|
||||
$json->selectedFiltersActiveFiltersOperation = $selectedFiltersActiveFiltersOperation;
|
||||
$json->selectedFiltersActiveFiltersOption = $selectedFiltersActiveFiltersOption;
|
||||
|
||||
$this->output->set_content_type('application/json')->set_output(json_encode($json));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function addSelectedFields()
|
||||
{
|
||||
$fieldName = $this->input->post('fieldName');
|
||||
|
||||
$allSelectedFields = $_SESSION[self::SESSION_NAME]['allSelectedFields'];
|
||||
$allColumnsAliases = $_SESSION[self::SESSION_NAME]['allColumnsAliases'];
|
||||
|
||||
$selectedFields = $_SESSION[self::SESSION_NAME]['selectedFields'];
|
||||
$columnsAliases = $_SESSION[self::SESSION_NAME]['columnsAliases'];
|
||||
|
||||
if (($pos = array_search($fieldName, $allSelectedFields)) !== false
|
||||
&& array_search($fieldName, $selectedFields) === false)
|
||||
{
|
||||
array_push($selectedFields, $fieldName);
|
||||
array_push($columnsAliases, $allColumnsAliases[$pos]);
|
||||
}
|
||||
|
||||
$_SESSION[self::SESSION_NAME]['selectedFields'] = $selectedFields;
|
||||
$_SESSION[self::SESSION_NAME]['columnsAliases'] = $columnsAliases;
|
||||
|
||||
$json = new stdClass();
|
||||
|
||||
$json->allSelectedFields = $allSelectedFields;
|
||||
$json->allColumnsAliases = $allColumnsAliases;
|
||||
$json->selectedFields = $selectedFields;
|
||||
$json->columnsAliases = $columnsAliases;
|
||||
|
||||
$this->output->set_content_type('application/json')->set_output(json_encode($json));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function addSelectedFilters()
|
||||
{
|
||||
$fieldName = $this->input->post('fieldName');
|
||||
|
||||
$selectedFilters = $_SESSION[self::SESSION_NAME]['selectedFilters'];
|
||||
$selectedFiltersActiveFilters = $_SESSION[self::SESSION_NAME]['activeFilters'];
|
||||
$selectedFiltersActiveFiltersOperation = $_SESSION[self::SESSION_NAME]['activeFiltersOperation'];
|
||||
$selectedFiltersActiveFiltersOption = $_SESSION[self::SESSION_NAME]['activeFiltersOption'];
|
||||
|
||||
if (!in_array($fieldName, $selectedFilters))
|
||||
{
|
||||
array_push($selectedFilters, $fieldName);
|
||||
$selectedFiltersActiveFilters[$fieldName] = "";
|
||||
$selectedFiltersActiveFiltersOperation[$fieldName] = "";
|
||||
$selectedFiltersActiveFiltersOption[$fieldName] = "";
|
||||
}
|
||||
|
||||
$_SESSION[self::SESSION_NAME]['selectedFilters'] = $selectedFilters;
|
||||
$_SESSION[self::SESSION_NAME]['activeFilters'] = $selectedFiltersActiveFilters;
|
||||
$_SESSION[self::SESSION_NAME]['activeFiltersOperation'] = $selectedFiltersActiveFiltersOperation;
|
||||
$_SESSION[self::SESSION_NAME]['activeFiltersOption'] = $selectedFiltersActiveFiltersOption;
|
||||
|
||||
$json = new stdClass();
|
||||
|
||||
$json->selectedFilters = $selectedFilters;
|
||||
$json->selectedFiltersActiveFilters = $selectedFiltersActiveFilters;
|
||||
$json->selectedFiltersActiveFiltersOperation = $selectedFiltersActiveFiltersOperation;
|
||||
$json->selectedFiltersActiveFiltersOption = $selectedFiltersActiveFiltersOption;
|
||||
|
||||
$this->output->set_content_type('application/json')->set_output(json_encode($json));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function applyFilter()
|
||||
{
|
||||
$fieldNames = $this->input->post('filterNames');
|
||||
$filterOperations = $this->input->post('filterOperations');
|
||||
$filterOperationValues = $this->input->post('filterOperationValues');
|
||||
$filterOptions = $this->input->post('filterOptions');
|
||||
|
||||
$activeFilters = array_combine($fieldNames, $filterOperationValues);
|
||||
$activeFiltersOperation = array_combine($fieldNames, $filterOperations);
|
||||
$activeFiltersOption = array_combine($fieldNames, $filterOptions);
|
||||
|
||||
$_SESSION[self::SESSION_NAME]['activeFilters'] = $activeFilters;
|
||||
$_SESSION[self::SESSION_NAME]['activeFiltersOperation'] = $activeFiltersOperation;
|
||||
$_SESSION[self::SESSION_NAME]['activeFiltersOption'] = $activeFiltersOption;
|
||||
|
||||
$json = new stdClass();
|
||||
|
||||
$json->fieldNames = $fieldNames;
|
||||
$json->activeFilters = $activeFilters;
|
||||
$json->activeFiltersOperation = $activeFiltersOperation;
|
||||
$json->activeFiltersOption = $activeFiltersOption;
|
||||
|
||||
$this->output->set_content_type('application/json')->set_output(json_encode($json));
|
||||
}
|
||||
}
|
||||
@@ -395,21 +395,6 @@ class InfoCenter extends VileSci_Controller
|
||||
->_display();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public function deleteCustomFilter()
|
||||
{
|
||||
$filter_id = $this->input->get('filter_id');
|
||||
|
||||
if (is_numeric($filter_id))
|
||||
{
|
||||
$this->FiltersModel->deleteCustomFilter($filter_id);
|
||||
|
||||
redirect(self::URL_PREFIX);
|
||||
}
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------------
|
||||
// Private methods
|
||||
|
||||
@@ -530,8 +515,9 @@ class InfoCenter extends VileSci_Controller
|
||||
$tofill['children'][] = array(
|
||||
'link' => sprintf($toPrint, base_url('index.ci.php/system/infocenter/InfoCenter?filter_id'), $filterId),
|
||||
'description' => $description,
|
||||
'subscriptLink' => sprintf($toPrint, base_url('index.ci.php/system/infocenter/InfoCenter/deleteCustomFilter?filter_id'), $filterId),
|
||||
'subscriptDescription' => 'Remove'
|
||||
'subscriptDescription' => 'Remove',
|
||||
'subscriptLinkId' => 'removeFilterById',
|
||||
'subscriptLinkValue' => $filterId
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -101,58 +101,42 @@
|
||||
',
|
||||
'hideHeader' => false,
|
||||
'hideSave' => false,
|
||||
'checkboxes' => array('PersonId'),
|
||||
'checkboxes' => 'PersonId',
|
||||
'columnsAliases' => array('Person ID', 'Name', 'Surname', 'Birthday', 'Last Action', 'User - Operator', 'Studien semester', 'Send Date', 'Number sent', 'Lock Date'),
|
||||
'additionalColumns' => array('Details'),
|
||||
'formatRaw' => function($fieldName, $fieldValue, $datasetRaw) {
|
||||
'formatRaw' => function($datasetRaw) {
|
||||
|
||||
if ($fieldName == 'Details')
|
||||
$datasetRaw->{'Details'} = sprintf(
|
||||
'<a href="%s%s">Details</a>',
|
||||
base_url('index.ci.php/system/infocenter/InfoCenter/showDetails/'),
|
||||
$datasetRaw->{'PersonId'}
|
||||
);
|
||||
|
||||
if ($datasetRaw->{'SendDate'} == null)
|
||||
{
|
||||
$link = '<a href="%s%s">Details</a>';
|
||||
|
||||
$datasetRaw->{$fieldName} = sprintf(
|
||||
$link,
|
||||
base_url('index.ci.php/system/infocenter/InfoCenter/showDetails/'),
|
||||
$datasetRaw->PersonId
|
||||
);
|
||||
$datasetRaw->{'SendDate'} = 'Not sent';
|
||||
}
|
||||
|
||||
if ($fieldName == 'SendDate')
|
||||
if ($datasetRaw->{'LastAction'} == null)
|
||||
{
|
||||
if ($datasetRaw->{$fieldName} == '01.01.1970 01:00:00')
|
||||
{
|
||||
$datasetRaw->{$fieldName} = 'Not sent';
|
||||
}
|
||||
$datasetRaw->{'LastAction'} = 'Not logged';
|
||||
}
|
||||
|
||||
if ($fieldName == 'LastAction')
|
||||
if ($datasetRaw->{'User/Operator'} == '')
|
||||
{
|
||||
if ($datasetRaw->{$fieldName} == '01.01.1970 01:00:00')
|
||||
{
|
||||
$datasetRaw->{$fieldName} = 'Not logged';
|
||||
}
|
||||
$datasetRaw->{'User/Operator'} = 'NA';
|
||||
}
|
||||
|
||||
if ($fieldName == 'User/Operator')
|
||||
if ($datasetRaw->{'LockDate'} == null)
|
||||
{
|
||||
if ($datasetRaw->{$fieldName} == '')
|
||||
{
|
||||
$datasetRaw->{$fieldName} = 'NA';
|
||||
}
|
||||
}
|
||||
|
||||
if ($fieldName == 'LockDate')
|
||||
{
|
||||
if ($datasetRaw->{$fieldName} == '01.01.1970 01:00:00')
|
||||
{
|
||||
$datasetRaw->{$fieldName} = 'Not locked';
|
||||
}
|
||||
$datasetRaw->{'LockDate'} = 'Not locked';
|
||||
}
|
||||
|
||||
return $datasetRaw;
|
||||
},
|
||||
'markRow' => function($datasetRaw) {
|
||||
|
||||
if ($datasetRaw->LockDate != '')
|
||||
if ($datasetRaw->LockDate != null)
|
||||
{
|
||||
return FilterWidget::DEFAULT_MARK_ROW_CLASS;
|
||||
}
|
||||
|
||||
@@ -61,102 +61,21 @@
|
||||
|
||||
$(document).ready(function() {
|
||||
|
||||
$(".filter-select-field-dnd-span").draggable({
|
||||
containment: "parent",
|
||||
cursor: "move",
|
||||
opacity: 0.4,
|
||||
revert: "invalid",
|
||||
revertDuration: 200
|
||||
});
|
||||
|
||||
$(".filter-select-field-dnd-span").droppable({
|
||||
accept: ".filter-select-field-dnd-span",
|
||||
over: function(event, ui) {
|
||||
$(this).on("mousemove", function( event ) {
|
||||
var padding = 20;
|
||||
var elementCenter = $(this).offset().left + (padding + $(this).width() / 2);
|
||||
|
||||
console.log(elementCenter);
|
||||
console.log(event.pageX);
|
||||
|
||||
if (event.pageX > elementCenter)
|
||||
{
|
||||
$(this).addClass("selection-after");
|
||||
$(this).removeClass("selection-before");
|
||||
}
|
||||
else if (event.pageX < elementCenter)
|
||||
{
|
||||
$(this).addClass("selection-before");
|
||||
$(this).removeClass("selection-after");
|
||||
}
|
||||
});
|
||||
},
|
||||
out: function(event, ui) {
|
||||
$(this).off("mousemove");
|
||||
$(this).removeClass("selection-before");
|
||||
$(this).removeClass("selection-after");
|
||||
},
|
||||
drop: function(event, ui) {
|
||||
var padding = 20;
|
||||
var elementCenter = $(this).offset().left + (padding + $(this).width() / 2);
|
||||
|
||||
if (event.pageX > elementCenter)
|
||||
{
|
||||
$(this).insertBefore(ui.draggable);
|
||||
$("#removeFilterById").click(function() {
|
||||
$.ajax({
|
||||
url: "<?php echo base_url('index.ci.php/system/Filters/deleteCustomFilter'); ?>",
|
||||
method: "POST",
|
||||
data: {
|
||||
filter_id: $(this).attr('value')
|
||||
}
|
||||
else if (event.pageX < elementCenter)
|
||||
{
|
||||
$(this).insertAfter(ui.draggable);
|
||||
}
|
||||
|
||||
$(this).off("mousemove");
|
||||
$(this).removeClass("selection-before");
|
||||
$(this).removeClass("selection-after");
|
||||
}
|
||||
});
|
||||
|
||||
$("#addField").change(function() {
|
||||
$("#filterForm").submit();
|
||||
});
|
||||
|
||||
$(".remove-field").each(function() {
|
||||
$(this).click(function() {
|
||||
$("#rmField").val($(this).attr('fieldToRemove'));
|
||||
$("#filterForm").submit();
|
||||
})
|
||||
.done(function(data, textStatus, jqXHR) {
|
||||
alert("Filter successfully removed");
|
||||
}).fail(function(jqXHR, textStatus, errorThrown) {
|
||||
alert(textStatus);
|
||||
});
|
||||
});
|
||||
|
||||
$("#addFilter").change(function() {
|
||||
$("#filterForm").submit();
|
||||
});
|
||||
|
||||
$(".remove-filter").each(function() {
|
||||
$(this).click(function() {
|
||||
$("#rmFilter").val($(this).attr('filterToRemove'));
|
||||
$("#filterForm").submit();
|
||||
});
|
||||
});
|
||||
|
||||
$(".select-filter-operation").change(function() {
|
||||
$("#filterForm").submit();
|
||||
});
|
||||
|
||||
$(".select-filter-operation-value").keydown(function(event) {
|
||||
if (event.which == 13)
|
||||
{
|
||||
$("#filterForm").submit();
|
||||
}
|
||||
});
|
||||
|
||||
$("#saveCustomFilterButton").click(function() {
|
||||
$("#saveCustomFilter").val(true);
|
||||
$("#filterForm").submit();
|
||||
});
|
||||
|
||||
$("#applyFilter").click(function() {
|
||||
$("#filterForm").submit();
|
||||
});
|
||||
|
||||
$("[data-toggle='collapse']").click(function() {
|
||||
|
||||
var filterOptionsStatus = sessionStorage.getItem('filter-options-status');
|
||||
@@ -182,49 +101,47 @@
|
||||
</script>
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<form class="form-inline" id="filterForm" method="POST" action="<?php echo current_url(); ?>">
|
||||
|
||||
<?php FilterWidget::displayFilterName(); ?>
|
||||
<?php FilterWidget::displayFilterName(); ?>
|
||||
|
||||
<div class="panel-group">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title">
|
||||
<a data-toggle="collapse" href="#collapseFilterHeader">Filter options</a>
|
||||
</h4>
|
||||
</div>
|
||||
<div id="collapseFilterHeader" class="panel-collapse collapse">
|
||||
<div class="filters-hidden-panel">
|
||||
<div>
|
||||
<?php FilterWidget::loadViewSelectFields($listFields); ?>
|
||||
</div>
|
||||
<div class="panel-group">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title">
|
||||
<a data-toggle="collapse" href="#collapseFilterHeader">Filter options</a>
|
||||
</h4>
|
||||
</div>
|
||||
<div id="collapseFilterHeader" class="panel-collapse collapse">
|
||||
<div class="filters-hidden-panel">
|
||||
<div>
|
||||
<?php FilterWidget::loadViewSelectFields(); ?>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<div>
|
||||
<?php FilterWidget::loadViewSelectFilters($metaData); ?>
|
||||
</div>
|
||||
<div>
|
||||
<?php FilterWidget::loadViewSelectFilters(); ?>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<div>
|
||||
<?php FilterWidget::loadViewSaveFilter(); ?>
|
||||
</div>
|
||||
<div>
|
||||
<?php FilterWidget::loadViewSaveFilter(); ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<div id="datasetActionsTop"></div>
|
||||
<div id="datasetActionsTop"></div>
|
||||
|
||||
<div>
|
||||
<?php FilterWidget::loadViewTableDataset($dataset); ?>
|
||||
</div>
|
||||
<div>
|
||||
<?php FilterWidget::loadViewTableDataset(); ?>
|
||||
</div>
|
||||
|
||||
<div id="datasetActionsBottom"></div>
|
||||
<div id="datasetActionsBottom"></div>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,7 +1,36 @@
|
||||
<script language="Javascript" type="text/javascript">
|
||||
|
||||
$(document).ready(function() {
|
||||
|
||||
$("#saveCustomFilterButton").click(function() {
|
||||
if ($("#customFilterDescription").val() != '')
|
||||
{
|
||||
$.ajax({
|
||||
url: "<?php echo base_url('index.ci.php/system/Filters/saveFilter'); ?>",
|
||||
method: "POST",
|
||||
data: {
|
||||
customFilterDescription: $("#customFilterDescription").val()
|
||||
}
|
||||
})
|
||||
.done(function(data, textStatus, jqXHR) {
|
||||
alert("Filter successfully saved");
|
||||
}).fail(function(jqXHR, textStatus, errorThrown) {
|
||||
alert(textStatus);
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
alert("You forgot something!");
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
<div>
|
||||
Filter description: <input type="text" id="customFilterDescription" name="customFilterDescription" value="">
|
||||
Filter description: <input type="text" id="customFilterDescription" value="" class="">
|
||||
</div>
|
||||
<div>
|
||||
<input type="button" id="saveCustomFilterButton" value="Save filter">
|
||||
<input type="hidden" id="saveCustomFilter" name="saveCustomFilter" value="false">
|
||||
</div>
|
||||
|
||||
@@ -1,54 +1,190 @@
|
||||
<div id="filterSelectFieldsDnd" class="filter-select-fields-dnd-div">
|
||||
<?php
|
||||
$selectedFields = FilterWidget::getSelectedFields();
|
||||
$columnsAliases = FilterWidget::getColumnsAliases();
|
||||
<script language="Javascript" type="text/javascript">
|
||||
|
||||
for ($selectedFieldsCounter = 0; $selectedFieldsCounter < count($selectedFields); $selectedFieldsCounter++)
|
||||
{
|
||||
$selectedField = $selectedFields[$selectedFieldsCounter];
|
||||
$selectedFieldAlias = $selectedField;
|
||||
function dndSF()
|
||||
{
|
||||
$(".filter-select-field-dnd-span").draggable({
|
||||
containment: "parent",
|
||||
cursor: "move",
|
||||
opacity: 0.4,
|
||||
revert: "invalid",
|
||||
revertDuration: 200
|
||||
});
|
||||
|
||||
if ($columnsAliases != null)
|
||||
{
|
||||
$indx = array_search($selectedField, $listFields);
|
||||
if ($indx !== false)
|
||||
$(".filter-select-field-dnd-span").droppable({
|
||||
accept: ".filter-select-field-dnd-span",
|
||||
over: function(event, ui) {
|
||||
$(this).on("mousemove", function( event ) {
|
||||
var padding = 20;
|
||||
var elementCenter = $(this).offset().left + (padding + $(this).width() / 2);
|
||||
|
||||
if (event.pageX > elementCenter)
|
||||
{
|
||||
$(this).addClass("selection-after");
|
||||
$(this).removeClass("selection-before");
|
||||
}
|
||||
else if (event.pageX < elementCenter)
|
||||
{
|
||||
$(this).addClass("selection-before");
|
||||
$(this).removeClass("selection-after");
|
||||
}
|
||||
});
|
||||
},
|
||||
out: function(event, ui) {
|
||||
$(this).off("mousemove");
|
||||
$(this).removeClass("selection-before");
|
||||
$(this).removeClass("selection-after");
|
||||
},
|
||||
drop: function(event, ui) {
|
||||
var padding = 20;
|
||||
var elementCenter = $(this).offset().left + (padding + $(this).width() / 2);
|
||||
|
||||
if (event.pageX > elementCenter)
|
||||
{
|
||||
$selectedFieldAlias = $columnsAliases[$indx];
|
||||
$(this).insertBefore(ui.draggable);
|
||||
}
|
||||
else if (event.pageX < elementCenter)
|
||||
{
|
||||
$(this).insertAfter(ui.draggable);
|
||||
}
|
||||
|
||||
$(this).off("mousemove");
|
||||
$(this).removeClass("selection-before");
|
||||
$(this).removeClass("selection-after");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function resetEventsSF()
|
||||
{
|
||||
$("#addField").off('change');
|
||||
$(".remove-field").off('click');
|
||||
}
|
||||
|
||||
function addEventsSF()
|
||||
{
|
||||
$("#addField").change(function(event) {
|
||||
|
||||
$.ajax({
|
||||
url: "<?php echo base_url('index.ci.php/system/Filters/addSelectedFields'); ?>",
|
||||
method: "POST",
|
||||
data: {
|
||||
fieldName: $(this).val()
|
||||
}
|
||||
})
|
||||
.done(function(data, textStatus, jqXHR) {
|
||||
|
||||
resetSelectedFields();
|
||||
renderSelectedFields();
|
||||
|
||||
renderTableDataset();
|
||||
|
||||
}).fail(function(jqXHR, textStatus, errorThrown) {
|
||||
alert(textStatus);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
$(".remove-field").click(function(event) {
|
||||
|
||||
$.ajax({
|
||||
url: "<?php echo base_url('index.ci.php/system/Filters/removeSelectedFields'); ?>",
|
||||
method: "POST",
|
||||
data: {
|
||||
fieldName: $(this).attr('fieldToRemove')
|
||||
}
|
||||
})
|
||||
.done(function(data, textStatus, jqXHR) {
|
||||
|
||||
resetSelectedFields();
|
||||
renderSelectedFields();
|
||||
|
||||
renderTableDataset();
|
||||
|
||||
}).fail(function(jqXHR, textStatus, errorThrown) {
|
||||
alert(textStatus);
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
function renderSelectedFields()
|
||||
{
|
||||
$.ajax({
|
||||
url: "<?php echo base_url('index.ci.php/system/Filters/selectFields'); ?>",
|
||||
method: "GET",
|
||||
data: {},
|
||||
dataType: "json"
|
||||
})
|
||||
.done(function(data, textStatus, jqXHR) {
|
||||
|
||||
resetEventsSF();
|
||||
|
||||
if (data != null)
|
||||
{
|
||||
var arrayFieldsToDisplay = [];
|
||||
|
||||
if (data.columnsAliases != null && $.isArray(data.columnsAliases))
|
||||
{
|
||||
arrayFieldsToDisplay = data.columnsAliases;
|
||||
}
|
||||
else if (data.selectedFields != null && $.isArray(data.selectedFields))
|
||||
{
|
||||
arrayFieldsToDisplay = data.selectedFields;
|
||||
}
|
||||
|
||||
for (var i = 0; i < arrayFieldsToDisplay.length; i++)
|
||||
{
|
||||
var fieldToDisplay = arrayFieldsToDisplay[i];
|
||||
var fieldName = data.selectedFields[i];
|
||||
|
||||
var strHtml = '<span class="filter-select-field-dnd-span">';
|
||||
|
||||
strHtml += fieldToDisplay;
|
||||
strHtml += '<a class="remove-field" fieldToRemove="' + fieldName + '">X</a>';
|
||||
strHtml += '</span>';
|
||||
$("#filterSelectFieldsDnd").append(strHtml);
|
||||
}
|
||||
|
||||
var strDropDown = '<option value="">Select a field to add..</option>';
|
||||
$("#addField").append(strDropDown);
|
||||
|
||||
for (var i = 0; i < data.allSelectedFields.length; i++)
|
||||
{
|
||||
var fieldName = data.allSelectedFields[i];
|
||||
var fieldToDisplay = data.allColumnsAliases[i];
|
||||
|
||||
strDropDown = '<option value="' + fieldName + '">' + fieldToDisplay + '</option>';
|
||||
$("#addField").append(strDropDown);
|
||||
}
|
||||
}
|
||||
?>
|
||||
<span class="filter-select-field-dnd-span">
|
||||
<?php echo $selectedFieldAlias; ?>
|
||||
<a class="remove-field" fieldToRemove="<?php echo $selectedField; ?>">X</a>
|
||||
<input type="hidden" name="<?php echo $selectedField; ?>" value="<?php echo $selectedField; ?>">
|
||||
</span>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<input type="hidden" id="<?php echo FilterWidget::CMD_REMOVE_FIELD; ?>" name="<?php echo FilterWidget::CMD_REMOVE_FIELD; ?>" value="">
|
||||
|
||||
dndSF();
|
||||
addEventsSF();
|
||||
})
|
||||
.fail(function(jqXHR, textStatus, errorThrown) {
|
||||
alert(textStatus);
|
||||
});
|
||||
}
|
||||
|
||||
function resetSelectedFields()
|
||||
{
|
||||
$("#filterSelectFieldsDnd").html("");
|
||||
$("#addField").html("");
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
renderSelectedFields();
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
<div id="filterSelectFieldsDnd" class="filter-select-fields-dnd-div"></div>
|
||||
|
||||
<div>
|
||||
<span>
|
||||
Add field:
|
||||
</span>
|
||||
<span>
|
||||
<select id="<?php echo FilterWidget::CMD_ADD_FIELD; ?>" name="<?php echo FilterWidget::CMD_ADD_FIELD; ?>">
|
||||
<option value="">Select a field to add..</option>
|
||||
<?php
|
||||
for ($listFieldsCounter = 0; $listFieldsCounter < count($listFields); $listFieldsCounter++)
|
||||
{
|
||||
$listField = $listFields[$listFieldsCounter];
|
||||
$listFieldAlias = $listField;
|
||||
|
||||
if ($columnsAliases != null)
|
||||
{
|
||||
$listFieldAlias = $columnsAliases[$listFieldsCounter];
|
||||
}
|
||||
?>
|
||||
<option value="<?php echo $listField; ?>"><?php echo $listFieldAlias; ?></option>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
<select id="addField" class=""></select>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@@ -1,69 +1,285 @@
|
||||
<div>
|
||||
<?php
|
||||
$selectedFilters = FilterWidget::getSelectedFilters();
|
||||
$columnsAliases = FilterWidget::getColumnsAliases();
|
||||
<script language="Javascript" type="text/javascript">
|
||||
|
||||
for ($filtersCounter = 0; $filtersCounter < count($selectedFilters); $filtersCounter++)
|
||||
function resetEventsSFilters()
|
||||
{
|
||||
$("#addFilter").off('change');
|
||||
}
|
||||
|
||||
function addEventsSFilters()
|
||||
{
|
||||
$("#addFilter").change(function(event) {
|
||||
|
||||
$.ajax({
|
||||
url: "<?php echo base_url('index.ci.php/system/Filters/addSelectedFilters'); ?>",
|
||||
method: "POST",
|
||||
data: {
|
||||
fieldName: $(this).val()
|
||||
}
|
||||
})
|
||||
.done(function(data, textStatus, jqXHR) {
|
||||
|
||||
resetSelectedFilters();
|
||||
renderSelectedFilters();
|
||||
|
||||
renderTableDataset();
|
||||
|
||||
}).fail(function(jqXHR, textStatus, errorThrown) {
|
||||
alert(textStatus);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
$(".remove-filter").click(function(event) {
|
||||
|
||||
$.ajax({
|
||||
url: "<?php echo base_url('index.ci.php/system/Filters/removeSelectedFilters'); ?>",
|
||||
method: "POST",
|
||||
data: {
|
||||
fieldName: $(this).attr('filterToRemove')
|
||||
}
|
||||
})
|
||||
.done(function(data, textStatus, jqXHR) {
|
||||
|
||||
resetSelectedFilters();
|
||||
renderSelectedFilters();
|
||||
|
||||
renderTableDataset();
|
||||
|
||||
}).fail(function(jqXHR, textStatus, errorThrown) {
|
||||
alert(textStatus);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
$(".select-filter-operation").change(function() {
|
||||
|
||||
if ($(this).val() == "set" || $(this).val() == "nset")
|
||||
{
|
||||
$(this).parent().parent().find(".select-filter-operation-value").addClass("hidden-control");
|
||||
$(this).parent().parent().find(".select-filter-option").addClass("hidden-control");
|
||||
|
||||
$(this).parent().parent().find(".select-filter-operation-value").prop('disabled', true);
|
||||
$(this).parent().parent().find(".select-filter-option").prop('disabled', true);
|
||||
}
|
||||
else
|
||||
{
|
||||
$(this).parent().parent().find(".select-filter-operation-value").removeClass("hidden-control");
|
||||
$(this).parent().parent().find(".select-filter-option").removeClass("hidden-control");
|
||||
|
||||
$(this).parent().parent().find(".select-filter-operation-value").prop('disabled', false);
|
||||
$(this).parent().parent().find(".select-filter-option").prop('disabled', false);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
$("#applyFilter").click(function() {
|
||||
|
||||
var selectFilterName = [];
|
||||
var selectFilterOperation = [];
|
||||
var selectFilterOperationValue = [];
|
||||
var selectFilterOption = [];
|
||||
|
||||
$("#selectedFilters > div").each(function(i, e) {
|
||||
var tmpSelectFilterName = $(this).find('.hidden-field-name').val();
|
||||
var tmpSelectFilterOperation = $(this).find('.select-filter-operation').val();
|
||||
var tmpSelectFilterOperationValue = $(this).find('.select-filter-operation-value:enabled').val();
|
||||
var tmpSelectFilterOption = $(this).find('.select-filter-option:enabled').val();
|
||||
|
||||
selectFilterName.push(tmpSelectFilterName);
|
||||
selectFilterOperation.push(tmpSelectFilterOperation);
|
||||
selectFilterOperationValue.push(tmpSelectFilterOperationValue != null ? tmpSelectFilterOperationValue : "");
|
||||
selectFilterOption.push(tmpSelectFilterOption != null ? tmpSelectFilterOption : "");
|
||||
});
|
||||
|
||||
$.ajax({
|
||||
url: "<?php echo base_url('index.ci.php/system/Filters/applyFilter'); ?>",
|
||||
method: "POST",
|
||||
data: {
|
||||
filterNames: selectFilterName,
|
||||
filterOperations: selectFilterOperation,
|
||||
filterOperationValues: selectFilterOperationValue,
|
||||
filterOptions: selectFilterOption
|
||||
}
|
||||
})
|
||||
.done(function(data, textStatus, jqXHR) {
|
||||
|
||||
// Success
|
||||
|
||||
}).fail(function(jqXHR, textStatus, errorThrown) {
|
||||
|
||||
// Error
|
||||
|
||||
}).always(function() {
|
||||
|
||||
location.reload();
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
function renderSelectedFilterFields(metaData, activeFilters, activeFiltersOperation, activeFiltersOption)
|
||||
{
|
||||
var html = '';
|
||||
|
||||
if (metaData.type.toLowerCase().indexOf("int") >= 0)
|
||||
{
|
||||
$selectedFilter = $selectedFilters[$filtersCounter];
|
||||
|
||||
$md = FilterWidget::getFilterMetaData($selectedFilter, $metaData);
|
||||
$selectedFieldAlias = $md->name;
|
||||
|
||||
if ($columnsAliases != null)
|
||||
{
|
||||
$indx = array_search($selectedFilter, $listFields);
|
||||
if ($indx !== false)
|
||||
{
|
||||
$selectedFieldAlias = $columnsAliases[$indx];
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
<div>
|
||||
|
||||
<span>
|
||||
<?php echo $selectedFieldAlias; ?>
|
||||
</span>
|
||||
|
||||
<?php echo FilterWidget::renderFilterType($md); ?>
|
||||
|
||||
<span>
|
||||
<input type="button" value="X" class="remove-filter" filterToRemove="<?php echo $md->name; ?>">
|
||||
</span>
|
||||
|
||||
</div>
|
||||
<?php
|
||||
html = '<span>';
|
||||
html += ' <select class="select-filter-operation">';
|
||||
html += ' <option value="equal" ' + (activeFiltersOperation == "equal" ? "selected" : "") + '>equal</option>';
|
||||
html += ' <option value="nequal" ' + (activeFiltersOperation == "nqual" ? "selected" : "") + '>not equal</option>';
|
||||
html += ' <option value="gt" ' + (activeFiltersOperation == "gt" ? "selected" : "") + '>greater than</option>';
|
||||
html += ' <option value="lt" ' + (activeFiltersOperation == "lt" ? "selected" : "") + '>less than</option>';
|
||||
html += ' </select>';
|
||||
html += '</span>';
|
||||
html += '<span>';
|
||||
html += ' <input type="number" value="' + activeFilters + '" class="select-filter-operation-value">';
|
||||
html += '</span>';
|
||||
}
|
||||
?>
|
||||
<input type="hidden" id="<?php echo FilterWidget::CMD_REMOVE_FILTER; ?>" name="<?php echo FilterWidget::CMD_REMOVE_FILTER; ?>" value="">
|
||||
</div>
|
||||
<div>
|
||||
<span>
|
||||
Add filter:
|
||||
</span>
|
||||
<span>
|
||||
<select id="<?php echo FilterWidget::CMD_ADD_FILTER; ?>" name="<?php echo FilterWidget::CMD_ADD_FILTER; ?>">
|
||||
<option value="">Select a filter to add...</option>
|
||||
<?php
|
||||
for ($listFieldsCounter = 0; $listFieldsCounter < count($listFields); $listFieldsCounter++)
|
||||
if (metaData.type.toLowerCase().indexOf('varchar') >= 0)
|
||||
{
|
||||
html = '<span>';
|
||||
html += ' <select class="select-filter-operation">';
|
||||
html += ' <option value="contains" ' + (activeFiltersOperation == "contains" ? "selected" : "") + '>contains</option>';
|
||||
html += ' <option value="ncontains" ' + (activeFiltersOperation == "ncontains" ? "selected" : "") + '>does not contain</option>';
|
||||
html += ' </select>';
|
||||
html += '</span>';
|
||||
html += '<span>';
|
||||
html += ' <input type="text" value="' + activeFilters + '" class="select-filter-operation-value">';
|
||||
html += '</span>';
|
||||
}
|
||||
if (metaData.type.toLowerCase().indexOf('bool') >= 0)
|
||||
{
|
||||
html = '<span>';
|
||||
html += ' <select class="select-filter-operation">';
|
||||
html += ' <option value="true" ' + (activeFiltersOperation == "true" ? "selected" : "") + '>is true</option>';
|
||||
html += ' <option value="false" ' + (activeFiltersOperation == "false" ? "selected" : "") + '>is false</option>';
|
||||
html += ' </select>';
|
||||
html += '</span>';
|
||||
html += '<span>';
|
||||
html += ' <input type="hidden" value="' + activeFilters + '" class="select-filter-operation-value">';
|
||||
html += '</span>';
|
||||
}
|
||||
if (metaData.type.toLowerCase().indexOf('timestamp') >= 0 || metaData.type.toLowerCase().indexOf('date') >= 0)
|
||||
{
|
||||
var classOperation = 'select-filter-operation-value';
|
||||
var classOption = 'select-filter-option';
|
||||
var disabled = "";
|
||||
|
||||
if (activeFiltersOperation == "set" || activeFiltersOperation == "nset")
|
||||
{
|
||||
$field = $listFields[$listFieldsCounter];
|
||||
$listFieldAlias = $field;
|
||||
|
||||
if ($columnsAliases != null)
|
||||
{
|
||||
$listFieldAlias = $columnsAliases[$listFieldsCounter];
|
||||
}
|
||||
?>
|
||||
<option value="<?php echo $field; ?>"><?php echo $listFieldAlias; ?></option>
|
||||
<?php
|
||||
classOperation += ' hidden-control';
|
||||
classOption += ' hidden-control';
|
||||
disabled = "disabled";
|
||||
}
|
||||
?>
|
||||
</select>
|
||||
</span>
|
||||
|
||||
<span>
|
||||
<input id="applyFilter" name="applyFilter" type="button" value="Apply">
|
||||
</span>
|
||||
</div>
|
||||
html = '<span>';
|
||||
html += ' <select class="select-filter-operation">';
|
||||
html += ' <option value="lt" ' + (activeFiltersOperation == "lt" ? "selected" : "") + '>less than</option>';
|
||||
html += ' <option value="gt" ' + (activeFiltersOperation == "gt" ? "selected" : "") + '>greater than</option>';
|
||||
html += ' <option value="set" ' + (activeFiltersOperation == "set" ? "selected" : "") + '>is set</option>';
|
||||
html += ' <option value="nset" ' + (activeFiltersOperation == "nset" ? "selected" : "") + '>is not set</option>';
|
||||
html += ' </select>';
|
||||
html += '</span>';
|
||||
html += '<span>';
|
||||
html += ' <input type="text" value="' + activeFilters + '" class="' + classOperation + '" ' + disabled + '>';
|
||||
html += '</span>';
|
||||
html += '<span>';
|
||||
html += ' <select class="' + classOption + '" ' + disabled + '>';
|
||||
html += ' <option value="days" ' + (activeFiltersOption == "days" ? "selected" : "") + '>Days</option>';
|
||||
html += ' <option value="months" ' + (activeFiltersOption == "months" ? "selected" : "") + '>Months</option>';
|
||||
html += ' </select>';
|
||||
html += '</span>';
|
||||
}
|
||||
|
||||
html += '<span>';
|
||||
html += ' <input type="hidden" value="' + metaData.name + '" class="hidden-field-name">';
|
||||
html += '</span>';
|
||||
|
||||
return html;
|
||||
}
|
||||
|
||||
function renderSelectedFilters()
|
||||
{
|
||||
$.ajax({
|
||||
url: "<?php echo base_url('index.ci.php/system/Filters/selectFilters'); ?>",
|
||||
method: "GET",
|
||||
data: {},
|
||||
dataType: "json"
|
||||
})
|
||||
.done(function(data, textStatus, jqXHR) {
|
||||
|
||||
resetEventsSFilters();
|
||||
|
||||
if (data != null)
|
||||
{
|
||||
var strDropDown = '<option value="">Select a filter to add..</option>';
|
||||
$("#addFilter").append(strDropDown);
|
||||
|
||||
for (var i = 0; i < data.allSelectedFields.length; i++)
|
||||
{
|
||||
var fieldName = data.allSelectedFields[i];
|
||||
var fieldToDisplay = data.allColumnsAliases[i];
|
||||
|
||||
strDropDown = '<option value="' + fieldName + '">' + fieldToDisplay + '</option>';
|
||||
$("#addFilter").append(strDropDown);
|
||||
}
|
||||
|
||||
for (var i = 0; i < data.selectedFilters.length; i++)
|
||||
{
|
||||
var selectedFilters = '<div>';
|
||||
|
||||
selectedFilters += '<span>';
|
||||
selectedFilters += data.selectedFiltersAliases[i];
|
||||
selectedFilters += '</span>';
|
||||
|
||||
selectedFilters += renderSelectedFilterFields(
|
||||
data.selectedFiltersMetaData[i],
|
||||
data.selectedFiltersActiveFilters[i],
|
||||
data.selectedFiltersActiveFiltersOperation[i],
|
||||
data.selectedFiltersActiveFiltersOption[i]
|
||||
);
|
||||
|
||||
selectedFilters += '<span>';
|
||||
selectedFilters += '<input type="button" value="X" class="remove-filter" filterToRemove="' + data.selectedFilters[i] + '">';
|
||||
selectedFilters += '</span>';
|
||||
|
||||
selectedFilters += '</div>';
|
||||
|
||||
$("#selectedFilters").append(selectedFilters);
|
||||
}
|
||||
}
|
||||
|
||||
addEventsSFilters();
|
||||
})
|
||||
.fail(function(jqXHR, textStatus, errorThrown) {
|
||||
alert(textStatus);
|
||||
});
|
||||
}
|
||||
|
||||
function resetSelectedFilters()
|
||||
{
|
||||
$("#addFilter").html("");
|
||||
$("#selectedFilters").html("");
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
renderSelectedFilters();
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
<div id="selectedFilters"></div>
|
||||
|
||||
<div>
|
||||
<span>
|
||||
Add filter:
|
||||
</span>
|
||||
<span>
|
||||
<select id="addFilter" class=""></select>
|
||||
</span>
|
||||
|
||||
<span>
|
||||
<input id="applyFilter" type="button" value="Apply">
|
||||
</span>
|
||||
</div>
|
||||
|
||||
@@ -1,104 +1,156 @@
|
||||
<?php
|
||||
$results = $dataset->retval;
|
||||
<script language="Javascript" type="text/javascript">
|
||||
|
||||
$selectedFields = FilterWidget::getSelectedFields();
|
||||
$additionalColumns = FilterWidget::getAdditionalColumns();
|
||||
$checkboxes = FilterWidget::getCheckboxes();
|
||||
$columnsAliases = FilterWidget::getColumnsAliases();
|
||||
?>
|
||||
function callTableSorter()
|
||||
{
|
||||
// Checks if the table contains data (rows)
|
||||
if ($('#filterTableDataset').find('tbody:empty').length == 0
|
||||
&& $('#filterTableDataset').find('tr:empty').length == 0
|
||||
&& $('#filterTableDataset').hasClass('table-condensed'))
|
||||
{
|
||||
$("#filterTableDataset").tablesorter({
|
||||
widgets: ["zebra", "filter"]
|
||||
});
|
||||
|
||||
var config = $('#filterTableDataset')[0].config;
|
||||
$.tablesorter.updateAll(config, true, null);
|
||||
}
|
||||
}
|
||||
|
||||
function renderTableDataset()
|
||||
{
|
||||
$.ajax({
|
||||
url: "<?php echo base_url('index.ci.php/system/Filters/tableDataset'); ?>",
|
||||
method: "GET",
|
||||
data: {},
|
||||
dataType: "json"
|
||||
})
|
||||
.done(function(data, textStatus, jqXHR) {
|
||||
|
||||
resetTableDataset();
|
||||
|
||||
if (data != null)
|
||||
{
|
||||
if (data.checkboxes != null)
|
||||
{
|
||||
$("#filterTableDataset > thead > tr").append("<th title=\"Select\">Select</th>");
|
||||
}
|
||||
|
||||
var arrayFieldsToDisplay = [];
|
||||
|
||||
if (data.columnsAliases != null && $.isArray(data.columnsAliases) && data.columnsAliases.length > 0)
|
||||
{
|
||||
arrayFieldsToDisplay = data.columnsAliases;
|
||||
}
|
||||
else if (data.selectedFields != null && $.isArray(data.selectedFields))
|
||||
{
|
||||
arrayFieldsToDisplay = data.selectedFields;
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------------------------------------ */
|
||||
if (data.checkboxes != null && data.checkboxes != "")
|
||||
{
|
||||
$("#filterTableDataset > thead > tr").html("<th title=\"Select\">Select</th>");
|
||||
}
|
||||
|
||||
for (var i = 0; i < arrayFieldsToDisplay.length; i++)
|
||||
{
|
||||
var th = arrayFieldsToDisplay[i];
|
||||
|
||||
$("#filterTableDataset > thead > tr").append("<th title=\"" + th + "\">" + th + "</th>");
|
||||
}
|
||||
|
||||
if (data.additionalColumns != null && $.isArray(data.additionalColumns))
|
||||
{
|
||||
for (var i = 0; i < data.additionalColumns.length; i++)
|
||||
{
|
||||
var th = data.additionalColumns[i];
|
||||
|
||||
$("#filterTableDataset > thead > tr").append("<th title=\"" + th + "\">" + th + "</th>");
|
||||
}
|
||||
}
|
||||
/* ------------------------------------------------------------------------------------------------ */
|
||||
|
||||
if (arrayFieldsToDisplay.length > 0)
|
||||
{
|
||||
if (data.dataset != null && $.isArray(data.dataset))
|
||||
{
|
||||
for (var i = 0; i < data.dataset.length; i++)
|
||||
{
|
||||
var record = data.dataset[i];
|
||||
var strHtml = '<tr class="' + record.FILTER_CLASS_MARK_ROW + '">';
|
||||
|
||||
if (data.checkboxes != null && data.checkboxes != "")
|
||||
{
|
||||
strHtml += '<td>';
|
||||
strHtml += '<input type="checkbox" name="' + data.checkboxes + '[]" value="' + record[data.checkboxes] + '">';
|
||||
strHtml += '</td>';
|
||||
}
|
||||
|
||||
$.each(arrayFieldsToDisplay, function(i, fieldToDisplay) {
|
||||
|
||||
if (record.hasOwnProperty(data.selectedFields[i]))
|
||||
{
|
||||
strHtml += '<td>' + record[data.selectedFields[i]] + '</td>';
|
||||
}
|
||||
});
|
||||
|
||||
if (data.additionalColumns != null && $.isArray(data.additionalColumns))
|
||||
{
|
||||
$.each(data.additionalColumns, function(i, additionalColumn) {
|
||||
|
||||
if (record.hasOwnProperty(additionalColumn))
|
||||
{
|
||||
strHtml += '<td>' + record[additionalColumn] + '</td>';
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
strHtml += '</tr>';
|
||||
|
||||
$("#filterTableDataset > tbody").append(strHtml);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// console.log("No dataset!!!");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
console.log("No fields to display!!!");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
console.log("No data!!!");
|
||||
}
|
||||
|
||||
callTableSorter();
|
||||
|
||||
})
|
||||
.fail(function(jqXHR, textStatus, errorThrown) {
|
||||
alert(textStatus);
|
||||
});
|
||||
}
|
||||
|
||||
function resetTableDataset()
|
||||
{
|
||||
$("#filterTableDataset > thead > tr").html("");
|
||||
$("#filterTableDataset > tbody").html("");
|
||||
}
|
||||
|
||||
$(document).ready(function() {
|
||||
renderTableDataset();
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
<div>
|
||||
<table class="tablesorter" id="tableDataset">
|
||||
<table class="tablesorter table-bordered table-responsive" id="filterTableDataset">
|
||||
<thead>
|
||||
<tr>
|
||||
<?php
|
||||
if ($checkboxes != null)
|
||||
{
|
||||
?>
|
||||
<th title="Select">Select</th>
|
||||
<?php
|
||||
}
|
||||
|
||||
for ($selectedFieldsCounter = 0; $selectedFieldsCounter < count($selectedFields); $selectedFieldsCounter++)
|
||||
{
|
||||
$selectedField = $selectedFields[$selectedFieldsCounter];
|
||||
$selectedFieldAlias = $selectedField;
|
||||
|
||||
if ($columnsAliases != null)
|
||||
{
|
||||
$indx = array_search($selectedField, $listFields);
|
||||
if ($indx !== false)
|
||||
{
|
||||
$selectedFieldAlias = $columnsAliases[$indx];
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
<th title="<?php echo $selectedField; ?>"><?php echo $selectedFieldAlias; ?></th>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
<?php
|
||||
for ($additionalColumnsCounter = 0; $additionalColumnsCounter < count($additionalColumns); $additionalColumnsCounter++)
|
||||
{
|
||||
$additionalColumn = $additionalColumns[$additionalColumnsCounter];
|
||||
?>
|
||||
<th title="<?php echo $additionalColumn; ?>"><?php echo $additionalColumn; ?></th>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</tr>
|
||||
<tr></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
for ($resultsCounter = 0; $resultsCounter < count($results); $resultsCounter++)
|
||||
{
|
||||
$result = $results[$resultsCounter];
|
||||
?>
|
||||
<tr class="<?php echo FilterWidget::markRow($result); ?>">
|
||||
<?php
|
||||
if ($checkboxes != null)
|
||||
{
|
||||
?>
|
||||
<td>
|
||||
<input type="checkbox" name="<?php echo $checkboxes[0]; ?>[]" value="<?php echo $result->{$checkboxes[0]}; ?>">
|
||||
</td>
|
||||
<?php
|
||||
}
|
||||
|
||||
for ($selectedFieldsCounter = 0; $selectedFieldsCounter < count($selectedFields); $selectedFieldsCounter++)
|
||||
{
|
||||
$selectedField = $selectedFields[$selectedFieldsCounter];
|
||||
|
||||
if (array_key_exists($selectedField, $result))
|
||||
{
|
||||
$formattedResult = FilterWidget::formatRaw($selectedField, $result->{$selectedField}, $result);
|
||||
?>
|
||||
<td>
|
||||
<?php
|
||||
echo $formattedResult->{$selectedField};
|
||||
?>
|
||||
</td>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
for ($additionalColumnsCounter = 0; $additionalColumnsCounter < count($additionalColumns); $additionalColumnsCounter++)
|
||||
{
|
||||
$additionalColumn = $additionalColumns[$additionalColumnsCounter];
|
||||
$formattedResult = FilterWidget::formatRaw($additionalColumn, null, $result);
|
||||
?>
|
||||
<td>
|
||||
<?php
|
||||
echo $formattedResult->{$additionalColumn};
|
||||
?>
|
||||
</td>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</tr>
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
<tbody></tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
@@ -31,6 +31,9 @@ class FilterWidget extends Widget
|
||||
|
||||
const SESSION_NAME = 'FILTER';
|
||||
|
||||
const ALL_SELECTED_FIELDS = 'allSelectedFields';
|
||||
const ALL_COLUMNS_ALIASES = 'allColumnsAliases';
|
||||
|
||||
const SELECTED_FIELDS = 'selectedFields';
|
||||
const SELECTED_FILTERS = 'selectedFilters';
|
||||
const ACTIVE_FILTERS = 'activeFilters';
|
||||
@@ -130,9 +133,6 @@ class FilterWidget extends Widget
|
||||
//
|
||||
$this->_setSessionFilterData();
|
||||
|
||||
//
|
||||
$this->_saveFilter();
|
||||
|
||||
//
|
||||
$this->FiltersModel->resetQuery();
|
||||
|
||||
@@ -142,8 +142,8 @@ class FilterWidget extends Widget
|
||||
//
|
||||
$this->listFields = $this->FiltersModel->getExecutedQueryListFields();
|
||||
|
||||
|
||||
//
|
||||
$selectedFields = array();
|
||||
$filterSessionArray = $this->session->userdata(self::SESSION_NAME);
|
||||
if (isset($filterSessionArray[self::SELECTED_FIELDS]))
|
||||
{
|
||||
@@ -154,7 +154,6 @@ class FilterWidget extends Widget
|
||||
if (count($selectedFields) == 0)
|
||||
{
|
||||
$filterSessionArray[self::SELECTED_FIELDS] = $this->listFields;
|
||||
$this->session->set_userdata(self::SESSION_NAME, $filterSessionArray);
|
||||
}
|
||||
|
||||
//
|
||||
@@ -163,21 +162,54 @@ class FilterWidget extends Widget
|
||||
show_error('Parameter columnsAliases does not have a number of items equal to those returned by the query');
|
||||
}
|
||||
|
||||
$filterSessionArray[self::COLUMNS_ALIASES] = $this->_getColumnAliasesFromPost();
|
||||
$filterSessionArray[self::CHECKBOXES] = $this->checkboxes;
|
||||
|
||||
if ($this->app != null)
|
||||
{
|
||||
$filterSessionArray[self::APP_PARAMETER] = $this->app;
|
||||
}
|
||||
|
||||
if ($this->datasetName != null)
|
||||
{
|
||||
$filterSessionArray[self::DATASET_NAME_PARAMETER] = $this->datasetName;
|
||||
}
|
||||
|
||||
$filterSessionArray[self::ALL_SELECTED_FIELDS] = $this->listFields;
|
||||
$filterSessionArray[self::ALL_COLUMNS_ALIASES] = $this->columnsAliases;
|
||||
|
||||
/* ------------------------------------------------------------ */
|
||||
|
||||
$tmpDataset = null;
|
||||
if (hasData($this->dataset))
|
||||
{
|
||||
$tmpDataset = array();
|
||||
|
||||
for ($resultsCounter = 0; $resultsCounter < count($this->dataset->retval); $resultsCounter++)
|
||||
{
|
||||
$result = $this->dataset->retval[$resultsCounter];
|
||||
|
||||
$class = $this->_markRow($result);
|
||||
$formattedResult = $this->_formatRaw($result);
|
||||
$formattedResult->FILTER_CLASS_MARK_ROW = $class;
|
||||
$tmpDataset[] = $formattedResult;
|
||||
}
|
||||
}
|
||||
$filterSessionArray[self::DATASET_PARAMETER] = $tmpDataset;
|
||||
|
||||
/* ------------------------------------------------------------ */
|
||||
|
||||
//
|
||||
$this->metaData = $this->FiltersModel->getExecutedQueryMetaData();
|
||||
|
||||
$filterSessionArray[self::METADATA_PARAMETER] = $this->metaData;
|
||||
|
||||
$this->session->set_userdata(self::SESSION_NAME, $filterSessionArray);
|
||||
|
||||
//
|
||||
$this->loadViewFilters();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public static function getSelectedFields()
|
||||
{
|
||||
return self::_getFromSession(self::SELECTED_FIELDS);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@@ -186,14 +218,6 @@ class FilterWidget extends Widget
|
||||
return self::_getFromSession(self::SELECTED_FILTERS);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public static function getAdditionalColumns()
|
||||
{
|
||||
return self::_getFromSession(self::ADDITIONAL_COLUMNS);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@@ -209,12 +233,7 @@ class FilterWidget extends Widget
|
||||
{
|
||||
if (self::$FilterWidgetInstance->hideHeader != true)
|
||||
{
|
||||
self::_loadView(
|
||||
self::WIDGET_URL_SELECT_FIELDS,
|
||||
array(
|
||||
self::LIST_FIELDS_PARAMETER => self::$FilterWidgetInstance->listFields
|
||||
)
|
||||
);
|
||||
self::_loadView(self::WIDGET_URL_SELECT_FIELDS);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -225,13 +244,7 @@ class FilterWidget extends Widget
|
||||
{
|
||||
if (self::$FilterWidgetInstance->hideHeader != true)
|
||||
{
|
||||
self::_loadView(
|
||||
self::WIDGET_URL_SELECT_FILTERS,
|
||||
array(
|
||||
self::LIST_FIELDS_PARAMETER => self::$FilterWidgetInstance->listFields,
|
||||
self::METADATA_PARAMETER => self::$FilterWidgetInstance->metaData
|
||||
)
|
||||
);
|
||||
self::_loadView(self::WIDGET_URL_SELECT_FILTERS);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -251,147 +264,32 @@ class FilterWidget extends Widget
|
||||
*/
|
||||
public static function loadViewTableDataset()
|
||||
{
|
||||
self::_loadView(
|
||||
self::WIDGET_URL_TABLE_DATASET,
|
||||
array(
|
||||
self::LIST_FIELDS_PARAMETER => self::$FilterWidgetInstance->listFields,
|
||||
self::DATASET_PARAMETER => self::$FilterWidgetInstance->dataset
|
||||
)
|
||||
);
|
||||
self::_loadView(self::WIDGET_URL_TABLE_DATASET);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public static function getFilterMetaData($filter, $metaData)
|
||||
private function _formatRaw($datasetRaw)
|
||||
{
|
||||
$md = null;
|
||||
$tmpDatasetRaw = clone $datasetRaw;
|
||||
|
||||
for ($metaDataCounter = 0; $metaDataCounter < count($metaData); $metaDataCounter++)
|
||||
foreach ($tmpDatasetRaw as $columnName => $columnValue)
|
||||
{
|
||||
if ($metaData[$metaDataCounter]->name == $filter)
|
||||
if (is_bool($columnValue))
|
||||
{
|
||||
$md = $metaData[$metaDataCounter];
|
||||
break;
|
||||
$tmpDatasetRaw->{$columnValue} = $columnValue === true ? 'true' : 'false';
|
||||
}
|
||||
elseif (DateTime::createFromFormat('Y-m-d G:i:s', $columnValue) !== false)
|
||||
{
|
||||
$tmpDatasetRaw->{$columnValue} = date(self::DEFAULT_DATE_FORMAT, strtotime($columnValue));
|
||||
}
|
||||
}
|
||||
|
||||
return $md;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public static function renderFilterType($filterMetaData)
|
||||
{
|
||||
$html = '';
|
||||
$activeFilterValue = self::_getActiveFilterValue($filterMetaData->name);
|
||||
$activeFilterOperationValue = self::_getActiveFilterOperationValue($filterMetaData->name);
|
||||
$activeFilterOptionValue = self::_getActiveFilterOptionValue($filterMetaData->name);
|
||||
|
||||
if ($filterMetaData->type == 'int4')
|
||||
if ($this->formatRaw != null)
|
||||
{
|
||||
$html = '
|
||||
<span>
|
||||
<select name="%s" class="select-filter-operation">
|
||||
<option value="'.self::OP_EQUAL.'" '.($activeFilterOperationValue == self::OP_EQUAL ? 'selected' : '').'>equal</option>
|
||||
<option value="'.self::OP_NOT_EQUAL.'" '.($activeFilterOperationValue == self::OP_NOT_EQUAL ? 'selected' : '').'>not equal</option>
|
||||
<option value="'.self::OP_GREATER_THAN.'" '.($activeFilterOperationValue == self::OP_GREATER_THAN ? 'selected' : '').'>greater than</option>
|
||||
<option value="'.self::OP_LESS_THAN.'" '.($activeFilterOperationValue == self::OP_LESS_THAN ? 'selected' : '').'>less than</option>
|
||||
</select>
|
||||
</span>
|
||||
<span>
|
||||
<input type="number" name="%s" value="%s" class="select-filter-operation-value">
|
||||
</span>
|
||||
';
|
||||
}
|
||||
elseif ($filterMetaData->type == 'varchar')
|
||||
{
|
||||
$html = '
|
||||
<span>
|
||||
<select name="%s" class="select-filter-operation">
|
||||
<option value="'.self::OP_CONTAINS.'" '.($activeFilterOperationValue == self::OP_CONTAINS ? 'selected' : '').'>contains</option>
|
||||
<option value="'.self::OP_NOT_CONTAINS.'" '.($activeFilterOperationValue == self::OP_NOT_CONTAINS ? 'selected' : '').'>does not contain</option>
|
||||
</select>
|
||||
</span>
|
||||
<span>
|
||||
<input type="text" name="%s" value="%s" class="select-filter-operation-value">
|
||||
</span>
|
||||
';
|
||||
}
|
||||
elseif ($filterMetaData->type == 'bool')
|
||||
{
|
||||
$html = '
|
||||
<span>
|
||||
<select name="%s" class="select-filter-operation">
|
||||
<option value="'.self::OP_IS_TRUE.'" '.($activeFilterOperationValue == self::OP_IS_TRUE ? 'selected' : '').'>is true</option>
|
||||
<option value="'.self::OP_IS_FALSE.'" '.($activeFilterOperationValue == self::OP_IS_FALSE ? 'selected' : '').'>is false</option>
|
||||
</select>
|
||||
</span>
|
||||
<span>
|
||||
<input type="hidden" name="%s" value="%s">
|
||||
</span>
|
||||
';
|
||||
}
|
||||
elseif ($filterMetaData->type == 'timestamp')
|
||||
{
|
||||
$classOperation = 'select-filter-operation-value';
|
||||
$classOption = 'select-filter-option';
|
||||
if ($activeFilterOperationValue == self::OP_SET)
|
||||
{
|
||||
$classOperation .= ' hidden-control';
|
||||
$classOption .= ' hidden-control';
|
||||
}
|
||||
|
||||
$html = '
|
||||
<span>
|
||||
<select name="%s" class="select-filter-operation">
|
||||
<option value="'.self::OP_LESS_THAN.'" '.($activeFilterOperationValue == self::OP_LESS_THAN ? 'selected' : '').'>less than</option>
|
||||
<option value="'.self::OP_GREATER_THAN.'" '.($activeFilterOperationValue == self::OP_GREATER_THAN ? 'selected' : '').'>greater than</option>
|
||||
<option value="'.self::OP_SET.'" '.($activeFilterOperationValue == self::OP_SET ? 'selected' : '').'>is set</option>
|
||||
<option value="'.self::OP_NOT_SET.'" '.($activeFilterOperationValue == self::OP_NOT_SET ? 'selected' : '').'>is not set</option>
|
||||
</select>
|
||||
</span>
|
||||
<span>
|
||||
<input type="text" name="%s" value="%s" class="'.$classOperation.'">
|
||||
</span>
|
||||
<select name="%s" class="'.$classOption.'">
|
||||
<option value="'.self::OPT_DAYS.'" '.($activeFilterOptionValue == self::OPT_DAYS ? 'selected' : '').'>Days</option>
|
||||
<option value="'.self::OPT_MONTHS.'" '.($activeFilterOptionValue == self::OPT_MONTHS ? 'selected' : '').'>Months</option>
|
||||
</select>
|
||||
';
|
||||
}
|
||||
|
||||
return sprintf($html, $filterMetaData->name.'-operation', $filterMetaData->name, $activeFilterValue, $filterMetaData->name.'-option');
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public static function formatRaw($fieldName, $fieldValue, $datasetRaw)
|
||||
{
|
||||
$tmpDatasetRaw = null;
|
||||
|
||||
if (is_object($datasetRaw))
|
||||
{
|
||||
$tmpDatasetRaw = clone $datasetRaw;
|
||||
$tmpMetaData = self::getFilterMetaData($fieldName, self::$FilterWidgetInstance->metaData);
|
||||
|
||||
if (is_bool($fieldValue))
|
||||
{
|
||||
$tmpDatasetRaw->{$fieldName} = $fieldValue === true ? 'true' : 'false';
|
||||
}
|
||||
elseif ($tmpMetaData != null && $tmpMetaData->type == 'timestamp')
|
||||
{
|
||||
$tmpDatasetRaw->{$fieldName} = date(self::DEFAULT_DATE_FORMAT, strtotime($fieldValue));
|
||||
}
|
||||
|
||||
$formatRaw = self::$FilterWidgetInstance->getFormatRaw();
|
||||
|
||||
if ($formatRaw != null)
|
||||
{
|
||||
$tmpDatasetRaw = $formatRaw($fieldName, $fieldValue, $tmpDatasetRaw);
|
||||
}
|
||||
$formatRaw = $this->formatRaw;
|
||||
$tmpDatasetRaw = $formatRaw($tmpDatasetRaw);
|
||||
}
|
||||
|
||||
return $tmpDatasetRaw;
|
||||
@@ -400,28 +298,18 @@ class FilterWidget extends Widget
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public static function markRow($datasetRaw)
|
||||
private function _markRow($datasetRaw)
|
||||
{
|
||||
$class = '';
|
||||
|
||||
if (is_object($datasetRaw))
|
||||
{
|
||||
$markRow = self::$FilterWidgetInstance->getMarkRow();
|
||||
if ($markRow != null)
|
||||
if ($this->markRow != null)
|
||||
{
|
||||
$markRow = $this->markRow;
|
||||
$class = $markRow($datasetRaw);
|
||||
}
|
||||
}
|
||||
|
||||
return $class;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public static function getCheckboxes()
|
||||
{
|
||||
return self::$FilterWidgetInstance->_getCheckboxes();
|
||||
return $class == null ? '' : $class;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -444,37 +332,7 @@ class FilterWidget extends Widget
|
||||
protected function loadViewFilters()
|
||||
{
|
||||
// Loads views
|
||||
$this->view(self::WIDGET_URL_FILTER,
|
||||
array(
|
||||
self::DATASET_PARAMETER => $this->dataset,
|
||||
self::METADATA_PARAMETER => $this->metaData,
|
||||
self::LIST_FIELDS_PARAMETER => $this->listFields
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
protected function getFormatRaw()
|
||||
{
|
||||
return $this->formatRaw;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
protected function getMarkRow()
|
||||
{
|
||||
return $this->markRow;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
protected function _getCheckboxes()
|
||||
{
|
||||
return $this->checkboxes;
|
||||
$this->view(self::WIDGET_URL_FILTER);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------------------------------------------
|
||||
@@ -614,6 +472,16 @@ class FilterWidget extends Widget
|
||||
$filterSessionArray[self::FILTER_NAME] = null;
|
||||
}
|
||||
|
||||
if (!isset($filterSessionArray[self::APP_PARAMETER]))
|
||||
{
|
||||
$filterSessionArray[self::APP_PARAMETER] = null;
|
||||
}
|
||||
|
||||
if (!isset($filterSessionArray[self::DATASET_NAME_PARAMETER]))
|
||||
{
|
||||
$filterSessionArray[self::DATASET_NAME_PARAMETER] = null;
|
||||
}
|
||||
|
||||
$this->session->set_userdata(self::SESSION_NAME, $filterSessionArray);
|
||||
}
|
||||
|
||||
@@ -700,9 +568,7 @@ class FilterWidget extends Widget
|
||||
$this->markRow = $args[self::MARK_ROW];
|
||||
}
|
||||
|
||||
if (isset($args[self::CHECKBOXES])
|
||||
&& is_array($args[self::CHECKBOXES])
|
||||
&& count($args[self::CHECKBOXES]) > 0)
|
||||
if (isset($args[self::CHECKBOXES]))
|
||||
{
|
||||
$this->checkboxes = $args[self::CHECKBOXES];
|
||||
}
|
||||
@@ -825,6 +691,7 @@ class FilterWidget extends Widget
|
||||
}
|
||||
|
||||
$this->filterName = $filterName;
|
||||
$this->app = $filter->retval[0]->app;
|
||||
|
||||
$filterSessionArray = array(
|
||||
self::SELECTED_FIELDS => $selectedFields,
|
||||
@@ -832,7 +699,9 @@ class FilterWidget extends Widget
|
||||
self::ACTIVE_FILTERS => $activeFilters,
|
||||
self::ACTIVE_FILTERS_OPERATION => $activeFiltersOperation,
|
||||
self::ACTIVE_FILTERS_OPTION => $activeFiltersOption,
|
||||
self::FILTER_NAME => $filterName
|
||||
self::FILTER_NAME => $filterName,
|
||||
self::APP_PARAMETER => $filter->retval[0]->app,
|
||||
self::DATASET_NAME_PARAMETER => $filter->retval[0]->dataset_name
|
||||
);
|
||||
|
||||
$this->session->set_userdata(self::SESSION_NAME, $filterSessionArray);
|
||||
@@ -845,7 +714,9 @@ class FilterWidget extends Widget
|
||||
self::ACTIVE_FILTERS => array(),
|
||||
self::ACTIVE_FILTERS_OPERATION => array(),
|
||||
self::ACTIVE_FILTERS_OPTION => array(),
|
||||
self::FILTER_NAME => null
|
||||
self::FILTER_NAME => null,
|
||||
self::APP_PARAMETER => null,
|
||||
self::DATASET_NAME_PARAMETER => null
|
||||
);
|
||||
|
||||
$this->session->set_userdata(self::SESSION_NAME, $filterSessionArray);
|
||||
@@ -963,23 +834,70 @@ class FilterWidget extends Widget
|
||||
$selectedFields = $filterSessionArray[self::SELECTED_FIELDS];
|
||||
}
|
||||
|
||||
if (is_array($_POST))
|
||||
{
|
||||
if (array_key_exists(self::CMD_ADD_FIELD, $_POST) && trim($_POST[self::CMD_ADD_FIELD]) != '')
|
||||
{
|
||||
if (!in_array($_POST[self::CMD_ADD_FIELD], $selectedFields))
|
||||
{
|
||||
$selectedFields[] = $_POST[self::CMD_ADD_FIELD];
|
||||
}
|
||||
}
|
||||
return $selectedFields;
|
||||
}
|
||||
|
||||
if (array_key_exists(self::CMD_REMOVE_FIELD, $_POST) && trim($_POST[self::CMD_REMOVE_FIELD]) != '')
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private function _getAppFromPost()
|
||||
{
|
||||
$app = $this->app;
|
||||
|
||||
$filterSessionArray = $this->session->userdata(self::SESSION_NAME);
|
||||
if (isset($filterSessionArray[self::APP_PARAMETER]))
|
||||
{
|
||||
$app = $filterSessionArray[self::APP_PARAMETER];
|
||||
}
|
||||
|
||||
return $app;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private function _getDatasetFromPost()
|
||||
{
|
||||
$datasetName = $this->datasetName;
|
||||
|
||||
$filterSessionArray = $this->session->userdata(self::SESSION_NAME);
|
||||
if (isset($filterSessionArray[self::DATASET_NAME_PARAMETER]))
|
||||
{
|
||||
$datasetName = $filterSessionArray[self::DATASET_NAME_PARAMETER];
|
||||
}
|
||||
|
||||
return $datasetName;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private function _getColumnAliasesFromPost()
|
||||
{
|
||||
$columnsAliases = $this->columnsAliases;
|
||||
$selectedFields = array();
|
||||
|
||||
$filterSessionArray = $this->session->userdata(self::SESSION_NAME);
|
||||
|
||||
if (isset($filterSessionArray[self::SELECTED_FIELDS]))
|
||||
{
|
||||
$selectedFields = $filterSessionArray[self::SELECTED_FIELDS];
|
||||
}
|
||||
|
||||
if (isset($this->listFields) && count($selectedFields) > 0)
|
||||
{
|
||||
$columnsAliases = array();
|
||||
|
||||
for ($i = 0; $i < count($selectedFields); $i++)
|
||||
{
|
||||
$selectedFields = $this->_removeElementFromArray($selectedFields, $_POST[self::CMD_REMOVE_FIELD]);
|
||||
if (($pos = array_search($selectedFields[$i], $this->listFields)) !== false)
|
||||
{
|
||||
$columnsAliases[] = $this->columnsAliases[$pos];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $selectedFields;
|
||||
return $columnsAliases;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -996,22 +914,6 @@ class FilterWidget extends Widget
|
||||
$selectedFilters = $filterSessionArray[self::SELECTED_FILTERS];
|
||||
}
|
||||
|
||||
if (is_array($_POST))
|
||||
{
|
||||
if (array_key_exists(self::CMD_ADD_FILTER, $_POST) && trim($_POST[self::CMD_ADD_FILTER]) != '')
|
||||
{
|
||||
if (!in_array($_POST[self::CMD_ADD_FILTER], $selectedFilters))
|
||||
{
|
||||
$selectedFilters[] = $_POST[self::CMD_ADD_FILTER];
|
||||
}
|
||||
}
|
||||
|
||||
if (array_key_exists(self::CMD_REMOVE_FILTER, $_POST) && trim($_POST[self::CMD_REMOVE_FILTER]) != '')
|
||||
{
|
||||
$selectedFilters = $this->_removeElementFromArray($selectedFilters, $_POST[self::CMD_REMOVE_FILTER]);
|
||||
}
|
||||
}
|
||||
|
||||
return $selectedFilters;
|
||||
}
|
||||
|
||||
@@ -1096,7 +998,9 @@ class FilterWidget extends Widget
|
||||
self::SELECTED_FIELDS => $this->_getSelectedFieldsFromPost(),
|
||||
self::SELECTED_FILTERS => $this->_getSelectedFiltersFromPost(),
|
||||
self::ADDITIONAL_COLUMNS => $this->additionalColumns,
|
||||
self::COLUMNS_ALIASES => $this->columnsAliases
|
||||
self::COLUMNS_ALIASES => $this->_getColumnAliasesFromPost(),
|
||||
self::APP_PARAMETER => $this->_getAppFromPost(),
|
||||
self::DATASET_NAME_PARAMETER => $this->_getDatasetFromPost()
|
||||
);
|
||||
|
||||
$filterSessionArray[self::ACTIVE_FILTERS] = array();
|
||||
@@ -1222,6 +1126,9 @@ class FilterWidget extends Widget
|
||||
case self::OP_NOT_SET:
|
||||
$condition = ' IS NULL';
|
||||
break;
|
||||
default:
|
||||
$condition = ' IS NOT NULL';
|
||||
break;
|
||||
}
|
||||
|
||||
$where .= $condition;
|
||||
@@ -1236,23 +1143,4 @@ class FilterWidget extends Widget
|
||||
|
||||
return $query;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private function _removeElementFromArray($array, $element)
|
||||
{
|
||||
$_removeElementFromArray = array();
|
||||
|
||||
for ($arrayCounter = 0; $arrayCounter < count($array); $arrayCounter++)
|
||||
{
|
||||
$arrayElement = $array[$arrayCounter];
|
||||
if ($arrayElement != $element)
|
||||
{
|
||||
$_removeElementFromArray[] = $arrayElement;
|
||||
}
|
||||
}
|
||||
|
||||
return $_removeElementFromArray;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ class NavigationMenuWidget extends Widget
|
||||
|
||||
echo '<li class="'.$expanded.'">';
|
||||
|
||||
if (isset($item['subscriptLink']) && isset($item['subscriptDescription']))
|
||||
if (isset($item['subscriptLinkId']) && isset($item['subscriptDescription']))
|
||||
{
|
||||
echo '<span>';
|
||||
}
|
||||
@@ -62,12 +62,12 @@ class NavigationMenuWidget extends Widget
|
||||
|
||||
echo '</a>';
|
||||
|
||||
if (isset($item['subscriptLink']) && isset($item['subscriptDescription']))
|
||||
if (isset($item['subscriptLinkId']) && isset($item['subscriptDescription']))
|
||||
{
|
||||
echo '<a class="menuSubscriptLink" href="'.$item['subscriptLink'].'">'.$item['subscriptDescription'].'</a>';
|
||||
echo '<a id="'.$item['subscriptLinkId'].'" class="menuSubscriptLink" value="'.$item['subscriptLinkValue'].'" href="#">'.$item['subscriptDescription'].'</a>';
|
||||
}
|
||||
|
||||
if (isset($item['subscriptLink']) && isset($item['subscriptDescription']))
|
||||
if (isset($item['subscriptLinkId']) && isset($item['subscriptDescription']))
|
||||
{
|
||||
echo '</span>';
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user