Jelajahi Sumber

fixed TableAjax view

Piotr Labudda 8 tahun lalu
induk
melakukan
fdae320882

+ 1 - 0
SE/se-lib/AclQueryBuilder.php

@@ -55,6 +55,7 @@ class AclQueryBuilder {
 		// 	'from instanceof Core_AclBase' => ($from instanceof Core_AclBase),
 		// 	'from instanceof AntAclBase' => ($from instanceof AntAclBase),
 		// 	'from instanceof TableAcl' => ($from instanceof TableAcl),
+		// 	'$from' => $from
 		// ], 'array', "\$from class(".get_class($from).")");
 		if ($this->from) throw new Exception("Duplicate FROM");
 		$this->from = $from;

+ 14 - 0
SE/se-lib/AclQueryFeatures.php

@@ -389,6 +389,12 @@ class AclQueryFeatures {
 			// ");
 			// TODO: convert `where t.ID in ( ... )` into `join` and `order by`
 			// join `CRM__#REF_TABLE__120_VIEW` refTable on (refTable.REMOTE_PRIMARY_KEY = t.ID and refTable.PRIMARY_KEY = '37' )
+			DBG::log([
+				'ACL::getRefTable(...)' => [$refAcl->getNamespace(), $backRef['fieldName']],
+				'$backRef' => $backRef,
+				'$refTable' => $refTable
+			], 'array', "DBG: join \$join class(".get_class($join).")");
+
 			$this->_query->join($refTable, 'refTable', [ 'rawJoin' => "t.{$sqlPk} = refTable.REMOTE_PRIMARY_KEY and refTable.PRIMARY_KEY = {$sqlBackRefPk}" ]);
 			// moved to getItems: $this->_query->orderBy("refTable.REMOTE_PRIMARY_KEY DESC"); // TODO: order by refTable.SORT_PRIO
 		}
@@ -611,6 +617,14 @@ class AclQueryFeatures {
 	}
 
 	public function fetchRowRefs($row) {
+		try {
+			return $this->_fetchRowRefs($row);
+		} catch (Exception $e) {
+			DBG::log($e);
+		}
+		return $row;
+	}
+	public function _fetchRowRefs($row) {
 		if (!$row) return $row;
 		$sqlPk = $this->getAclSqlPrimaryKeyField();
 		$primaryKey = $row[$sqlPk];

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

@@ -519,38 +519,38 @@ class TableAjax extends ViewAjax {
 		UI::inlineJS(__FILE__ . '.TableAjax.js', [
 			'URI_BASE' => Request::getPathUri(),
 		]);
-	$filterInit = $this->_filterInit;
-	$forceFilterInit = $this->_forceFilterInit;
-	$pageSizes = $this->_pageSizes;
-	$pageSize = $this->_pageSize;
-	$rowFunctions = $this->_rowFunctions;//$this->_showRowFunctionsJson();
-	$exportFields = Core_AclHelper::getExportFieldList($acl);
-
-	UI::inlineJS(__FILE__ . '.hist.js', [
-		'TABLE_AJAX_NODE_ID' => $this->_htmlID,
-		'TABLE_AJAX_LABEL' => $this->getLabelHtml(),
-		'URL_HIST_BASE' => "index-ajax.php?_zasobID={$this->_zasobID}&_cls=" . __CLASS__ . "&_hash={$this->_htmlID}&_task=HIST", // &ID=...
-		'FUNCTION_HIST_ROUTE' => "TableAjax__HIST_Route",
-	]);
-	UI::inlineJS(__FILE__ . '.create.js', [
-		'TABLE_AJAX_NODE_ID' => $this->_htmlID,
-		'TABLE_AJAX_LABEL' => $this->getLabelHtml(),
-		'NAMESPACE' => $acl->getNamespace(),
-		'FIRCE_FILTER_INIT' => $forceFilterInit,
-		'FUNCTION_CREATE_ROUTE' => "TableAjax__CREATE_Route",
-		'URL_CREATE_FORM_AJAX' => "{$this->syncUrl}&_hash={$this->_htmlID}&_task=createFormJson",
-	]);
-	UI::inlineJS(__FILE__ . '.edit.js', [
-		'TABLE_AJAX_NODE_ID' => $this->_htmlID,
-		'TABLE_AJAX_LABEL' => $this->getLabelHtml(),
-		'NAMESPACE' => $acl->getNamespace(),
-		'FUNCTION_EDIT_ROUTE' => "TableAjax__EDIT_Route",
-		'URL_EDIT_FORM_AJAX' => "{$this->syncUrl}&_hash={$this->_htmlID}&_task=editFormJson&_primaryKey=",
-	]);
-	UI::inlineJS(__FILE__ . '.openRef.js', []); // p5UI__tableAjaxOpenRefCell
-
-	$specialFilters = (method_exists($acl, 'getSpecialFilters')) ? $acl->getSpecialFilters() : null;
-	$className = __CLASS__;
+		$filterInit = $this->_filterInit;
+		$forceFilterInit = $this->_forceFilterInit;
+		$pageSizes = $this->_pageSizes;
+		$pageSize = $this->_pageSize;
+		$rowFunctions = $this->_rowFunctions;//$this->_showRowFunctionsJson();
+		$exportFields = Core_AclHelper::getExportFieldList($acl);
+
+		UI::inlineJS(__FILE__ . '.hist.js', [
+			'TABLE_AJAX_NODE_ID' => $this->_htmlID,
+			'TABLE_AJAX_LABEL' => $this->getLabelHtml(),
+			'URL_HIST_BASE' => "index-ajax.php?_zasobID={$this->_zasobID}&_cls=" . __CLASS__ . "&_hash={$this->_htmlID}&_task=HIST", // &ID=...
+			'FUNCTION_HIST_ROUTE' => "TableAjax__HIST_Route",
+		]);
+		UI::inlineJS(__FILE__ . '.create.js', [
+			'TABLE_AJAX_NODE_ID' => $this->_htmlID,
+			'TABLE_AJAX_LABEL' => $this->getLabelHtml(),
+			'NAMESPACE' => $acl->getNamespace(),
+			'FIRCE_FILTER_INIT' => $forceFilterInit,
+			'FUNCTION_CREATE_ROUTE' => "TableAjax__CREATE_Route",
+			'URL_CREATE_FORM_AJAX' => "{$this->syncUrl}&_hash={$this->_htmlID}&_task=createFormJson",
+		]);
+		UI::inlineJS(__FILE__ . '.edit.js', [
+			'TABLE_AJAX_NODE_ID' => $this->_htmlID,
+			'TABLE_AJAX_LABEL' => $this->getLabelHtml(),
+			'NAMESPACE' => $acl->getNamespace(),
+			'FUNCTION_EDIT_ROUTE' => "TableAjax__EDIT_Route",
+			'URL_EDIT_FORM_AJAX' => "{$this->syncUrl}&_hash={$this->_htmlID}&_task=editFormJson&_primaryKey=",
+		]);
+		UI::inlineJS(__FILE__ . '.openRef.js', []); // p5UI__tableAjaxOpenRefCell
+
+		$specialFilters = (method_exists($acl, 'getSpecialFilters')) ? $acl->getSpecialFilters() : null;
+		$className = __CLASS__;
 		UI::inlineJS(__FILE__ . '.init.js', [
 			'TABLE_AJAX_NODE_ID' => $this->_htmlID,
 			'NAMESPACE' => $acl->getNamespace(),

+ 4 - 6
SE/se-lib/TableAjax.php.TableAjax.js

@@ -92,7 +92,10 @@ var TableAjax = function() {
 		_state.filters.currSortCol = '';
 		_state.filters.currSortFlip = false;
 		_state.filters.filterCols = {};
-		priv.initEvents();
+		{ // init events
+			jQuery(_uiNodeCont).on('TableAjax:render', priv.onRender);
+			jQuery(window).on('resize', priv.onWindowResize)
+		}
 		priv.initialRender();// set up _uiNode$...
 		priv.options.types.string = ((priv.options.types || {}).string || {});
 		priv.options.types.number = ((priv.options.types || {}).number || {});
@@ -126,11 +129,6 @@ var TableAjax = function() {
 		}
 	};
 
-	priv.initEvents = function() {
-		jQuery(_uiNodeCont).on('TableAjax:render', priv.onRender);
-		jQuery(window).on('resize', priv.onWindowResize)
-	};
-
 	priv.onRender = function(e) {
 		if (priv.options.debug) console.log('onRender.arguments:', arguments.length, arguments, 'e:', e);
 		// console.log("priv.onRender arguments:", arguments);