Explorar el Código

fixed TableAjax render BUG

open table -> open edit or files -> back to table: move body columns (looks like additional column)
Piotr Labudda hace 7 años
padre
commit
c94482d6ff
Se han modificado 1 ficheros con 60 adiciones y 40 borrados
  1. 60 40
      SE/se-lib/TableAjax.php.TableAjax.js

+ 60 - 40
SE/se-lib/TableAjax.php.TableAjax.js

@@ -340,7 +340,14 @@ function selectedActions(idContext) {
 }
 }
 
 
 function createFilterStoreWithInitialData(initialFilter) {
 function createFilterStoreWithInitialData(initialFilter) {
-	var initialState = { isLoading: false, isEmpty: true, filter: new Map(), specialFilter: new Map(), currSortCol: '', currSortFlip: false }
+	var initialState = {
+		isLoading: false,
+		isEmpty: true,
+		filter: new Map(),
+		specialFilter: new Map(),
+		currSortCol: '',
+		currSortFlip: false
+	}
 	Object.keys(initialFilter).forEach(function (key) {
 	Object.keys(initialFilter).forEach(function (key) {
 		if ('currSortCol' === key) {
 		if ('currSortCol' === key) {
 			initialState.currSortCol = initialFilter[key]
 			initialState.currSortCol = initialFilter[key]
@@ -923,7 +930,7 @@ global['P5UI__TableAjaxSpecialFilterRelationFrom'] = createReactClass({
 	},
 	},
 
 
 	render: function () {
 	render: function () {
-		DBG1 && console.log('DBG::P5UI__TableAjaxSpecialFilterRelationFrom::render (filterKey:'+this.props.filterKey+')', { state: this.state, props: this.props });
+		DBG && console.log('DBG::P5UI__TableAjaxSpecialFilterRelationFrom::render (filterKey:'+this.props.filterKey+')', { state: this.state, props: this.props });
 		var refInfo = p5WfsRefFilter.parse(this.props.filterKey); // null | { type: 'From' | 'To', idInstance: int }
 		var refInfo = p5WfsRefFilter.parse(this.props.filterKey); // null | { type: 'From' | 'To', idInstance: int }
 		return h('button', {
 		return h('button', {
 			className: "btn btn-xs btn-default active",
 			className: "btn btn-xs btn-default active",
@@ -1379,11 +1386,6 @@ var TableAjax = function() {
 					_uiNodeSelectedInfo
 					_uiNodeSelectedInfo
 				);
 				);
 			}
 			}
-		} else {
-			if (_uiNodeSelectedInfo) {
-				// jQuery('<a href="'+window.location.href+'&TEST_CHECKBOX=1'+'">.</a>').appendTo(_uiNodeSelectedInfo);
-				jQuery('<a href="'+window.location.href+'">.</a>').appendTo(_uiNodeSelectedInfo);
-			}
 		}
 		}
 
 
 		if (location.hash) {
 		if (location.hash) {
@@ -1400,38 +1402,43 @@ var TableAjax = function() {
 	};
 	};
 
 
 	priv.onRender = function(e) {
 	priv.onRender = function(e) {
+		var renderUIParts = [];
+		if (arguments.length > 1) {
+			for (var i=1; i<arguments.length; i++) {
+				renderUIParts.push( arguments[i] );
+			}
+		}
 		if (priv.options.debug || DBG) console.log('onRender.arguments:', arguments.length, arguments, 'e:', e);
 		if (priv.options.debug || DBG) console.log('onRender.arguments:', arguments.length, arguments, 'e:', e);
+		DBG && console.log('DBG::onRender: ', { renderUIParts });
 		// console.log("priv.onRender arguments:", arguments);
 		// console.log("priv.onRender arguments:", arguments);
 		// console.trace();
 		// console.trace();
-		if (arguments.length > 1) {
-			for (var i=1; i<arguments.length; i++) {
-				switch (arguments[i]) {
-					case 'head': _head = undefined; break;
-					case 'body': _body = undefined; break;
-					case 'foot': _foot = undefined; break;
-					case 'foot_pagination': {
-							priv.renderFooterInfo();
-							priv.renderFooterPagination();
-							priv.renderFooterPageSizes();
-						}
-						break;
-					case 'footer__toolbar__info': priv.renderFooterInfo(); break;
-					case 'footer__toolbar__pagination': priv.renderFooterPagination(); break;
-					case 'footer__toolbar__pagesizes': priv.renderFooterPageSizes(); break;
-					case 'foot__columnPicker': priv.renderFooterColumnPicker(); break;
-					case 'head__specialFilters': priv.renderHeadSpecialFilters(); break;
-				}
+		renderUIParts.forEach(function (uiPart) {
+			switch (uiPart) {
+				case 'head': _head = undefined; break;
+				case 'body': _body = undefined; break;
+				case 'foot': _foot = undefined; break;
+				case 'foot_pagination': {
+						priv.renderFooterInfo();
+						priv.renderFooterPagination();
+						priv.renderFooterPageSizes();
+					}
+					break;
+				case 'footer__toolbar__info': priv.renderFooterInfo(); break;
+				case 'footer__toolbar__pagination': priv.renderFooterPagination(); break;
+				case 'footer__toolbar__pagesizes': priv.renderFooterPageSizes(); break;
+				case 'foot__columnPicker': priv.renderFooterColumnPicker(); break;
+				case 'head__specialFilters': priv.renderHeadSpecialFilters(); break;
 			}
 			}
-			priv.renderTable();
-			priv.onWindowResize();
+		})
+		priv.renderTable();
+		priv.onWindowResize();
 
 
-			{// activate saveBtn if some columns hidden
-				var selectedFilter = priv.modelColFilter_getSelected();
-				if (null === selectedFilter) {
-					priv.modelColFilter_getSaveBtn().prop("disabled", false)
-				} else {
-					priv.modelColFilter_getSaveBtn().prop("disabled", true)
-				}
+		{// activate saveBtn if some columns hidden
+			var selectedFilter = priv.modelColFilter_getSelected();
+			if (null === selectedFilter) {
+				priv.modelColFilter_getSaveBtn().prop("disabled", false)
+			} else {
+				priv.modelColFilter_getSaveBtn().prop("disabled", true)
 			}
 			}
 		}
 		}
 	};
 	};
@@ -1497,16 +1504,26 @@ var TableAjax = function() {
 
 
 		priv.renderInlineEditBox();// .tblAjax__inlineEditBox
 		priv.renderInlineEditBox();// .tblAjax__inlineEditBox
 
 
-		_foot = _head = _body = _headSort = _headFilter = undefined;// TODO: refactor
+		_foot = undefined;
+		_head = undefined;
+		_body = undefined;
+		_headSort = undefined;
+		_headFilter = undefined;// TODO: refactor
 	};
 	};
 
 
 	priv.renderTable = function() {
 	priv.renderTable = function() {
 		if (!_state.colsSorted) return;
 		if (!_state.colsSorted) return;
+		DBG && console.warn('DBG:renderTable: ', { _head, _headSort, _headFilter, _headSpecialFilter });
 		if (!_head) {
 		if (!_head) {
-			_headSort = _headFilter = _headSpecialFilter = undefined;
+			_headSort = undefined;
+			_headFilter = undefined;
+			_headSpecialFilter = undefined;
 			_head = _uiNode$Table.find('thead');
 			_head = _uiNode$Table.find('thead');
 		}
 		}
-		if (!_headSort) priv.renderTableTheadSort();
+		if (!_headSort) {
+			priv.renderTableTheadSort();
+			_headSort = true;
+		}
 		if (!_headFilter && priv.options.filter) {
 		if (!_headFilter && priv.options.filter) {
 			priv.renderTableTheadFilter();
 			priv.renderTableTheadFilter();
 			_headFilter = true;
 			_headFilter = true;
@@ -2856,6 +2873,7 @@ var TableAjax = function() {
 			state.page = data.page || 0;
 			state.page = data.page || 0;
 			state.pageSize = data.pageSize || priv.options.pageSize;
 			state.pageSize = data.pageSize || priv.options.pageSize;
 			state.filters = data.filters || {};
 			state.filters = data.filters || {};
+			DBG && console.warn('DBG:update... - FETCH_DATA END priv.setState(state);', { state });
 			priv.setState(state);
 			priv.setState(state);
 
 
 			if (typeof callback == "function") {
 			if (typeof callback == "function") {
@@ -2873,9 +2891,10 @@ var TableAjax = function() {
 		var oldState = _state; // TODO: use to check what really changed (use extend!)
 		var oldState = _state; // TODO: use to check what really changed (use extend!)
 		var renderParts = {};
 		var renderParts = {};
 		if (state.data) {
 		if (state.data) {
-			if (state.data.cols && Object.keys(state.data.cols).length > 0) {// TODO: never happen, but if happend then rerender all
+			if (state.data.cols && Object.keys(state.data.cols).length > 0) {
 				priv.setStateCols(state.data.cols, state.data.primaryKey);
 				priv.setStateCols(state.data.cols, state.data.primaryKey);
 				priv.setStateData(state.data);
 				priv.setStateData(state.data);
+				renderParts['head'] = true;
 			} else {
 			} else {
 				priv.setStateData(state.data);
 				priv.setStateData(state.data);
 			}
 			}
@@ -2905,8 +2924,8 @@ var TableAjax = function() {
 
 
 		renderParts = Object.keys(renderParts);
 		renderParts = Object.keys(renderParts);
 
 
-		if (priv.options.debug || DBG) console.log('setState::renderParts: ', renderParts);//TODO:DBG:RMME
 		if (renderParts.length > 0) {
 		if (renderParts.length > 0) {
+			DBG && console.log('DBG::trigger(TableAjax:render): ', renderParts);
 			jQuery(_uiNodeCont).trigger('TableAjax:render', renderParts);
 			jQuery(_uiNodeCont).trigger('TableAjax:render', renderParts);
 		}
 		}
 	};
 	};
@@ -3881,7 +3900,7 @@ var TableAjax = function() {
 		urlAdd += '&currSortFlip=' + (_state._currSortFlip ? "desc" : "asc");
 		urlAdd += '&currSortFlip=' + (_state._currSortFlip ? "desc" : "asc");
 
 
 		// TODO: compare with filterStore
 		// TODO: compare with filterStore
-		DBG && console.warn('DBG:loadPage... FETCH_DATA', { '_state._filterQuery': _state._filterQuery, '_state._specialFilterQuery': _state._specialFilterQuery, _state });
+		DBG && console.log('DBG::loadPage... FETCH_DATA', { '_state._filterQuery': _state._filterQuery, '_state._specialFilterQuery': _state._specialFilterQuery, _state });
 		urlAdd += (_state._filterQuery) ? "&" + _state._filterQuery : "";
 		urlAdd += (_state._filterQuery) ? "&" + _state._filterQuery : "";
 		urlAdd += (_state._specialFilterQuery) ? "&" + _state._specialFilterQuery : "";
 		urlAdd += (_state._specialFilterQuery) ? "&" + _state._specialFilterQuery : "";
 		urlAdd += (_state._forceFilterQuery) ? "&" + _state._forceFilterQuery : "";
 		urlAdd += (_state._forceFilterQuery) ? "&" + _state._forceFilterQuery : "";
@@ -3906,6 +3925,7 @@ var TableAjax = function() {
 				state.page = data.page || 0;
 				state.page = data.page || 0;
 				state.pageSize = data.pageSize || priv.options.pageSize;
 				state.pageSize = data.pageSize || priv.options.pageSize;
 				state.filters = data.filters || {};
 				state.filters = data.filters || {};
+				DBG && console.log('DBG::loadPage... - FETCH_DATA END priv.setState(state);', { state });
 				priv.setState(state);
 				priv.setState(state);
 				_uiNode$Table.parent().parent().removeClass('AjaxTable-loading');
 				_uiNode$Table.parent().parent().removeClass('AjaxTable-loading');
 			} else {
 			} else {