From b8c1aae2516a6bf5d3468f7488274736b6ad569f Mon Sep 17 00:00:00 2001 From: Paolo Date: Tue, 27 Feb 2018 18:37:16 +0100 Subject: [PATCH] Changed FilterWidget to be more responsive with Javascript --- application/controllers/system/Filters.php | 382 ++++++++++++++++ .../system/infocenter/InfoCenter.php | 20 +- .../system/infocenter/infocenterData.php | 52 +-- application/views/widgets/filter/filter.php | 159 ++----- .../views/widgets/filter/saveFilter.php | 33 +- .../views/widgets/filter/selectFields.php | 220 ++++++++-- .../views/widgets/filter/selectFilters.php | 342 ++++++++++++--- .../views/widgets/filter/tableDataset.php | 246 ++++++----- application/widgets/FilterWidget.php | 408 +++++++----------- application/widgets/NavigationMenuWidget.php | 8 +- 10 files changed, 1230 insertions(+), 640 deletions(-) create mode 100644 application/controllers/system/Filters.php diff --git a/application/controllers/system/Filters.php b/application/controllers/system/Filters.php new file mode 100644 index 000000000..e2b3a89ea --- /dev/null +++ b/application/controllers/system/Filters.php @@ -0,0 +1,382 @@ +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)); + } +} diff --git a/application/controllers/system/infocenter/InfoCenter.php b/application/controllers/system/infocenter/InfoCenter.php index 03d98dd14..7518bf7f7 100644 --- a/application/controllers/system/infocenter/InfoCenter.php +++ b/application/controllers/system/infocenter/InfoCenter.php @@ -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 ); } } diff --git a/application/views/system/infocenter/infocenterData.php b/application/views/system/infocenter/infocenterData.php index 1caa6ffb4..3a0fc12cc 100644 --- a/application/views/system/infocenter/infocenterData.php +++ b/application/views/system/infocenter/infocenterData.php @@ -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( + 'Details', + base_url('index.ci.php/system/infocenter/InfoCenter/showDetails/'), + $datasetRaw->{'PersonId'} + ); + + if ($datasetRaw->{'SendDate'} == null) { - $link = 'Details'; - - $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; } diff --git a/application/views/widgets/filter/filter.php b/application/views/widgets/filter/filter.php index 5f2ba79e5..2b36a5bf5 100644 --- a/application/views/widgets/filter/filter.php +++ b/application/views/widgets/filter/filter.php @@ -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: "", + 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 @@
-
- + -
-
-
-

- Filter options -

-
-
-
-
- -
+
+
+
+

+ Filter options +

+
+
+
+
+ +
-
+
-
- -
+
+ +
-
+
-
- -
+
+
+
-
+
-
+
-
- -
+
+ +
-
+
-
diff --git a/application/views/widgets/filter/saveFilter.php b/application/views/widgets/filter/saveFilter.php index 8edb25ad1..a99e5ca53 100644 --- a/application/views/widgets/filter/saveFilter.php +++ b/application/views/widgets/filter/saveFilter.php @@ -1,7 +1,36 @@ + +
- Filter description: + Filter description:
-
diff --git a/application/views/widgets/filter/selectFields.php b/application/views/widgets/filter/selectFields.php index 87694f3ca..929b87805 100644 --- a/application/views/widgets/filter/selectFields.php +++ b/application/views/widgets/filter/selectFields.php @@ -1,54 +1,190 @@ -
- - 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: "", + 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: "", + 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: "", + 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 = ''; + + strHtml += fieldToDisplay; + strHtml += 'X'; + strHtml += ''; + $("#filterSelectFieldsDnd").append(strHtml); + } + + var strDropDown = ''; + $("#addField").append(strDropDown); + + for (var i = 0; i < data.allSelectedFields.length; i++) + { + var fieldName = data.allSelectedFields[i]; + var fieldToDisplay = data.allColumnsAliases[i]; + + strDropDown = ''; + $("#addField").append(strDropDown); } } - ?> - - - X - - - -
- + + dndSF(); + addEventsSF(); + }) + .fail(function(jqXHR, textStatus, errorThrown) { + alert(textStatus); + }); + } + + function resetSelectedFields() + { + $("#filterSelectFieldsDnd").html(""); + $("#addField").html(""); + } + + $(document).ready(function() { + renderSelectedFields(); + }); + + + +
+
Add field: - +
diff --git a/application/views/widgets/filter/selectFilters.php b/application/views/widgets/filter/selectFilters.php index a6b638224..104687522 100644 --- a/application/views/widgets/filter/selectFilters.php +++ b/application/views/widgets/filter/selectFilters.php @@ -1,69 +1,285 @@ -
- - for ($filtersCounter = 0; $filtersCounter < count($selectedFilters); $filtersCounter++) + function resetEventsSFilters() + { + $("#addFilter").off('change'); + } + + function addEventsSFilters() + { + $("#addFilter").change(function(event) { + + $.ajax({ + url: "", + 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: "", + 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: "", + 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]; - } - } - - ?> -
- - - - - - - - - - - -
- '; + html += ' '; + html += ''; + html += ''; + html += ' '; + html += ''; } - ?> - -
-
- - Add filter: - - - '; + html += ' '; + html += ' '; + html += ' '; + html += ''; + html += ''; + html += ' '; + html += ''; + } + if (metaData.type.toLowerCase().indexOf('bool') >= 0) + { + html = ''; + html += ' '; + html += ''; + html += ''; + html += ' '; + html += ''; + } + 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]; - } - ?> - - - - - - - -
+ html = ''; + html += ' '; + html += ''; + html += ''; + html += ' '; + html += ''; + html += ''; + html += ' '; + html += ''; + } + + html += ''; + html += ' '; + html += ''; + + return html; + } + + function renderSelectedFilters() + { + $.ajax({ + url: "", + method: "GET", + data: {}, + dataType: "json" + }) + .done(function(data, textStatus, jqXHR) { + + resetEventsSFilters(); + + if (data != null) + { + var strDropDown = ''; + $("#addFilter").append(strDropDown); + + for (var i = 0; i < data.allSelectedFields.length; i++) + { + var fieldName = data.allSelectedFields[i]; + var fieldToDisplay = data.allColumnsAliases[i]; + + strDropDown = ''; + $("#addFilter").append(strDropDown); + } + + for (var i = 0; i < data.selectedFilters.length; i++) + { + var selectedFilters = '
'; + + selectedFilters += ''; + selectedFilters += data.selectedFiltersAliases[i]; + selectedFilters += ''; + + selectedFilters += renderSelectedFilterFields( + data.selectedFiltersMetaData[i], + data.selectedFiltersActiveFilters[i], + data.selectedFiltersActiveFiltersOperation[i], + data.selectedFiltersActiveFiltersOption[i] + ); + + selectedFilters += ''; + selectedFilters += ''; + selectedFilters += ''; + + selectedFilters += '
'; + + $("#selectedFilters").append(selectedFilters); + } + } + + addEventsSFilters(); + }) + .fail(function(jqXHR, textStatus, errorThrown) { + alert(textStatus); + }); + } + + function resetSelectedFilters() + { + $("#addFilter").html(""); + $("#selectedFilters").html(""); + } + + $(document).ready(function() { + renderSelectedFilters(); + }); + + + +
+ +
+ + Add filter: + + + + + + + + +
diff --git a/application/views/widgets/filter/tableDataset.php b/application/views/widgets/filter/tableDataset.php index e84ae0715..0074d0eff 100644 --- a/application/views/widgets/filter/tableDataset.php +++ b/application/views/widgets/filter/tableDataset.php @@ -1,104 +1,156 @@ -retval; +
- +
- - - - - - - - - - + - - - - - - {$selectedField}, $result); - ?> - - - - - - - +
Select
- - - {$selectedField}; - ?> - - {$additionalColumn}; - ?> -
diff --git a/application/widgets/FilterWidget.php b/application/widgets/FilterWidget.php index 9f949e352..776681455 100644 --- a/application/widgets/FilterWidget.php +++ b/application/widgets/FilterWidget.php @@ -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 = ' - - - - - - - '; - } - elseif ($filterMetaData->type == 'varchar') - { - $html = ' - - - - - - - '; - } - elseif ($filterMetaData->type == 'bool') - { - $html = ' - - - - - - - '; - } - 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 = ' - - - - - - - - '; - } - - 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; - } } diff --git a/application/widgets/NavigationMenuWidget.php b/application/widgets/NavigationMenuWidget.php index dbef3b84b..b23054706 100644 --- a/application/widgets/NavigationMenuWidget.php +++ b/application/widgets/NavigationMenuWidget.php @@ -41,7 +41,7 @@ class NavigationMenuWidget extends Widget echo '
  • '; - if (isset($item['subscriptLink']) && isset($item['subscriptDescription'])) + if (isset($item['subscriptLinkId']) && isset($item['subscriptDescription'])) { echo ''; } @@ -62,12 +62,12 @@ class NavigationMenuWidget extends Widget echo ''; - if (isset($item['subscriptLink']) && isset($item['subscriptDescription'])) + if (isset($item['subscriptLinkId']) && isset($item['subscriptDescription'])) { - echo ''.$item['subscriptDescription'].''; + echo ''.$item['subscriptDescription'].''; } - if (isset($item['subscriptLink']) && isset($item['subscriptDescription'])) + if (isset($item['subscriptLinkId']) && isset($item['subscriptDescription'])) { echo ''; }