Quellcode durchsuchen

fixed bug in table filters

Piotr Labudda vor 7 Jahren
Ursprung
Commit
aa54ddb90a
3 geänderte Dateien mit 20 neuen und 2 gelöschten Zeilen
  1. 18 1
      SE/se-lib/Route/ViewTableAjax.php
  2. 1 1
      SE/se-lib/TableAjax.php
  3. 1 0
      SE/se-lib/TableAjax.php.style.css

+ 18 - 1
SE/se-lib/Route/ViewTableAjax.php

@@ -77,14 +77,17 @@ class Route_ViewTableAjax extends RouteBase {
 			$acl = Core_AclHelper::getAclByNamespace($namespace, $forceTblAclInit = ('1' == V::get('_force', '', $_GET)));
 
 			$forceFilterInit = array();
+			$requestDataFilters = array();
 			$filterInit = new stdClass();
 			$filterInit->currSortCol = $acl->getPrimaryKeyField();
 			$filterInit->currSortFlip = 'desc';
 			foreach ($_REQUEST as $k => $v) {
 				if (strlen($k) > 3 && substr($k, 0, 2) == 'f_' && !empty($v)) {// filter prefix
+					$requestDataFilters[$k] = $v;
 					$filterInit->$k = $v;
 				}
 				else if (strlen($k) > 4 && substr($k, 0, 3) == 'sf_' && !empty($v)) {// special filter prefix
+					$requestDataFilters[$k] = $v;
 					$filterInit->$k = $v;
 				}
 				else if (strlen($k) > 4 && substr($k, 0, 3) == 'ff_' && !empty($v)) {// force filter prefix
@@ -103,7 +106,21 @@ class Route_ViewTableAjax extends RouteBase {
 				'primaryKey' => V::get('childRefPK', '', $_GET),
 			];
 			$tbl = $this->getTableAjaxWidget($acl, $backRefFilter, $childRefFilter);
-			$tbl->setFilterInit($filterInit);
+			$lastDataFilters = $tbl->getFilters();
+			DBG::log([
+				'$requestDataFilters' => $requestDataFilters,
+				'$lastDataFilters' => $lastDataFilters,
+			], 'array', "TODO:BUG:filters");
+			if ($lastDataFilters) {
+				// ok, use last filters
+			} else if (empty($requestDataFilters)) {
+				$tbl->setFilterInit([
+					'currSortCol' => $acl->getPrimaryKeyField(),
+					'currSortFlip' => 'desc',
+				]);
+			} else {
+				$tbl->setFilterInit($filterInit);
+			}
 			if (!empty($forceFilterInit)) $tbl->setForceFilterInit($forceFilterInit);
 			if (V::get('DBG_INST', '', $_GET)) { // TODO: TEST namespace
 				$siblings = ACL::getNamespaceSiblings($namespace);

+ 1 - 1
SE/se-lib/TableAjax.php

@@ -2057,7 +2057,6 @@ jQuery(document).ready(function(){
 	}
 
 	public function ajaxData($args) {// executed from url: "{$this->syncUrl"&_hash={$this->_htmlID}&_task=loadDataAjax"
-		session_write_close();
 		$acl = $this->_acl;
 
 		$pageSize = V::get('pageSize', $this->_pageSize, $args, 'int');
@@ -2102,6 +2101,7 @@ jQuery(document).ready(function(){
 		}
 
 		$this->setFilters($filters);
+		session_write_close();
 
 		$vCols = $acl->getVirtualFieldListByIdZasob();
 		DBG::log($vCols, 'array', "\$vCols");

+ 1 - 0
SE/se-lib/TableAjax.php.style.css

@@ -1,4 +1,5 @@
 .AjaxTable{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0;}
+.AjaxTable{ font-size:12px; line-height:18px }
 
 .AjaxTableCont {position:relative; margin:10px 0; width:100%; overflow-x:auto; border:none;}
 .AjaxTable *,