瀏覽代碼

fixed bug in table filters default values

Piotr Labudda 7 年之前
父節點
當前提交
f797a4edc0
共有 2 個文件被更改,包括 16 次插入7 次删除
  1. 7 5
      SE/se-lib/Route/ViewTableAjax.php
  2. 9 2
      SE/se-lib/TableAjax.php

+ 7 - 5
SE/se-lib/Route/ViewTableAjax.php

@@ -110,15 +110,17 @@ class Route_ViewTableAjax extends RouteBase {
 			DBG::log([
 				'$requestDataFilters' => $requestDataFilters,
 				'$lastDataFilters' => $lastDataFilters,
-			], 'array', "TODO:BUG:filters");
-			if ($lastDataFilters) {
-				// ok, use last filters
-			} else if (empty($requestDataFilters)) {
+			], 'array', "TODO:BUG?:filters");
+			if (empty($lastDataFilters) && empty($requestDataFilters)) {
+				DBG::log(['TODO: run setFilterInit', [
+					'currSortCol' => $acl->getPrimaryKeyField(),
+					'currSortFlip' => 'desc',
+				]], 'array', "TODO:BUG?:filters");
 				$tbl->setFilterInit([
 					'currSortCol' => $acl->getPrimaryKeyField(),
 					'currSortFlip' => 'desc',
 				]);
-			} else {
+			} else if (!empty($requestDataFilters)) {
 				$tbl->setFilterInit($filterInit);
 			}
 			if (!empty($forceFilterInit)) $tbl->setForceFilterInit($forceFilterInit);

+ 9 - 2
SE/se-lib/TableAjax.php

@@ -57,7 +57,11 @@ class TableAjax extends ViewAjax {
 	public function setRootUrl($rootUrl) { $this->rootUrl = $rootUrl; }
 
 	private function _hasStateFilterInit() {
-		return array_key_exists($this->_htmlID, $_SESSION['TableAjax_Cache']) && array_key_exists('_filterInit', $_SESSION['TableAjax_Cache'][$this->_htmlID]);
+		return (
+			array_key_exists($this->_htmlID, $_SESSION['TableAjax_Cache'])
+			&& array_key_exists('_filterInit', $_SESSION['TableAjax_Cache'][$this->_htmlID])
+			&& !empty((array)$_SESSION['TableAjax_Cache'][$this->_htmlID]['_filterInit'])
+		);
 	}
 
 	// TODO: read state from cache by key $this->_htmlID
@@ -84,6 +88,7 @@ class TableAjax extends ViewAjax {
 						$this->_label = $v;
 						break;
 					case '_filterInit':
+						// DBG::log([ '$this->_filterInit' => $this->_filterInit ], 'array', "TODO:BUG?:filters");
 						$this->_filterInit = $v;
 						break;
 					case '_rowFunctions':
@@ -131,6 +136,7 @@ class TableAjax extends ViewAjax {
 	}
 
 	public function setFilterInit($filterInit) {
+		// DBG::log([ '$this->_filterInit' => $this->_filterInit, 'hasFiltersInit' => $this->_hasStateFilterInit() ], 'array', "TODO:BUG?:filters - setFilterInit");
 		if ($this->_hasStateFilterInit()) {
 			return;
 		}
@@ -147,10 +153,11 @@ class TableAjax extends ViewAjax {
 
 	private function setFilters($filterInit) {
 		$this->_filterInit = (object)$filterInit;
+		// DBG::log([ '$this->_filterInit' => $this->_filterInit ], 'array', "TODO:BUG?:filters - setFilters");
 		$this->_saveState();
 	}
 	function getFilters() {
-		return $this->_filterInit;
+		return (array)$this->_filterInit;
 	}
 
 	public function setRowFunctions($functions) {