vxe-table 3.21.16 → 3.21.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/grid/src/grid.js +17 -19
- package/es/index.css +1 -1
- package/es/index.min.css +1 -1
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/table/module/custom/panel.js +7 -3
- package/es/table/module/edit/mixin.js +2 -1
- package/es/table/module/export/export-panel.js +2 -1
- package/es/table/module/export/import-panel.js +2 -1
- package/es/table/module/export/mixin.js +2 -1
- package/es/table/module/filter/panel.js +2 -1
- package/es/table/module/menu/mixin.js +2 -1
- package/es/table/module/validator/mixin.js +2 -1
- package/es/table/render/index.js +2 -1
- package/es/table/src/columnInfo.js +8 -7
- package/es/table/src/footer.js +5 -5
- package/es/table/src/header.js +10 -8
- package/es/table/src/methods.js +10 -3
- package/es/table/src/table.js +2 -1
- package/es/table/src/util.js +2 -1
- package/es/toolbar/src/toolbar.js +19 -21
- package/es/ui/index.js +1 -1
- package/es/ui/src/log.js +12 -3
- package/lib/grid/src/grid.js +24 -21
- package/lib/grid/src/grid.min.js +1 -1
- package/lib/index.css +1 -1
- package/lib/index.min.css +1 -1
- package/lib/index.umd.js +1237 -1163
- package/lib/index.umd.min.js +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/table/module/custom/panel.js +13 -7
- package/lib/table/module/custom/panel.min.js +1 -1
- package/lib/table/module/edit/mixin.js +19 -15
- package/lib/table/module/edit/mixin.min.js +1 -1
- package/lib/table/module/export/export-panel.js +8 -5
- package/lib/table/module/export/export-panel.min.js +1 -1
- package/lib/table/module/export/import-panel.js +6 -3
- package/lib/table/module/export/import-panel.min.js +1 -1
- package/lib/table/module/export/mixin.js +18 -14
- package/lib/table/module/export/mixin.min.js +1 -1
- package/lib/table/module/filter/panel.js +4 -1
- package/lib/table/module/filter/panel.min.js +1 -1
- package/lib/table/module/menu/mixin.js +5 -2
- package/lib/table/module/menu/mixin.min.js +1 -1
- package/lib/table/module/validator/mixin.js +8 -4
- package/lib/table/module/validator/mixin.min.js +1 -1
- package/lib/table/render/index.js +4 -1
- package/lib/table/render/index.min.js +1 -1
- package/lib/table/src/columnInfo.js +21 -11
- package/lib/table/src/columnInfo.min.js +1 -1
- package/lib/table/src/footer.js +5 -4
- package/lib/table/src/footer.min.js +1 -1
- package/lib/table/src/header.js +12 -8
- package/lib/table/src/header.min.js +1 -1
- package/lib/table/src/methods.js +43 -42
- package/lib/table/src/methods.min.js +1 -1
- package/lib/table/src/table.js +78 -74
- package/lib/table/src/table.min.js +1 -1
- package/lib/table/src/util.js +6 -2
- package/lib/table/src/util.min.js +1 -1
- package/lib/toolbar/src/toolbar.js +24 -21
- package/lib/toolbar/src/toolbar.min.js +1 -1
- package/lib/ui/index.js +1 -1
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/log.js +13 -3
- package/lib/ui/src/log.min.js +1 -1
- package/package.json +3 -3
- package/packages/grid/src/grid.ts +20 -16
- package/packages/table/module/custom/panel.ts +8 -3
- package/packages/table/module/edit/mixin.ts +3 -1
- package/packages/table/module/export/export-panel.ts +3 -1
- package/packages/table/module/export/import-panel.ts +3 -1
- package/packages/table/module/export/mixin.ts +3 -1
- package/packages/table/module/filter/panel.ts +3 -1
- package/packages/table/module/menu/mixin.ts +3 -1
- package/packages/table/module/validator/mixin.ts +3 -1
- package/packages/table/render/index.ts +3 -1
- package/packages/table/src/columnInfo.ts +3 -1
- package/packages/table/src/footer.ts +5 -5
- package/packages/table/src/header.ts +10 -8
- package/packages/table/src/methods.ts +9 -2
- package/packages/table/src/table.ts +3 -1
- package/packages/table/src/util.ts +5 -17
- package/packages/toolbar/src/toolbar.ts +23 -18
- package/packages/ui/src/log.ts +13 -3
- package/styles/theme/dark.scss +1 -1
- package/styles/variable.scss +1 -1
- /package/es/{iconfont.1781753790081.ttf → iconfont.1782186465261.ttf} +0 -0
- /package/es/{iconfont.1781753790081.woff → iconfont.1782186465261.woff} +0 -0
- /package/es/{iconfont.1781753790081.woff2 → iconfont.1782186465261.woff2} +0 -0
- /package/lib/{iconfont.1781753790081.ttf → iconfont.1782186465261.ttf} +0 -0
- /package/lib/{iconfont.1781753790081.woff → iconfont.1782186465261.woff} +0 -0
- /package/lib/{iconfont.1781753790081.woff2 → iconfont.1782186465261.woff2} +0 -0
package/lib/table/src/methods.js
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _xeUtils=_interopRequireDefault(require("xe-utils"));var _dom=require("../../ui/src/dom");var _utils=require("../../ui/src/utils");var _ui=require("../../ui");var _cell=_interopRequireDefault(require("./cell"));var _util=require("./util");var _vn=require("../../ui/src/vn");var _anime=require("../../ui/src/anime");var _log=require("../../ui/src/log");var _store=require("./store");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}const{getConfig,getI18n,renderer,formats,interceptor,createEvent,globalEvents,GLOBAL_EVENT_KEYS}=_ui.VxeUI;const browseObj=_xeUtils.default.browse();const supportMaxRow=5e6;const customStorageKey='VXE_CUSTOM_STORE';const maxYHeight=5e6;const maxXWidth=5e6;const sourceType='table';let crossTableDragRowObj=null;function eqCellValue(row1,row2,field){const val1=_xeUtils.default.get(row1,field);const val2=_xeUtils.default.get(row2,field);if((0,_utils.eqEmptyValue)(val1)&&(0,_utils.eqEmptyValue)(val2)){return true;}if(_xeUtils.default.isString(val1)||_xeUtils.default.isNumber(val1)){return''+val1===''+val2;}return _xeUtils.default.isEqual(val1,val2);}function hangleStorageDefaultValue(value,isAll){return _xeUtils.default.isBoolean(value)?value:isAll;}function getNextSortOrder($xeTable,column){const sortOpts=$xeTable.computeSortOpts;const{orders=[]}=sortOpts;const currOrder=column.order||null;const oIndex=orders.indexOf(currOrder)+1;return orders[oIndex<orders.length?oIndex:0];}const getCustomStorageMap=id=>{const version=getConfig().version;const rest=_xeUtils.default.toStringJSON(localStorage.getItem(customStorageKey)||'');const maps=rest&&rest._v===version?rest:{_v:version};return(id?maps[id]:maps)||{};};const setCustomStorageMap=(id,data)=>{const version=getConfig().version;const maps=getCustomStorageMap();maps[id]=data||undefined;maps._v=version;localStorage.setItem(customStorageKey,_xeUtils.default.toJSONString(maps));};const getRecoverRowMaps=($xeTable,keyMaps)=>{const internalData=$xeTable;const{fullAllDataRowIdData}=internalData;const restKeys={};_xeUtils.default.each(keyMaps,(row,rowid)=>{if(fullAllDataRowIdData[rowid]){restKeys[rowid]=row;}});return restKeys;};function handleReserveRow($xeTable,reserveRowMap){const internalData=$xeTable;const{fullDataRowIdData}=internalData;const reserveList=[];_xeUtils.default.each(reserveRowMap,(item,rowid)=>{if(fullDataRowIdData[rowid]&&reserveList.indexOf(fullDataRowIdData[rowid].row)===-1){reserveList.push(fullDataRowIdData[rowid].row);}});return reserveList;}function handleVirtualXVisible($xeTable){const reactData=$xeTable;const internalData=$xeTable;const{isScrollXBig,scrollXWidth}=reactData;const{elemStore,visibleColumn,fullColumnIdData}=internalData;const leftFixedWidth=$xeTable.computeLeftFixedWidth;const rightFixedWidth=$xeTable.computeRightFixedWidth;const bodyScrollElem=(0,_util.getRefElem)(elemStore['main-body-scroll']);if(bodyScrollElem){const clientWidth=bodyScrollElem.clientWidth;let scrollLeft=bodyScrollElem.scrollLeft;if(isScrollXBig){scrollLeft=Math.ceil((scrollXWidth-clientWidth)*Math.min(1,scrollLeft/(maxXWidth-clientWidth)));}const startLeft=scrollLeft+leftFixedWidth;const endLeft=scrollLeft+clientWidth-rightFixedWidth;let leftIndex=0;let rightIndex=visibleColumn.length;while(leftIndex<rightIndex){const cIndex=Math.floor((leftIndex+rightIndex)/2);const column=visibleColumn[cIndex];const colid=column.id;const colRest=fullColumnIdData[colid]||{};if(colRest.oLeft<=startLeft){leftIndex=cIndex+1;}else{rightIndex=cIndex;}}let visibleSize=0;const toVisibleIndex=leftIndex===visibleColumn.length?leftIndex:Math.max(0,leftIndex<visibleColumn.length?leftIndex-2:0);for(let cIndex=toVisibleIndex,cLen=visibleColumn.length;cIndex<cLen;cIndex++){const column=visibleColumn[cIndex];const colid=column.id;const colRest=fullColumnIdData[colid]||{};visibleSize++;if(colRest.oLeft>endLeft||visibleSize>=60){break;}}return{toVisibleIndex:Math.max(0,toVisibleIndex),visibleSize:Math.max(6,visibleSize)};}return{toVisibleIndex:0,visibleSize:6};}function handleCustomRestore($xeTable,storeData){const props=$xeTable;const reactData=$xeTable;const internalData=$xeTable;const{aggregateConfig,rowGroupConfig}=props;const{collectColumn}=internalData;const customOpts=$xeTable.computeCustomOpts;const{storage,storeOptions}=customOpts;const isAllCustom=storage===true;const storageOpts=Object.assign({},isAllCustom?{}:storage||{},storeOptions);const isCustomResizable=hangleStorageDefaultValue(storageOpts.resizable,isAllCustom);const isCustomVisible=hangleStorageDefaultValue(storageOpts.visible,isAllCustom);const isCustomFixed=hangleStorageDefaultValue(storageOpts.fixed,isAllCustom);const isCustomSort=hangleStorageDefaultValue(storageOpts.sort,isAllCustom);const isCustomAggGroup=hangleStorageDefaultValue(storageOpts.aggGroup,isAllCustom);const isCustomAggFunc=hangleStorageDefaultValue(storageOpts.aggFunc,isAllCustom);let{resizableData,sortData,visibleData,fixedData,aggGroupData,aggFuncData}=storeData;// 处理还原
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _xeUtils=_interopRequireDefault(require("xe-utils"));var _dom=require("../../ui/src/dom");var _utils=require("../../ui/src/utils");var _ui=require("../../ui");var _cell=_interopRequireDefault(require("./cell"));var _util=require("./util");var _vn=require("../../ui/src/vn");var _anime=require("../../ui/src/anime");var _log=require("../../ui/src/log");var _store=require("./store");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e};}const{warnLog,errLog}=(0,_log.createComponentLog)('table');const{getConfig,getI18n,renderer,formats,interceptor,createEvent,globalEvents,GLOBAL_EVENT_KEYS}=_ui.VxeUI;const browseObj=_xeUtils.default.browse();const supportMaxRow=5e6;const customStorageKey='VXE_CUSTOM_STORE';const maxYHeight=5e6;const maxXWidth=5e6;const sourceType='table';let crossTableDragRowObj=null;function eqCellValue(row1,row2,field){const val1=_xeUtils.default.get(row1,field);const val2=_xeUtils.default.get(row2,field);if((0,_utils.eqEmptyValue)(val1)&&(0,_utils.eqEmptyValue)(val2)){return true;}if(_xeUtils.default.isString(val1)||_xeUtils.default.isNumber(val1)){return''+val1===''+val2;}return _xeUtils.default.isEqual(val1,val2);}function hangleStorageDefaultValue(value,isAll){return _xeUtils.default.isBoolean(value)?value:isAll;}function getNextSortOrder($xeTable,column){const sortOpts=$xeTable.computeSortOpts;const{orders=[]}=sortOpts;const currOrder=column.order||null;const oIndex=orders.indexOf(currOrder)+1;return orders[oIndex<orders.length?oIndex:0];}const getCustomStorageMap=id=>{const version=getConfig().version;const rest=_xeUtils.default.toStringJSON(localStorage.getItem(customStorageKey)||'');const maps=rest&&rest._v===version?rest:{_v:version};return(id?maps[id]:maps)||{};};const setCustomStorageMap=(id,data)=>{const version=getConfig().version;const maps=getCustomStorageMap();maps[id]=data||undefined;maps._v=version;localStorage.setItem(customStorageKey,_xeUtils.default.toJSONString(maps));};const getRecoverRowMaps=($xeTable,keyMaps)=>{const internalData=$xeTable;const{fullAllDataRowIdData}=internalData;const restKeys={};_xeUtils.default.each(keyMaps,(row,rowid)=>{if(fullAllDataRowIdData[rowid]){restKeys[rowid]=row;}});return restKeys;};function handleReserveRow($xeTable,reserveRowMap){const internalData=$xeTable;const{fullDataRowIdData}=internalData;const reserveList=[];_xeUtils.default.each(reserveRowMap,(item,rowid)=>{if(fullDataRowIdData[rowid]&&reserveList.indexOf(fullDataRowIdData[rowid].row)===-1){reserveList.push(fullDataRowIdData[rowid].row);}});return reserveList;}function handleVirtualXVisible($xeTable){const reactData=$xeTable;const internalData=$xeTable;const{isScrollXBig,scrollXWidth}=reactData;const{elemStore,visibleColumn,fullColumnIdData}=internalData;const leftFixedWidth=$xeTable.computeLeftFixedWidth;const rightFixedWidth=$xeTable.computeRightFixedWidth;const bodyScrollElem=(0,_util.getRefElem)(elemStore['main-body-scroll']);if(bodyScrollElem){const clientWidth=bodyScrollElem.clientWidth;let scrollLeft=bodyScrollElem.scrollLeft;if(isScrollXBig){scrollLeft=Math.ceil((scrollXWidth-clientWidth)*Math.min(1,scrollLeft/(maxXWidth-clientWidth)));}const startLeft=scrollLeft+leftFixedWidth;const endLeft=scrollLeft+clientWidth-rightFixedWidth;let leftIndex=0;let rightIndex=visibleColumn.length;while(leftIndex<rightIndex){const cIndex=Math.floor((leftIndex+rightIndex)/2);const column=visibleColumn[cIndex];const colid=column.id;const colRest=fullColumnIdData[colid]||{};if(colRest.oLeft<=startLeft){leftIndex=cIndex+1;}else{rightIndex=cIndex;}}let visibleSize=0;const toVisibleIndex=leftIndex===visibleColumn.length?leftIndex:Math.max(0,leftIndex<visibleColumn.length?leftIndex-2:0);for(let cIndex=toVisibleIndex,cLen=visibleColumn.length;cIndex<cLen;cIndex++){const column=visibleColumn[cIndex];const colid=column.id;const colRest=fullColumnIdData[colid]||{};visibleSize++;if(colRest.oLeft>endLeft||visibleSize>=60){break;}}return{toVisibleIndex:Math.max(0,toVisibleIndex),visibleSize:Math.max(6,visibleSize)};}return{toVisibleIndex:0,visibleSize:6};}function handleCustomRestore($xeTable,storeData){const props=$xeTable;const reactData=$xeTable;const internalData=$xeTable;const{aggregateConfig,rowGroupConfig}=props;const{collectColumn}=internalData;const customOpts=$xeTable.computeCustomOpts;const{storage,storeOptions}=customOpts;const isAllCustom=storage===true;const storageOpts=Object.assign({},isAllCustom?{}:storage||{},storeOptions);const isCustomResizable=hangleStorageDefaultValue(storageOpts.resizable,isAllCustom);const isCustomVisible=hangleStorageDefaultValue(storageOpts.visible,isAllCustom);const isCustomFixed=hangleStorageDefaultValue(storageOpts.fixed,isAllCustom);const isCustomSort=hangleStorageDefaultValue(storageOpts.sort,isAllCustom);const isCustomAggGroup=hangleStorageDefaultValue(storageOpts.aggGroup,isAllCustom);const isCustomAggFunc=hangleStorageDefaultValue(storageOpts.aggFunc,isAllCustom);let{resizableData,sortData,visibleData,fixedData,aggGroupData,aggFuncData}=storeData;// 处理还原
|
|
2
2
|
if(isCustomResizable&&resizableData||isCustomSort&&sortData||isCustomVisible&&visibleData||isCustomFixed&&fixedData||isCustomAggGroup&&aggGroupData||isCustomAggFunc&&aggFuncData){const sortColMaps={};if(isCustomSort&&sortData){// 转换兼容老版本数据,即将废弃兼容
|
|
3
3
|
if(!_xeUtils.default.isArray(sortData)){const sortRests=[];_xeUtils.default.each(sortData,(index,colKey)=>{sortRests.push({key:colKey,index});});sortData=_xeUtils.default.orderBy(sortRests,{field:'index',order:'asc'}).map(item=>({k:item.key}));}let colNum=1;_xeUtils.default.eachTree(sortData,(sObj,index,sOjs,path,pSObj)=>{sortColMaps[sObj.k]={key:sObj.k,sNum:colNum++,pKey:pSObj?pSObj.k:null};},{children:'c'});}const colKeyMaps={};const allCols=[];const aggGroupConfs=[];_xeUtils.default.eachTree(collectColumn,(column,index,items,path,parentColumn)=>{const colKey=column.getKey();// 支持一级
|
|
4
4
|
if(!parentColumn){if(isCustomFixed&&fixedData&&fixedData[colKey]!==undefined){column.fixed=fixedData[colKey];}}if(isCustomResizable&&resizableData&&_xeUtils.default.isNumber(resizableData[colKey])){column.resizeWidth=resizableData[colKey];}if(isCustomVisible&&visibleData&&_xeUtils.default.isBoolean(visibleData[colKey])){column.visible=visibleData[colKey];}if(isCustomAggFunc&&aggFuncData&&(aggregateConfig||rowGroupConfig)&&aggFuncData[colKey]){column.aggFunc=aggFuncData[colKey];}if(isCustomAggGroup&&aggGroupData&&aggGroupData[colKey]){aggGroupConfs.push({field:column.field});}colKeyMaps[colKey]=column;allCols.push(column);});if((aggregateConfig||rowGroupConfig)&&aggGroupConfs.length){const groupRest=handleGroupData($xeTable,internalData.tableFullData,aggGroupConfs);internalData.tableFullTreeData=[];internalData.tableFullGroupData=groupRest.treeData;reactData.isRowGroupStatus=true;reactData.rowGroupList=aggGroupConfs;$xeTable.cacheRowMap(false);}// 如果自定义了顺序
|
|
5
5
|
if(isCustomSort&&sortData){allCols.forEach(column=>{const colKey=column.getKey();const scItem=sortColMaps[colKey];if(scItem){const parentColumn=scItem.pKey?colKeyMaps[scItem.pKey]:null;column.parentId=parentColumn?parentColumn.id:null;column.renderSortNumber=scItem.sNum;}});const newCollectCols=_xeUtils.default.toArrayTree(_xeUtils.default.orderBy(allCols,'renderSortNumber'),{key:'id',parentKey:'parentId',children:'children'});internalData.collectColumn=newCollectCols;internalData.tableFullColumn=(0,_util.getColumnList)(newCollectCols);reactData.updateColFlag++;}reactData.isCustomStatus=true;}else{reactData.isCustomStatus=false;}}/**
|
|
6
6
|
* 还原自定义列操作状态
|
|
7
|
-
*/function restoreCustomStorage($xeTable){const props=$xeTable;const{customConfig}=props;const tableId=$xeTable.computeTableId;const customOpts=$xeTable.computeCustomOpts;const{storage,restoreStore,storeOptions}=customOpts;const isAllCustom=storage===true;const storageOpts=Object.assign({},isAllCustom?{}:storage||{},storeOptions);const isCustomResizable=hangleStorageDefaultValue(storageOpts.resizable,isAllCustom);const isCustomVisible=hangleStorageDefaultValue(storageOpts.visible,isAllCustom);const isCustomFixed=hangleStorageDefaultValue(storageOpts.fixed,isAllCustom);const isCustomSort=hangleStorageDefaultValue(storageOpts.sort,isAllCustom);const isCustomAggFunc=hangleStorageDefaultValue(storageOpts.aggFunc,isAllCustom);if(storage&&(customConfig?(0,_utils.isEnableConf)(customOpts):customOpts.enabled)&&(isCustomResizable||isCustomVisible||isCustomFixed||isCustomSort||isCustomAggFunc)){if(!tableId){
|
|
7
|
+
*/function restoreCustomStorage($xeTable){const props=$xeTable;const{customConfig}=props;const tableId=$xeTable.computeTableId;const customOpts=$xeTable.computeCustomOpts;const{storage,restoreStore,storeOptions}=customOpts;const isAllCustom=storage===true;const storageOpts=Object.assign({},isAllCustom?{}:storage||{},storeOptions);const isCustomResizable=hangleStorageDefaultValue(storageOpts.resizable,isAllCustom);const isCustomVisible=hangleStorageDefaultValue(storageOpts.visible,isAllCustom);const isCustomFixed=hangleStorageDefaultValue(storageOpts.fixed,isAllCustom);const isCustomSort=hangleStorageDefaultValue(storageOpts.sort,isAllCustom);const isCustomAggFunc=hangleStorageDefaultValue(storageOpts.aggFunc,isAllCustom);if(storage&&(customConfig?(0,_utils.isEnableConf)(customOpts):customOpts.enabled)&&(isCustomResizable||isCustomVisible||isCustomFixed||isCustomSort||isCustomAggFunc)){if(!tableId){errLog('vxe.error.reqProp',['id']);return;}const storeData=getCustomStorageMap(tableId);if(restoreStore){return Promise.resolve(restoreStore({$table:$xeTable,id:tableId,type:'restore',storeData})).then(storeData=>{if(!storeData){return;}return handleCustomRestore($xeTable,storeData);}).catch(e=>e);}else{return handleCustomRestore($xeTable,storeData);}}}/**
|
|
8
8
|
* 更新数据列的 Map
|
|
9
9
|
* 牺牲数据组装的耗时,用来换取使用过程中的流畅
|
|
10
|
-
*/function cacheColumnMap($xeTable){const props=$xeTable;const reactData=$xeTable;const internalData=$xeTable;const{treeConfig,showOverflow}=props;const{tableFullColumn,collectColumn}=internalData;const fullColIdData=internalData.fullColumnIdData={};const fullColFieldData=internalData.fullColumnFieldData={};const mouseOpts=$xeTable.computeMouseOpts;const expandOpts=$xeTable.computeExpandOpts;const columnOpts=$xeTable.computeColumnOpts;const columnDragOpts=$xeTable.computeColumnDragOpts;const virtualYOpts=$xeTable.computeVirtualYOpts;const{isCrossDrag,isSelfToChildDrag}=columnDragOpts;const customOpts=$xeTable.computeCustomOpts;const treeOpts=$xeTable.computeTreeOpts;const{storage}=customOpts;const rowOpts=$xeTable.computeRowOpts;const isGroup=collectColumn.some(_utils.hasChildrenList);let isAllOverflow=!!showOverflow;let rowGroupColumn;let expandColumn;let treeNodeColumn;let checkboxColumn;let radioColumn;let htmlColumn;let hasFixed;const handleFunc=(column,index,items,path,parentColumn)=>{const{id:colid,field,fixed,type,treeNode,rowGroupNode}=column;const rest={$index:-1,_index:-1,column,colid,index,items,parent:parentColumn||null,width:0,oLeft:0};if(field){if(fullColFieldData[field]){
|
|
10
|
+
*/function cacheColumnMap($xeTable){const props=$xeTable;const reactData=$xeTable;const internalData=$xeTable;const{treeConfig,showOverflow}=props;const{tableFullColumn,collectColumn}=internalData;const fullColIdData=internalData.fullColumnIdData={};const fullColFieldData=internalData.fullColumnFieldData={};const mouseOpts=$xeTable.computeMouseOpts;const expandOpts=$xeTable.computeExpandOpts;const columnOpts=$xeTable.computeColumnOpts;const columnDragOpts=$xeTable.computeColumnDragOpts;const virtualYOpts=$xeTable.computeVirtualYOpts;const{isCrossDrag,isSelfToChildDrag}=columnDragOpts;const customOpts=$xeTable.computeCustomOpts;const treeOpts=$xeTable.computeTreeOpts;const{storage}=customOpts;const rowOpts=$xeTable.computeRowOpts;const isGroup=collectColumn.some(_utils.hasChildrenList);let isAllOverflow=!!showOverflow;let rowGroupColumn;let expandColumn;let treeNodeColumn;let checkboxColumn;let radioColumn;let htmlColumn;let hasFixed;const handleFunc=(column,index,items,path,parentColumn)=>{const{id:colid,field,fixed,type,treeNode,rowGroupNode}=column;const rest={$index:-1,_index:-1,column,colid,index,items,parent:parentColumn||null,width:0,oLeft:0};if(field){if(fullColFieldData[field]){errLog('vxe.error.colRepet',['field',field]);}fullColFieldData[field]=rest;}else{if(storage&&!type){errLog('vxe.error.reqSupportProp',['storage',`[${type?`type=${type}`:`title=${column.getTitle()}`}]field=?`]);}if(columnOpts.drag&&(isCrossDrag||isSelfToChildDrag)){errLog('vxe.error.reqSupportProp',['column-drag-config.isCrossDrag | column-drag-config.isSelfToChildDrag',`${column.getTitle()||type||''} -> field=?`]);}}if(!hasFixed&&fixed){hasFixed=fixed;}if(!htmlColumn&&type==='html'){htmlColumn=column;}if(treeNode){if(treeNodeColumn){warnLog('vxe.error.colRepet',['tree-node',treeNode]);}if(!treeNodeColumn){treeNodeColumn=column;}}if(rowGroupNode){if(treeNodeColumn){warnLog('vxe.error.colRepet',['row-group-node',rowGroupNode]);}if(!rowGroupColumn){rowGroupColumn=column;}}if(type==='expand'){if(expandColumn){warnLog('vxe.error.colRepet',['type',type]);}if(!expandColumn){expandColumn=column;}}if(type==='checkbox'){if(checkboxColumn){warnLog('vxe.error.colRepet',['type',type]);}if(!checkboxColumn){checkboxColumn=column;}}else if(type==='radio'){if(radioColumn){warnLog('vxe.error.colRepet',['type',type]);}if(!radioColumn){radioColumn=column;}}if(isAllOverflow&&column.showOverflow===false){isAllOverflow=false;}if(fullColIdData[colid]){errLog('vxe.error.colRepet',['colId',colid]);}fullColIdData[colid]=rest;};if(isGroup){_xeUtils.default.eachTree(collectColumn,(column,index,items,path,parentColumn,nodes)=>{column.level=nodes.length;handleFunc(column,index,items,path,parentColumn);});}else{tableFullColumn.forEach(handleFunc);}if(expandColumn){if(expandOpts.mode!=='fixed'&&virtualYOpts.enabled){warnLog('vxe.error.notConflictProp',['column.type="expand','virtual-y-config.enabled=false']);}if(expandOpts.mode!=='fixed'&&mouseOpts.area){errLog('vxe.error.errConflicts',['mouse-config.area','column.type=expand']);}if(expandOpts.mode!=='inside'&&treeConfig&&!treeOpts.transform){errLog('vxe.error.notConflictProp',['tree-config.transform=false','expand-config.mode=inside']);}// if (props.spanMethod) {
|
|
11
11
|
// warnLog('vxe.error.notSupportProp', ['column.type=expand', 'span-method', 'span-method=null'])
|
|
12
12
|
// }
|
|
13
|
-
}if(htmlColumn){if(!columnOpts.useKey){
|
|
13
|
+
}if(htmlColumn){if(!columnOpts.useKey){errLog('vxe.error.notSupportProp',['column.type=html','column-config.useKey=false','column-config.useKey=true']);}if(!rowOpts.useKey){errLog('vxe.error.notSupportProp',['column.type=html','row-config.useKey=false','row-config.useKey=true']);}}reactData.isGroup=isGroup;reactData.rowGroupColumn=rowGroupColumn;reactData.treeNodeColumn=treeNodeColumn;reactData.expandColumn=expandColumn;reactData.checkboxColumn=checkboxColumn;reactData.radioColumn=radioColumn;reactData.isAllOverflow=isAllOverflow;}function updateScrollXStatus($xeTable,fullColumn){const reactData=$xeTable;const internalData=$xeTable;const virtualXOpts=$xeTable.computeVirtualXOpts;const allCols=fullColumn||internalData.tableFullColumn;// 如果gt为0,则总是启用
|
|
14
14
|
const scrollXLoad=!!virtualXOpts.enabled&&virtualXOpts.gt>-1&&(virtualXOpts.gt===0||virtualXOpts.gt<allCols.length);reactData.scrollXLoad=scrollXLoad;return scrollXLoad;}function syncGanttScrollYStatus($xeTable){const reactData=$xeTable;const internalData=$xeTable;const $xeGanttView=internalData.xeGanttView;if($xeGanttView&&$xeGanttView.handleUpdateSYStatus){$xeGanttView.handleUpdateSYStatus(reactData.scrollYLoad);}}function updateScrollYStatus($xeTable,fullData){const props=$xeTable;const reactData=$xeTable;const internalData=$xeTable;const{treeConfig}=props;const virtualYOpts=$xeTable.computeVirtualYOpts;const treeOpts=$xeTable.computeTreeOpts;const{transform}=treeOpts;const allList=fullData||internalData.tableFullData;// 如果gt为0,则总是启用
|
|
15
|
-
let scrollYLoad=!!virtualYOpts.enabled&&virtualYOpts.gt>-1&&(virtualYOpts.gt===0||virtualYOpts.gt<allList.length);if(scrollYLoad&&treeConfig&&!transform){
|
|
15
|
+
let scrollYLoad=!!virtualYOpts.enabled&&virtualYOpts.gt>-1&&(virtualYOpts.gt===0||virtualYOpts.gt<allList.length);if(scrollYLoad&&treeConfig&&!transform){errLog('vxe.error.notSupportProp',['[table] virtual-y-config.enabled=true','tree-config.transform=false','tree-config.transform=true']);scrollYLoad=false;}reactData.scrollYLoad=scrollYLoad;syncGanttScrollYStatus($xeTable);return scrollYLoad;}/**
|
|
16
16
|
* 展开与收起树节点
|
|
17
17
|
* @param rows
|
|
18
18
|
* @param expanded
|
|
@@ -124,7 +124,7 @@ reactData.treeExpandedFlag++;if(treeConfig&&treeOpts.reserve){$xeTable.setTreeEx
|
|
|
124
124
|
*/const handleDefaultTreeExpand=$xeTable=>{const props=$xeTable;const internalData=$xeTable;const{treeConfig}=props;if(treeConfig){const{fullAllDataRowIdData}=internalData;const treeOpts=$xeTable.computeTreeOpts;const{expandAll,expandRowKeys}=treeOpts;if(expandAll){$xeTable.setAllTreeExpand(true);}else if(expandRowKeys){const defExpandeds=[];expandRowKeys.forEach(rowid=>{const rowRest=fullAllDataRowIdData[rowid];if(rowRest){defExpandeds.push(rowRest.row);}});$xeTable.setTreeExpand(defExpandeds,true);}}};const handleAsyncTreeExpandChilds=($xeTable,row)=>{const reactData=$xeTable;const internalData=$xeTable;const treeOpts=$xeTable.computeTreeOpts;const checkboxOpts=$xeTable.computeCheckboxOpts;const{transform,loadMethod}=treeOpts;const{checkStrictly}=checkboxOpts;return new Promise(resolve=>{if(loadMethod){const{fullAllDataRowIdData,treeExpandLazyLoadedMaps}=internalData;const rowid=(0,_util.getRowid)($xeTable,row);const rowRest=fullAllDataRowIdData[rowid];treeExpandLazyLoadedMaps[rowid]=row;Promise.resolve(loadMethod({$table:$xeTable,row})).then(childRecords=>{if(rowRest){rowRest.treeLoaded=true;}if(treeExpandLazyLoadedMaps[rowid]){delete treeExpandLazyLoadedMaps[rowid];}if(!_xeUtils.default.isArray(childRecords)){childRecords=[];}if(childRecords){return $xeTable.loadTreeChildren(row,childRecords).then(childRows=>{const{treeExpandedMaps}=internalData;if(childRows.length&&!treeExpandedMaps[rowid]){treeExpandedMaps[rowid]=row;}reactData.treeExpandedFlag++;// 如果当前节点已选中,则展开后子节点也被选中
|
|
125
125
|
if(!checkStrictly&&$xeTable.isCheckedByCheckboxRow(row)){handleCheckedCheckboxRow($xeTable,childRows,true);}return $xeTable.$nextTick().then(()=>{if(transform){$xeTable.handleTableData();updateAfterDataIndex($xeTable);return $xeTable.$nextTick();}});});}}).catch(()=>{const{treeExpandLazyLoadedMaps}=internalData;if(rowRest){rowRest.treeLoaded=false;}if(treeExpandLazyLoadedMaps[rowid]){delete treeExpandLazyLoadedMaps[rowid];}}).finally(()=>{reactData.treeExpandedFlag++;$xeTable.$nextTick().then(()=>$xeTable.recalculate()).then(()=>resolve());});}else{resolve();}});};const handleTreeExpandReserve=($xeTable,row,expanded)=>{const internalData=$xeTable;const{treeExpandedReserveRowMap}=internalData;const treeOpts=$xeTable.computeTreeOpts;if(treeOpts.reserve){const rowid=(0,_util.getRowid)($xeTable,row);if(expanded){treeExpandedReserveRowMap[rowid]=row;}else if(treeExpandedReserveRowMap[rowid]){delete treeExpandedReserveRowMap[rowid];}}};const handleAsyncRowExpand=($xeTable,row)=>{const reactData=$xeTable;const internalData=$xeTable;return new Promise(resolve=>{const expandOpts=$xeTable.computeExpandOpts;const{loadMethod}=expandOpts;if(loadMethod){const{fullAllDataRowIdData,rowExpandLazyLoadedMaps}=internalData;const rowid=(0,_util.getRowid)($xeTable,row);const rowRest=fullAllDataRowIdData[rowid];rowExpandLazyLoadedMaps[rowid]=row;loadMethod({$table:$xeTable,row,rowIndex:$xeTable.getRowIndex(row),$rowIndex:$xeTable.getVMRowIndex(row)}).then(()=>{const{rowExpandedMaps}=internalData;if(rowRest){rowRest.expandLoaded=true;}rowExpandedMaps[rowid]=row;reactData.rowExpandedFlag++;}).catch(()=>{if(rowRest){rowRest.expandLoaded=false;}}).finally(()=>{const{rowExpandLazyLoadedMaps}=internalData;if(rowExpandLazyLoadedMaps[rowid]){delete rowExpandLazyLoadedMaps[rowid];}reactData.rowExpandedFlag++;$xeTable.$nextTick().then(()=>$xeTable.recalculate()).then(()=>$xeTable.updateCellAreas()).then(()=>resolve());});}else{resolve();}});};function calcVarRowHeightConfig($xeTable,sizeKey,sizeEl){const reactData=$xeTable;const{rowHeightStore}=reactData;if(sizeEl&&sizeEl.clientHeight){rowHeightStore[sizeKey]=sizeEl.clientHeight;}}function computeRowHeight($xeTable){const reactData=$xeTable;const{isAllOverflow}=reactData;const tableHeader=$xeTable.$refs.refTableHeader;const tableBody=$xeTable.$refs.refTableBody;const tableBodyElem=tableBody?tableBody.$el:null;const defaultRowHeight=$xeTable.computeDefaultRowHeight;let rowHeight=0;if(isAllOverflow){if(tableBodyElem){const tableHeaderElem=tableHeader?tableHeader.$el:null;let firstTrElem;firstTrElem=tableBodyElem.querySelector('tr');if(!firstTrElem&&tableHeaderElem){firstTrElem=tableHeaderElem.querySelector('tr');}if(firstTrElem){rowHeight=firstTrElem.clientHeight;}}if(!rowHeight){rowHeight=defaultRowHeight;}}else{rowHeight=defaultRowHeight;}// 最低支持 18px 行高
|
|
126
126
|
return Math.max(18,rowHeight);}function handleVirtualYVisible($xeTable){const reactData=$xeTable;const internalData=$xeTable;const{isAllOverflow,expandColumn,isScrollYBig,scrollYHeight}=reactData;const{elemStore,isResizeCellHeight,afterFullData,fullAllDataRowIdData}=internalData;const rowOpts=$xeTable.computeRowOpts;const cellOpts=$xeTable.computeCellOpts;const defaultRowHeight=$xeTable.computeDefaultRowHeight;const bodyScrollElem=(0,_util.getRefElem)(elemStore['main-body-scroll']);if(bodyScrollElem){const clientHeight=bodyScrollElem.clientHeight;let scrollTop=bodyScrollElem.scrollTop;if(isScrollYBig){scrollTop=Math.ceil((scrollYHeight-clientHeight)*Math.min(1,scrollTop/(maxYHeight-clientHeight)));}const startTop=scrollTop;const endTop=scrollTop+clientHeight;let toVisibleIndex=-1;let visibleSize=0;const isCustomCellHeight=isResizeCellHeight||cellOpts.height||rowOpts.height;if(!isCustomCellHeight&&!expandColumn&&isAllOverflow){toVisibleIndex=Math.floor(startTop/defaultRowHeight)-1;visibleSize=Math.ceil(clientHeight/defaultRowHeight)+1;}else{const{handleGetRowId}=(0,_util.createHandleGetRowId)($xeTable);let leftIndex=0;let rightIndex=afterFullData.length;while(leftIndex<rightIndex){const rIndex=Math.floor((leftIndex+rightIndex)/2);const row=afterFullData[rIndex];const rowid=handleGetRowId(row);const rowRest=fullAllDataRowIdData[rowid]||{};if(rowRest.oTop<=startTop){leftIndex=rIndex+1;}else{rightIndex=rIndex;}}toVisibleIndex=leftIndex===afterFullData.length?leftIndex:Math.max(0,leftIndex<afterFullData.length?leftIndex-2:0);for(let rIndex=toVisibleIndex,rLen=afterFullData.length;rIndex<rLen;rIndex++){const row=afterFullData[rIndex];const rowid=handleGetRowId(row);const rowRest=fullAllDataRowIdData[rowid]||{};visibleSize++;if(rowRest.oTop>endTop||visibleSize>=100){break;}}}return{toVisibleIndex:Math.max(0,toVisibleIndex),visibleSize:Math.max(6,visibleSize)};}return{toVisibleIndex:0,visibleSize:6};}function calculateMergerOffsetIndex(list,mergeMaps,offsetItem,type){const mKey=`${offsetItem.startIndex}:${offsetItem.endIndex}`;const mObj=mergeMaps[mKey];// 缓存
|
|
127
|
-
if(mObj){offsetItem.startIndex=mObj.startIndex;offsetItem.endIndex=mObj.endIndex;}else{for(let mcIndex=0,len=list.length;mcIndex<len;mcIndex++){const mergeItem=list[mcIndex];const{startIndex,endIndex}=offsetItem;const mergeStartIndex=mergeItem[type];const mergeSpanNumber=mergeItem[type+'span'];const mergeEndIndex=mergeStartIndex+mergeSpanNumber;if(mergeStartIndex<startIndex&&startIndex<mergeEndIndex){offsetItem.startIndex=mergeStartIndex;}if(mergeStartIndex<endIndex&&endIndex<mergeEndIndex){offsetItem.endIndex=mergeEndIndex;}if(offsetItem.startIndex!==startIndex||offsetItem.endIndex!==endIndex){mcIndex=-1;}}mergeMaps[mKey]=offsetItem;}}function buildMergeData(mergeConfigs){const mergeMaps={};const mergeRowMaps={};const mergeColMaps={};if(mergeConfigs&&mergeConfigs.length){for(let mIndex=0;mIndex<mergeConfigs.length;mIndex++){const{row:_rowIndex,col:_columnIndex,rowspan:mergeRowspan,colspan:mergeColspan}=mergeConfigs[mIndex];for(let i=0;i<mergeRowspan;i++){const currRIndex=_rowIndex+i;for(let j=0;j<mergeColspan;j++){const currCIndex=_columnIndex+j;mergeMaps[`${currRIndex}:${currCIndex}`]=!i&&!j?{rowspan:mergeRowspan,colspan:mergeColspan}:{rowspan:0,colspan:0};}}}}return{mergeMaps,mergeRowMaps,mergeColMaps};}function handleBodyMerge($xeTable,merges){const internalData=$xeTable;const{fullAllDataRowIdData,fullColumnIdData,visibleColumn,afterFullData,mergeBodyList,mergeBodyMaps}=internalData;if(merges){const{handleGetRowId}=(0,_util.createHandleGetRowId)($xeTable);if(!_xeUtils.default.isArray(merges)){merges=[merges];}merges.forEach(item=>{let{row,col,rowspan,colspan}=item;let mergeRowIndex=-1;let mergeColumnIndex=-1;if(_xeUtils.default.isNumber(row)){mergeRowIndex=row;}else{const rowid=row?handleGetRowId(row):null;const rowRest=rowid?fullAllDataRowIdData[rowid]:null;if(rowRest){mergeRowIndex=rowRest._index;}}if(_xeUtils.default.isNumber(col)){mergeColumnIndex=col;}else{const colid=col?col.id:null;const colRest=colid?fullColumnIdData[colid]:null;if(colRest){mergeColumnIndex=colRest._index;}}if(mergeRowIndex>-1&&mergeColumnIndex>-1&&(rowspan||colspan)){rowspan=_xeUtils.default.toNumber(rowspan)||1;colspan=_xeUtils.default.toNumber(colspan)||1;if(rowspan>1||colspan>1){const row=afterFullData[mergeRowIndex];const column=visibleColumn[mergeColumnIndex];let mergeItem=mergeBodyMaps[`${mergeRowIndex}:${mergeColumnIndex}`];if(mergeItem){mergeItem.rowspan=rowspan;mergeItem.colspan=colspan;mergeItem._rowspan=rowspan;mergeItem._colspan=colspan;}else{mergeItem={row:mergeRowIndex,col:mergeColumnIndex,rowspan,colspan,_row:row,_col:column,_rowspan:rowspan,_colspan:colspan};mergeBodyMaps[`${mergeRowIndex}:${mergeColumnIndex}`]=mergeItem;mergeBodyList.push(mergeItem);}}}});}}function removeBodyMerges($xeTable,merges){const internalData=$xeTable;const{mergeBodyList,fullColumnIdData,fullAllDataRowIdData,mergeBodyMaps}=internalData;const rest=[];if(merges){const{handleGetRowId}=(0,_util.createHandleGetRowId)($xeTable);if(!_xeUtils.default.isArray(merges)){merges=[merges];}merges.forEach(item=>{const{row:margeRow,col:margeCol}=item;let mergeRowIndex=-1;let mergeColumnIndex=-1;if(_xeUtils.default.isNumber(margeRow)){mergeRowIndex=margeRow;}else{const rowid=margeRow?handleGetRowId(margeRow):null;const rowRest=rowid?fullAllDataRowIdData[rowid]:null;if(rowRest){mergeRowIndex=rowRest._index;}}if(_xeUtils.default.isNumber(margeCol)){mergeColumnIndex=margeCol;}else{const colid=margeCol?margeCol.id:null;const colRest=colid?fullColumnIdData[colid]:null;if(colRest){mergeColumnIndex=colRest._index;}}const mcIndex=_xeUtils.default.findIndexOf(mergeBodyList,item=>item.row===mergeRowIndex&&item.col===mergeColumnIndex);if(mcIndex>-1){const rItems=mergeBodyList.splice(mcIndex,1);const item=rItems[0];if(item){rest.push(rItems[0]);if(mergeBodyMaps[`${mergeRowIndex}:${mergeColumnIndex}`]){delete mergeBodyMaps[`${mergeRowIndex}:${mergeColumnIndex}`];}}}});}return rest;}function handleHeaderMerge($xeTable,merges){const props=$xeTable;const reactData=$xeTable;const internalData=$xeTable;const{showCustomHeader}=props;const{footerTableData}=reactData;const{mergeHeaderList,mergeHeaderMaps,fullColumnIdData}=internalData;if(merges){const{visibleColumn}=internalData;if(!_xeUtils.default.isArray(merges)){merges=[merges];}merges.forEach(item=>{let{row:margeRow,col:margeCol,rowspan,colspan}=item;const mergeRowIndex=_xeUtils.default.isNumber(margeRow)?margeRow:-1;let mergeColumnIndex=-1;if(_xeUtils.default.isNumber(margeCol)){mergeColumnIndex=margeCol;}else{const colid=margeCol?margeCol.id:null;const colRest=colid?fullColumnIdData[colid]:null;if(colRest){mergeColumnIndex=colRest._index;}}if(mergeRowIndex>-1&&mergeColumnIndex>-1&&(rowspan||colspan)){rowspan=_xeUtils.default.toNumber(rowspan)||1;colspan=_xeUtils.default.toNumber(colspan)||1;if(!showCustomHeader&&rowspan>1){(0,_log.errLog)('vxe.error.notSupportProp',['[table] show-custom-header=false',`rowspan=${rowspan}`,'rowspan=1']);return;}if(rowspan>1||colspan>1){const row=footerTableData[mergeRowIndex];const column=visibleColumn[mergeColumnIndex];let mergeItem=mergeHeaderMaps[`${mergeRowIndex}:${mergeColumnIndex}`];if(mergeItem){mergeItem.rowspan=rowspan;mergeItem.colspan=colspan;mergeItem._rowspan=rowspan;mergeItem._colspan=colspan;}else{mergeItem={row:mergeRowIndex,col:mergeColumnIndex,rowspan,colspan,_row:row,_col:column,_rowspan:rowspan,_colspan:colspan};mergeHeaderMaps[`${mergeRowIndex}:${mergeColumnIndex}`]=mergeItem;mergeHeaderList.push(mergeItem);}}}});}}function removeHeaderMerges($xeTable,merges){const internalData=$xeTable;const{mergeHeaderList,fullColumnIdData,mergeHeaderMaps}=internalData;const rest=[];if(merges){if(!_xeUtils.default.isArray(merges)){merges=[merges];}merges.forEach(item=>{const{row:margeRow,col:margeCol}=item;const mergeRowIndex=_xeUtils.default.isNumber(margeRow)?margeRow:-1;let mergeColumnIndex=-1;if(_xeUtils.default.isNumber(margeCol)){mergeColumnIndex=margeCol;}else{const colid=margeCol?margeCol.id:null;const colRest=colid?fullColumnIdData[colid]:null;if(colRest){mergeColumnIndex=colRest._index;}}const mcIndex=_xeUtils.default.findIndexOf(mergeHeaderList,item=>item.row===mergeRowIndex&&item.col===mergeColumnIndex);if(mcIndex>-1){const rItems=mergeHeaderList.splice(mcIndex,1);const item=rItems[0];if(item){rest.push(item);if(mergeHeaderMaps[`${mergeRowIndex}:${mergeColumnIndex}`]){delete mergeHeaderMaps[`${mergeRowIndex}:${mergeColumnIndex}`];}}}});}return rest;}function handleFooterMerge($xeTable,merges){const reactData=$xeTable;const internalData=$xeTable;const{footerTableData}=reactData;const{mergeFooterList,mergeFooterMaps,fullColumnIdData}=internalData;if(merges){const{visibleColumn}=internalData;if(!_xeUtils.default.isArray(merges)){merges=[merges];}merges.forEach(item=>{let{row:margeRow,col:margeCol,rowspan,colspan}=item;const mergeRowIndex=_xeUtils.default.isNumber(margeRow)?margeRow:-1;let mergeColumnIndex=-1;if(_xeUtils.default.isNumber(margeCol)){mergeColumnIndex=margeCol;}else{const colid=margeCol?margeCol.id:null;const colRest=colid?fullColumnIdData[colid]:null;if(colRest){mergeColumnIndex=colRest._index;}}if(mergeRowIndex>-1&&mergeColumnIndex>-1&&(rowspan||colspan)){rowspan=_xeUtils.default.toNumber(rowspan)||1;colspan=_xeUtils.default.toNumber(colspan)||1;if(rowspan>1||colspan>1){const row=footerTableData[mergeRowIndex];const column=visibleColumn[mergeColumnIndex];let mergeItem=mergeFooterMaps[`${mergeRowIndex}:${mergeColumnIndex}`];if(mergeItem){mergeItem.rowspan=rowspan;mergeItem.colspan=colspan;mergeItem._rowspan=rowspan;mergeItem._colspan=colspan;}else{mergeItem={row:mergeRowIndex,col:mergeColumnIndex,rowspan,colspan,_row:row,_col:column,_rowspan:rowspan,_colspan:colspan};mergeFooterMaps[`${mergeRowIndex}:${mergeColumnIndex}`]=mergeItem;mergeFooterList.push(mergeItem);}}}});}}function removeFooterMerges($xeTable,merges){const internalData=$xeTable;const{mergeFooterList,fullColumnIdData,mergeFooterMaps}=internalData;const rest=[];if(merges){if(!_xeUtils.default.isArray(merges)){merges=[merges];}merges.forEach(item=>{const{row:margeRow,col:margeCol}=item;const mergeRowIndex=_xeUtils.default.isNumber(margeRow)?margeRow:-1;let mergeColumnIndex=-1;if(_xeUtils.default.isNumber(margeCol)){mergeColumnIndex=margeCol;}else{const colid=margeCol?margeCol.id:null;const colRest=colid?fullColumnIdData[colid]:null;if(colRest){mergeColumnIndex=colRest._index;}}const mcIndex=_xeUtils.default.findIndexOf(mergeFooterList,item=>item.row===mergeRowIndex&&item.col===mergeColumnIndex);if(mcIndex>-1){const rItems=mergeFooterList.splice(mcIndex,1);const item=rItems[0];if(item){rest.push(item);if(mergeFooterMaps[`${mergeRowIndex}:${mergeColumnIndex}`]){delete mergeFooterMaps[`${mergeRowIndex}:${mergeColumnIndex}`];}}}});}return rest;}function handleSortEvent($xeTable,evnt,sortConfs,isUpdate){const internalData=$xeTable;const{tableFullColumn}=internalData;const sortOpts=$xeTable.computeSortOpts;const{multiple,remote,orders}=sortOpts;if(!_xeUtils.default.isArray(sortConfs)){sortConfs=[sortConfs];}if(sortConfs&&sortConfs.length){const orderActiveMaps={};if(!multiple){sortConfs=[sortConfs[0]];tableFullColumn.forEach(column=>{if(column.order){orderActiveMaps[column.id]=column;}});}const sortColMpps={};let firstColumn=null;sortConfs.forEach((confs,index)=>{let{field,order}=confs;let column=field;if(_xeUtils.default.isString(field)){column=$xeTable.getColumnByField(field);}if(!firstColumn){firstColumn=column;}if(column&&column.sortable){if(orders&&orders.indexOf(order)===-1){order=getNextSortOrder($xeTable,column);}if(column.order!==order){column.order=order;}column.sortTime=Date.now()+index;sortColMpps[column.id]=column;}});if(!multiple){_xeUtils.default.each(orderActiveMaps,(oaCol,oaId)=>{if(!sortColMpps[oaId]){oaCol.order=null;}});}if(isUpdate){if(!remote){$xeTable.handleTableData(true);}}if(evnt){$xeTable.handleColumnSortEvent(evnt,firstColumn);}return $xeTable.$nextTick().then(()=>{updateRowOffsetTop($xeTable);$xeTable.updateCellAreas();return updateStyle($xeTable);});}return $xeTable.$nextTick();}function clearAllSort($xeTable){const internalData=$xeTable;const{tableFullColumn}=internalData;tableFullColumn.forEach(column=>{column.order=null;});}function calcTableHeight($xeTable,key){const props=$xeTable;const reactData=$xeTable;const{editConfig,editRules}=props;const{parentHeight,tableColumn}=reactData;let val=props[key];if(key==='minHeight'){const defMinHeight=getConfig().table.minHeight;if(_xeUtils.default.eqNull(val)){if((0,_utils.eqEmptyValue)(defMinHeight)){if(!tableColumn.length){// 如果全部列被隐藏
|
|
127
|
+
if(mObj){offsetItem.startIndex=mObj.startIndex;offsetItem.endIndex=mObj.endIndex;}else{for(let mcIndex=0,len=list.length;mcIndex<len;mcIndex++){const mergeItem=list[mcIndex];const{startIndex,endIndex}=offsetItem;const mergeStartIndex=mergeItem[type];const mergeSpanNumber=mergeItem[type+'span'];const mergeEndIndex=mergeStartIndex+mergeSpanNumber;if(mergeStartIndex<startIndex&&startIndex<mergeEndIndex){offsetItem.startIndex=mergeStartIndex;}if(mergeStartIndex<endIndex&&endIndex<mergeEndIndex){offsetItem.endIndex=mergeEndIndex;}if(offsetItem.startIndex!==startIndex||offsetItem.endIndex!==endIndex){mcIndex=-1;}}mergeMaps[mKey]=offsetItem;}}function buildMergeData(mergeConfigs){const mergeMaps={};const mergeRowMaps={};const mergeColMaps={};if(mergeConfigs&&mergeConfigs.length){for(let mIndex=0;mIndex<mergeConfigs.length;mIndex++){const{row:_rowIndex,col:_columnIndex,rowspan:mergeRowspan,colspan:mergeColspan}=mergeConfigs[mIndex];for(let i=0;i<mergeRowspan;i++){const currRIndex=_rowIndex+i;for(let j=0;j<mergeColspan;j++){const currCIndex=_columnIndex+j;mergeMaps[`${currRIndex}:${currCIndex}`]=!i&&!j?{rowspan:mergeRowspan,colspan:mergeColspan}:{rowspan:0,colspan:0};}}}}return{mergeMaps,mergeRowMaps,mergeColMaps};}function handleBodyMerge($xeTable,merges){const internalData=$xeTable;const{fullAllDataRowIdData,fullColumnIdData,visibleColumn,afterFullData,mergeBodyList,mergeBodyMaps}=internalData;if(merges){const{handleGetRowId}=(0,_util.createHandleGetRowId)($xeTable);if(!_xeUtils.default.isArray(merges)){merges=[merges];}merges.forEach(item=>{let{row,col,rowspan,colspan}=item;let mergeRowIndex=-1;let mergeColumnIndex=-1;if(_xeUtils.default.isNumber(row)){mergeRowIndex=row;}else{const rowid=row?handleGetRowId(row):null;const rowRest=rowid?fullAllDataRowIdData[rowid]:null;if(rowRest){mergeRowIndex=rowRest._index;}}if(_xeUtils.default.isNumber(col)){mergeColumnIndex=col;}else{const colid=col?col.id:null;const colRest=colid?fullColumnIdData[colid]:null;if(colRest){mergeColumnIndex=colRest._index;}}if(mergeRowIndex>-1&&mergeColumnIndex>-1&&(rowspan||colspan)){rowspan=_xeUtils.default.toNumber(rowspan)||1;colspan=_xeUtils.default.toNumber(colspan)||1;if(rowspan>1||colspan>1){const row=afterFullData[mergeRowIndex];const column=visibleColumn[mergeColumnIndex];let mergeItem=mergeBodyMaps[`${mergeRowIndex}:${mergeColumnIndex}`];if(mergeItem){mergeItem.rowspan=rowspan;mergeItem.colspan=colspan;mergeItem._rowspan=rowspan;mergeItem._colspan=colspan;}else{mergeItem={row:mergeRowIndex,col:mergeColumnIndex,rowspan,colspan,_row:row,_col:column,_rowspan:rowspan,_colspan:colspan};mergeBodyMaps[`${mergeRowIndex}:${mergeColumnIndex}`]=mergeItem;mergeBodyList.push(mergeItem);}}}});}}function removeBodyMerges($xeTable,merges){const internalData=$xeTable;const{mergeBodyList,fullColumnIdData,fullAllDataRowIdData,mergeBodyMaps}=internalData;const rest=[];if(merges){const{handleGetRowId}=(0,_util.createHandleGetRowId)($xeTable);if(!_xeUtils.default.isArray(merges)){merges=[merges];}merges.forEach(item=>{const{row:margeRow,col:margeCol}=item;let mergeRowIndex=-1;let mergeColumnIndex=-1;if(_xeUtils.default.isNumber(margeRow)){mergeRowIndex=margeRow;}else{const rowid=margeRow?handleGetRowId(margeRow):null;const rowRest=rowid?fullAllDataRowIdData[rowid]:null;if(rowRest){mergeRowIndex=rowRest._index;}}if(_xeUtils.default.isNumber(margeCol)){mergeColumnIndex=margeCol;}else{const colid=margeCol?margeCol.id:null;const colRest=colid?fullColumnIdData[colid]:null;if(colRest){mergeColumnIndex=colRest._index;}}const mcIndex=_xeUtils.default.findIndexOf(mergeBodyList,item=>item.row===mergeRowIndex&&item.col===mergeColumnIndex);if(mcIndex>-1){const rItems=mergeBodyList.splice(mcIndex,1);const item=rItems[0];if(item){rest.push(rItems[0]);if(mergeBodyMaps[`${mergeRowIndex}:${mergeColumnIndex}`]){delete mergeBodyMaps[`${mergeRowIndex}:${mergeColumnIndex}`];}}}});}return rest;}function handleHeaderMerge($xeTable,merges){const props=$xeTable;const reactData=$xeTable;const internalData=$xeTable;const{showCustomHeader}=props;const{footerTableData}=reactData;const{mergeHeaderList,mergeHeaderMaps,fullColumnIdData}=internalData;if(merges){const{visibleColumn}=internalData;if(!_xeUtils.default.isArray(merges)){merges=[merges];}merges.forEach(item=>{let{row:margeRow,col:margeCol,rowspan,colspan}=item;const mergeRowIndex=_xeUtils.default.isNumber(margeRow)?margeRow:-1;let mergeColumnIndex=-1;if(_xeUtils.default.isNumber(margeCol)){mergeColumnIndex=margeCol;}else{const colid=margeCol?margeCol.id:null;const colRest=colid?fullColumnIdData[colid]:null;if(colRest){mergeColumnIndex=colRest._index;}}if(mergeRowIndex>-1&&mergeColumnIndex>-1&&(rowspan||colspan)){rowspan=_xeUtils.default.toNumber(rowspan)||1;colspan=_xeUtils.default.toNumber(colspan)||1;if(!showCustomHeader&&rowspan>1){errLog('vxe.error.notSupportProp',['[table] show-custom-header=false',`rowspan=${rowspan}`,'rowspan=1']);return;}if(rowspan>1||colspan>1){const row=footerTableData[mergeRowIndex];const column=visibleColumn[mergeColumnIndex];let mergeItem=mergeHeaderMaps[`${mergeRowIndex}:${mergeColumnIndex}`];if(mergeItem){mergeItem.rowspan=rowspan;mergeItem.colspan=colspan;mergeItem._rowspan=rowspan;mergeItem._colspan=colspan;}else{mergeItem={row:mergeRowIndex,col:mergeColumnIndex,rowspan,colspan,_row:row,_col:column,_rowspan:rowspan,_colspan:colspan};mergeHeaderMaps[`${mergeRowIndex}:${mergeColumnIndex}`]=mergeItem;mergeHeaderList.push(mergeItem);}}}});}}function removeHeaderMerges($xeTable,merges){const internalData=$xeTable;const{mergeHeaderList,fullColumnIdData,mergeHeaderMaps}=internalData;const rest=[];if(merges){if(!_xeUtils.default.isArray(merges)){merges=[merges];}merges.forEach(item=>{const{row:margeRow,col:margeCol}=item;const mergeRowIndex=_xeUtils.default.isNumber(margeRow)?margeRow:-1;let mergeColumnIndex=-1;if(_xeUtils.default.isNumber(margeCol)){mergeColumnIndex=margeCol;}else{const colid=margeCol?margeCol.id:null;const colRest=colid?fullColumnIdData[colid]:null;if(colRest){mergeColumnIndex=colRest._index;}}const mcIndex=_xeUtils.default.findIndexOf(mergeHeaderList,item=>item.row===mergeRowIndex&&item.col===mergeColumnIndex);if(mcIndex>-1){const rItems=mergeHeaderList.splice(mcIndex,1);const item=rItems[0];if(item){rest.push(item);if(mergeHeaderMaps[`${mergeRowIndex}:${mergeColumnIndex}`]){delete mergeHeaderMaps[`${mergeRowIndex}:${mergeColumnIndex}`];}}}});}return rest;}function handleFooterMerge($xeTable,merges){const reactData=$xeTable;const internalData=$xeTable;const{footerTableData}=reactData;const{mergeFooterList,mergeFooterMaps,fullColumnIdData}=internalData;if(merges){const{visibleColumn}=internalData;if(!_xeUtils.default.isArray(merges)){merges=[merges];}merges.forEach(item=>{let{row:margeRow,col:margeCol,rowspan,colspan}=item;const mergeRowIndex=_xeUtils.default.isNumber(margeRow)?margeRow:-1;let mergeColumnIndex=-1;if(_xeUtils.default.isNumber(margeCol)){mergeColumnIndex=margeCol;}else{const colid=margeCol?margeCol.id:null;const colRest=colid?fullColumnIdData[colid]:null;if(colRest){mergeColumnIndex=colRest._index;}}if(mergeRowIndex>-1&&mergeColumnIndex>-1&&(rowspan||colspan)){rowspan=_xeUtils.default.toNumber(rowspan)||1;colspan=_xeUtils.default.toNumber(colspan)||1;if(rowspan>1||colspan>1){const row=footerTableData[mergeRowIndex];const column=visibleColumn[mergeColumnIndex];let mergeItem=mergeFooterMaps[`${mergeRowIndex}:${mergeColumnIndex}`];if(mergeItem){mergeItem.rowspan=rowspan;mergeItem.colspan=colspan;mergeItem._rowspan=rowspan;mergeItem._colspan=colspan;}else{mergeItem={row:mergeRowIndex,col:mergeColumnIndex,rowspan,colspan,_row:row,_col:column,_rowspan:rowspan,_colspan:colspan};mergeFooterMaps[`${mergeRowIndex}:${mergeColumnIndex}`]=mergeItem;mergeFooterList.push(mergeItem);}}}});}}function removeFooterMerges($xeTable,merges){const internalData=$xeTable;const{mergeFooterList,fullColumnIdData,mergeFooterMaps}=internalData;const rest=[];if(merges){if(!_xeUtils.default.isArray(merges)){merges=[merges];}merges.forEach(item=>{const{row:margeRow,col:margeCol}=item;const mergeRowIndex=_xeUtils.default.isNumber(margeRow)?margeRow:-1;let mergeColumnIndex=-1;if(_xeUtils.default.isNumber(margeCol)){mergeColumnIndex=margeCol;}else{const colid=margeCol?margeCol.id:null;const colRest=colid?fullColumnIdData[colid]:null;if(colRest){mergeColumnIndex=colRest._index;}}const mcIndex=_xeUtils.default.findIndexOf(mergeFooterList,item=>item.row===mergeRowIndex&&item.col===mergeColumnIndex);if(mcIndex>-1){const rItems=mergeFooterList.splice(mcIndex,1);const item=rItems[0];if(item){rest.push(item);if(mergeFooterMaps[`${mergeRowIndex}:${mergeColumnIndex}`]){delete mergeFooterMaps[`${mergeRowIndex}:${mergeColumnIndex}`];}}}});}return rest;}function handleSortEvent($xeTable,evnt,sortConfs,isUpdate){const internalData=$xeTable;const{tableFullColumn}=internalData;const sortOpts=$xeTable.computeSortOpts;const{multiple,remote,orders}=sortOpts;if(!_xeUtils.default.isArray(sortConfs)){sortConfs=[sortConfs];}if(sortConfs&&sortConfs.length){const orderActiveMaps={};if(!multiple){sortConfs=[sortConfs[0]];tableFullColumn.forEach(column=>{if(column.order){orderActiveMaps[column.id]=column;}});}const sortColMpps={};let firstColumn=null;sortConfs.forEach((confs,index)=>{let{field,order}=confs;let column=field;if(_xeUtils.default.isString(field)){column=$xeTable.getColumnByField(field);}if(!firstColumn){firstColumn=column;}if(column&&column.sortable){if(orders&&orders.indexOf(order)===-1){order=getNextSortOrder($xeTable,column);}if(column.order!==order){column.order=order;}column.sortTime=Date.now()+index;sortColMpps[column.id]=column;}});if(!multiple){_xeUtils.default.each(orderActiveMaps,(oaCol,oaId)=>{if(!sortColMpps[oaId]){oaCol.order=null;}});}if(isUpdate){if(!remote){$xeTable.handleTableData(true);}}if(evnt){$xeTable.handleColumnSortEvent(evnt,firstColumn);}return $xeTable.$nextTick().then(()=>{updateRowOffsetTop($xeTable);$xeTable.updateCellAreas();return updateStyle($xeTable);});}return $xeTable.$nextTick();}function clearAllSort($xeTable){const internalData=$xeTable;const{tableFullColumn}=internalData;tableFullColumn.forEach(column=>{column.order=null;});}function calcTableHeight($xeTable,key){const props=$xeTable;const reactData=$xeTable;const{editConfig,editRules}=props;const{parentHeight,tableColumn}=reactData;let val=props[key];if(key==='minHeight'){const defMinHeight=getConfig().table.minHeight;if(_xeUtils.default.eqNull(val)){if((0,_utils.eqEmptyValue)(defMinHeight)){if(!tableColumn.length){// 如果全部列被隐藏
|
|
128
128
|
val=40;}else if(editRules&&(0,_utils.isEnableConf)(editConfig)){// 编辑模式默认最小高度
|
|
129
129
|
val=144;}}else{val=defMinHeight;}}}let num=0;if(val){if(val==='100%'||val==='auto'){num=parentHeight;}else{const excludeHeight=$xeTable.getExcludeHeight();if((0,_dom.isScale)(val)){num=Math.floor((_xeUtils.default.toInteger(val)||1)/100*parentHeight);}else{num=_xeUtils.default.toNumber(val);}num=Math.max(40,num-excludeHeight);}}return num;}/**
|
|
130
130
|
* 列宽算法,计算单元格列宽,动态分配可用剩余空间
|
|
@@ -176,8 +176,8 @@ if(childList.length&&childList[0].isAggregate){_xeUtils.default.each(childList,r
|
|
|
176
176
|
* 加载表格数据
|
|
177
177
|
* @param {Array} datas 数据
|
|
178
178
|
*/function loadTableData($xeTable,datas,isReload,isReset){const props=$xeTable;const reactData=$xeTable;const internalData=$xeTable;const{keepSource,treeConfig,aggregateConfig,rowGroupConfig}=props;const{rowGroupList,scrollYLoad:oldScrollYLoad}=reactData;const{initStatus,scrollYStore,scrollXStore,lastScrollLeft,lastScrollTop}=internalData;const rowOpts=$xeTable.computeRowOpts;const treeOpts=$xeTable.computeTreeOpts;const expandOpts=$xeTable.computeExpandOpts;const{transform}=treeOpts;const childrenField=treeOpts.children||treeOpts.childrenField;let treeData=[];let fullData=datas?datas.slice(0):[];// 转为响应式数据
|
|
179
|
-
if(fullData.length>supportMaxRow){
|
|
180
|
-
if(!treeOpts.rowField){
|
|
179
|
+
if(fullData.length>supportMaxRow){errLog('vxe.error.errMaxRow',[supportMaxRow]);}if(treeConfig&&rowGroupList.length){errLog('vxe.error.noTree',['aggregate-config']);return $xeTable.$nextTick();}if(rowOpts.drag&&rowGroupList.length){errLog('vxe.error.errConflicts',['row-config.drag','aggregate-config']);return $xeTable.$nextTick();}let isRGroup=false;if(treeConfig){if(transform){// 树结构自动转换
|
|
180
|
+
if(!treeOpts.rowField){errLog('vxe.error.reqProp',['tree-config.rowField']);}if(!treeOpts.parentField){errLog('vxe.error.reqProp',['tree-config.parentField']);}if(!childrenField){errLog('vxe.error.reqProp',['tree-config.childrenField']);}if(!treeOpts.mapChildrenField){errLog('vxe.error.reqProp',['tree-config.mapChildrenField']);}if(childrenField===treeOpts.mapChildrenField){errLog('vxe.error.errConflicts',['tree-config.childrenField','tree-config.mapChildrenField']);}// fullData.forEach(row => {
|
|
181
181
|
// if (row[treeOpts.children] && row[treeOpts.children].length) {
|
|
182
182
|
// warnLog('vxe.error.errConflicts', ['tree-config.transform', `row.${treeOpts.children}`])
|
|
183
183
|
// }
|
|
@@ -187,7 +187,7 @@ internalData.tableFullData=fullData;internalData.tableFullTreeData=isRGroup?[]:t
|
|
|
187
187
|
$xeTable.cacheRowMap(isReset);// 原始数据
|
|
188
188
|
internalData.tableSynchData=datas;if(isReset){internalData.isResizeCellHeight=false;}// 克隆原数据,用于显示编辑状态,与编辑值做对比
|
|
189
189
|
if(keepSource){$xeTable.cacheSourceMap(fullData);}if($xeTable.clearCellAreas&&props.mouseConfig){$xeTable.clearCellAreas();$xeTable.clearCopyCellArea();}$xeTable.clearMergeCells();$xeTable.clearMergeFooterItems();$xeTable.clearHistory();$xeTable.handleTableData(true);$xeTable.updateFooter();$xeTable.handleUpdateBodyMerge();return $xeTable.$nextTick().then(()=>{updateHeight($xeTable);updateStyle($xeTable);}).then(()=>{computeScrollLoad($xeTable);syncGanttScrollYStatus($xeTable);}).then(()=>{const virtualYOpts=$xeTable.computeVirtualYOpts;// 是否启用了虚拟滚动
|
|
190
|
-
if(sYLoad){scrollYStore.endIndex=scrollYStore.visibleSize;}if(sYLoad){if(reactData.expandColumn&&expandOpts.mode!=='fixed'){
|
|
190
|
+
if(sYLoad){scrollYStore.endIndex=scrollYStore.visibleSize;}if(sYLoad){if(reactData.expandColumn&&expandOpts.mode!=='fixed'){errLog('vxe.error.notConflictProp',['column.type="expand','expand-config.mode="fixed"']);}if(virtualYOpts.mode==='scroll'&&reactData.expandColumn&&expandOpts.mode==='fixed'){warnLog('vxe.error.notConflictProp',['virtual-y-config.mode=scroll','expand-config.mode=inside']);}// if (showOverflow) {
|
|
191
191
|
// if (!rowOpts.height) {
|
|
192
192
|
// const errColumn = internalData.tableFullColumn.find(column => column.showOverflow === false)
|
|
193
193
|
// if (errColumn) {
|
|
@@ -195,7 +195,7 @@ if(sYLoad){scrollYStore.endIndex=scrollYStore.visibleSize;}if(sYLoad){if(reactDa
|
|
|
195
195
|
// }
|
|
196
196
|
// }
|
|
197
197
|
// }
|
|
198
|
-
if(!(props.height||props.maxHeight)){
|
|
198
|
+
if(!(props.height||props.maxHeight)){errLog('vxe.error.reqSupportProp',['virtual-y-config.enabled = true','height | max-height']);}// if (!props.showOverflow) {
|
|
199
199
|
// warnLog('vxe.error.reqProp', ['table.show-overflow'])
|
|
200
200
|
// }
|
|
201
201
|
// if (props.spanMethod) {
|
|
@@ -214,7 +214,7 @@ if(oldScrollYLoad===sYLoad){(0,_util.restoreScrollLocation)($xeTable,targetScrol
|
|
|
214
214
|
// const rowOpts = $xeTable.computeRowOpts
|
|
215
215
|
const leftList=[];const centerList=[];const rightList=[];const{isGroup,columnStore}=reactData;const{collectColumn,tableFullColumn,scrollXStore,fullColumnIdData}=internalData;// 如果是分组表头,如果子列全部被隐藏,则根列也隐藏
|
|
216
216
|
if(isGroup){const leftGroupList=[];const centerGroupList=[];const rightGroupList=[];_xeUtils.default.eachTree(collectColumn,(column,index,items,path,parentColumn)=>{const isColGroup=(0,_utils.hasChildrenList)(column);// 如果是分组,必须按组设置固定列,不允许给子列设置固定
|
|
217
|
-
if(parentColumn&&parentColumn.fixed){column.fixed=parentColumn.fixed;}if(parentColumn&&(column.fixed||'')!==(parentColumn.fixed||'')){
|
|
217
|
+
if(parentColumn&&parentColumn.fixed){column.fixed=parentColumn.fixed;}if(parentColumn&&(column.fixed||'')!==(parentColumn.fixed||'')){errLog('vxe.error.groupFixed');}if(isColGroup){column.visible=!!_xeUtils.default.findTree(column.children,subColumn=>(0,_utils.hasChildrenList)(subColumn)?false:subColumn.visible);}else if(column.visible){if(column.fixed==='left'){leftList.push(column);}else if(column.fixed==='right'){rightList.push(column);}else{centerList.push(column);}}});collectColumn.forEach(column=>{if(column.visible){if(column.fixed==='left'){leftGroupList.push(column);}else if(column.fixed==='right'){rightGroupList.push(column);}else{centerGroupList.push(column);}}});reactData.tableGroupColumn=leftGroupList.concat(centerGroupList).concat(rightGroupList);}else{// 重新分配列
|
|
218
218
|
tableFullColumn.forEach(column=>{if(column.visible){if(column.fixed==='left'){leftList.push(column);}else if(column.fixed==='right'){rightList.push(column);}else{centerList.push(column);}}});}const visibleColumn=leftList.concat(centerList).concat(rightList);internalData.visibleColumn=visibleColumn;updateColumnOffsetLeft($xeTable);const sXLoad=updateScrollXStatus($xeTable);reactData.hasFixedColumn=leftList.length>0||rightList.length>0;Object.assign(columnStore,{leftList,centerList,rightList});if(sXLoad){// if (showOverflow) {
|
|
219
219
|
// if (!rowOpts.height) {
|
|
220
220
|
// const errColumn = internalData.tableFullColumn.find(column => column.showOverflow === false)
|
|
@@ -229,9 +229,9 @@ tableFullColumn.forEach(column=>{if(column.visible){if(column.fixed==='left'){le
|
|
|
229
229
|
// if (props.showFooter && !props.showFooterOverflow) {
|
|
230
230
|
// warnLog('vxe.error.reqProp', ['show-footer-overflow'])
|
|
231
231
|
// }
|
|
232
|
-
if(props.spanMethod){
|
|
232
|
+
if(props.spanMethod){warnLog('vxe.error.scrollErrProp',['span-method']);}if(props.footerSpanMethod){warnLog('vxe.error.scrollErrProp',['footer-span-method']);}if(isReset){const{visibleSize}=handleVirtualXVisible($xeTable);scrollXStore.startIndex=0;scrollXStore.endIndex=visibleSize;scrollXStore.visibleSize=visibleSize;scrollXStore.visibleStartIndex=0;scrollXStore.visibleEndIndex=visibleSize;}}// 如果列被显示/隐藏,则清除合并状态
|
|
233
233
|
// 如果列被设置为固定,则清除合并状态
|
|
234
|
-
if(visibleColumn.length!==internalData.visibleColumn.length||!internalData.visibleColumn.every((column,index)=>column===visibleColumn[index])){$xeTable.clearMergeCells();$xeTable.clearMergeFooterItems();}visibleColumn.forEach((column,index)=>{const colid=column.id;const colRest=fullColumnIdData[colid];if(colRest){colRest._index=index;}});handleTableColumn($xeTable);handleUpdateAggValues($xeTable);if(isReset){return $xeTable.updateFooter().then(()=>{return $xeTable.recalculate();}).then(()=>{$xeTable.updateCellAreas();return $xeTable.recalculate();});}return $xeTable.updateFooter();}function initColumnHierarchy($xeTable){const internalData=$xeTable;const{collectColumn}=internalData;const fullColIdData={};const fullColFieldData={};let sortIndex=1;_xeUtils.default.eachTree(collectColumn,(column,index,items,path,parentColumn)=>{const{id:colid,field}=column;const parentId=parentColumn?parentColumn.id:null;const rest={$index:-1,_index:-1,column,colid,index,items,parent:parentColumn||null,width:0,oLeft:0};column.parentId=parentId;column.defaultParentId=parentId;column.sortNumber=sortIndex;column.renderSortNumber=sortIndex;sortIndex++;if(field){if(fullColFieldData[field]){
|
|
234
|
+
if(visibleColumn.length!==internalData.visibleColumn.length||!internalData.visibleColumn.every((column,index)=>column===visibleColumn[index])){$xeTable.clearMergeCells();$xeTable.clearMergeFooterItems();}visibleColumn.forEach((column,index)=>{const colid=column.id;const colRest=fullColumnIdData[colid];if(colRest){colRest._index=index;}});handleTableColumn($xeTable);handleUpdateAggValues($xeTable);if(isReset){return $xeTable.updateFooter().then(()=>{return $xeTable.recalculate();}).then(()=>{$xeTable.updateCellAreas();return $xeTable.recalculate();});}return $xeTable.updateFooter();}function initColumnHierarchy($xeTable){const internalData=$xeTable;const{collectColumn}=internalData;const fullColIdData={};const fullColFieldData={};let sortIndex=1;_xeUtils.default.eachTree(collectColumn,(column,index,items,path,parentColumn)=>{const{id:colid,field}=column;const parentId=parentColumn?parentColumn.id:null;const rest={$index:-1,_index:-1,column,colid,index,items,parent:parentColumn||null,width:0,oLeft:0};column.parentId=parentId;column.defaultParentId=parentId;column.sortNumber=sortIndex;column.renderSortNumber=sortIndex;sortIndex++;if(field){if(fullColFieldData[field]){errLog('vxe.error.colRepet',['field',field]);}fullColFieldData[field]=rest;}fullColIdData[colid]=rest;});internalData.fullColumnIdData=fullColIdData;internalData.fullColumnFieldData=fullColFieldData;}function buildColumnInfo($xeTable){const props=$xeTable;const $xeToolbar=$xeTable.$refs.$xeToolbar;const reactData=$xeTable;const internalData=$xeTable;const{scrollXLoad,scrollYLoad,expandColumn}=reactData;const expandOpts=$xeTable.computeExpandOpts;cacheColumnMap($xeTable);parseColumns($xeTable,true).then(()=>{if(reactData.scrollXLoad){loadScrollXData($xeTable);}});$xeTable.clearHeaderFormatterCache();$xeTable.clearMergeCells();$xeTable.clearMergeFooterItems();$xeTable.handleTableData(true);$xeTable.handleAggregateSummaryData();if((scrollXLoad||scrollYLoad)&&expandColumn&&expandOpts.mode!=='fixed'){warnLog('vxe.error.scrollErrProp',['column.type=expand']);}return $xeTable.$nextTick().then(()=>{if($xeToolbar){$xeToolbar.syncUpdate({collectColumn:internalData.collectColumn,$table:$xeTable});}if($xeTable.handleUpdateCustomColumn){$xeTable.handleUpdateCustomColumn();}const columnOpts=$xeTable.computeColumnOpts;if(props.showCustomHeader&&reactData.isGroup&&(columnOpts.resizable||props.resizable)){warnLog('vxe.error.notConflictProp',['show-custom-header & colgroup','column-config.resizable=false']);}reactData.isColLoading=false;return handleLazyRecalculate($xeTable,false,true,true);});}function handleInitColumn($xeTable,collectColumn){const reactData=$xeTable;const internalData=$xeTable;internalData.collectColumn=collectColumn;const tFullColumn=(0,_util.getColumnList)(collectColumn);internalData.tableFullColumn=tFullColumn;reactData.updateColFlag++;reactData.isColLoading=true;initColumnHierarchy($xeTable);return Promise.resolve(restoreCustomStorage($xeTable)).then(()=>{return buildColumnInfo($xeTable);});}/**
|
|
235
235
|
* 纵向 Y 可视渲染处理
|
|
236
236
|
*/function loadScrollYData($xeTable){const reactData=$xeTable;const internalData=$xeTable;const{isAllOverflow,isScrollYBig}=reactData;const{mergeBodyList,mergeBodyRowMaps,scrollYStore}=internalData;const{preloadSize,startIndex,endIndex,offsetSize}=scrollYStore;const autoOffsetYSize=isAllOverflow?offsetSize:offsetSize+1;const{toVisibleIndex,visibleSize}=handleVirtualYVisible($xeTable);const offsetItem={startIndex:Math.max(0,isScrollYBig?toVisibleIndex-1:toVisibleIndex-1-offsetSize-preloadSize),endIndex:isScrollYBig?toVisibleIndex+visibleSize:toVisibleIndex+visibleSize+autoOffsetYSize+preloadSize};scrollYStore.visibleStartIndex=toVisibleIndex-1;scrollYStore.visibleEndIndex=toVisibleIndex+visibleSize+1;calculateMergerOffsetIndex(mergeBodyList,mergeBodyRowMaps,offsetItem,'row');const{startIndex:offsetStartIndex,endIndex:offsetEndIndex}=offsetItem;if(toVisibleIndex<=startIndex||toVisibleIndex>=endIndex-visibleSize-1){if(startIndex!==offsetStartIndex||endIndex!==offsetEndIndex){scrollYStore.startIndex=offsetStartIndex;scrollYStore.endIndex=offsetEndIndex;$xeTable.updateScrollYData();}}}const createGetRowCacheProp=prop=>{return function(row){const $xeTable=this;const internalData=$xeTable;const{fullAllDataRowIdData}=internalData;if(row){const rowid=(0,_util.getRowid)($xeTable,row);const rowRest=fullAllDataRowIdData[rowid];if(rowRest){return rowRest[prop];}}return-1;};};const createGetColumnCacheProp=prop=>{return function(column){const $xeTable=this;const internalData=$xeTable;const{fullColumnIdData}=internalData;if(column){const colRest=fullColumnIdData[column.id];if(colRest){return colRest[prop];}}return-1;};};function lazyScrollXData($xeTable){const internalData=$xeTable;const{lxTimeout,lxRunTime,scrollXStore}=internalData;const{visibleSize}=scrollXStore;const fpsTime=visibleSize>26?26:visibleSize>16?14:6;if(lxTimeout){clearTimeout(lxTimeout);}if(!lxRunTime||lxRunTime+fpsTime<Date.now()){internalData.lxRunTime=Date.now();loadScrollXData($xeTable);}internalData.lxTimeout=setTimeout(()=>{internalData.lxTimeout=undefined;internalData.lxRunTime=undefined;loadScrollXData($xeTable);},fpsTime);}function lazyScrollYData($xeTable){const internalData=$xeTable;const{lyTimeout,lyRunTime,scrollYStore}=internalData;const{visibleSize}=scrollYStore;const fpsTime=visibleSize>30?32:visibleSize>20?18:8;if(lyTimeout){clearTimeout(lyTimeout);}if(!lyRunTime||lyRunTime+fpsTime<Date.now()){internalData.lyRunTime=Date.now();loadScrollYData($xeTable);}internalData.lyTimeout=setTimeout(()=>{internalData.lyTimeout=undefined;internalData.lyRunTime=undefined;loadScrollYData($xeTable);},fpsTime);}function handleSyncScroll($xeTable,isRollX,isRollY){const reactData=$xeTable;const internalData=$xeTable;const{scrollXLoad,scrollYLoad,isAllOverflow}=reactData;internalData.lcsRunTime=Date.now();internalData.lcsTimeout=undefined;internalData.intoRunScroll=false;internalData.inVirtualScroll=false;internalData.inWheelScroll=false;internalData.inHeaderScroll=false;internalData.inBodyScroll=false;internalData.inFooterScroll=false;reactData.lazScrollLoading=false;internalData.scrollRenderType='';let xRest=null;let yRest=null;if(!isAllOverflow){calcCellHeight($xeTable);updateRowOffsetTop($xeTable);}if(isRollX&&scrollXLoad){xRest=$xeTable.updateScrollXData();}if(isRollY&&scrollYLoad){yRest=$xeTable.updateScrollYData().then(()=>{if(!isAllOverflow){calcCellHeight($xeTable);updateRowOffsetTop($xeTable);}return $xeTable.updateScrollYSpace();});}updateRowExpandStyle($xeTable);return Promise.all([xRest,yRest,scrollXLoad||scrollYLoad?$xeTable.updateCellAreas():null]);}function checkLastSyncScroll($xeTable,isRollX,isRollY){const reactData=$xeTable;const internalData=$xeTable;const{lcsTimeout}=internalData;reactData.lazScrollLoading=true;if(lcsTimeout){clearTimeout(lcsTimeout);}internalData.lcsTimeout=setTimeout(()=>{handleSyncScroll($xeTable,isRollX,isRollY).then(()=>{if(reactData.scrollXLoad||reactData.scrollYLoad){$xeTable.$nextTick(()=>{updateRowExpandStyle($xeTable);if(!internalData.lcsTimeout){handleSyncScroll($xeTable,isRollX,isRollY);}});}});},240);}const getWheelSpeed=lastScrollTime=>{let multiple=1;const currTime=Date.now();if(lastScrollTime+25>currTime){multiple=1.18;}else if(lastScrollTime+30>currTime){multiple=1.15;}else if(lastScrollTime+40>currTime){multiple=1.12;}else if(lastScrollTime+55>currTime){multiple=1.09;}else if(lastScrollTime+75>currTime){multiple=1.06;}else if(lastScrollTime+100>currTime){multiple=1.03;}return multiple;};const syncGanttScrollTop=($xeTable,scrollTop)=>{const internalData=$xeTable;const $xeGanttView=internalData.xeGanttView;if($xeGanttView){const ganttInternalData=$xeGanttView.internalData;const{elemStore:ganttElemStore}=ganttInternalData;const ganttBodyScrollElem=(0,_util.getRefElem)(ganttElemStore['main-body-scroll']);if(ganttBodyScrollElem){ganttBodyScrollElem.scrollTop=scrollTop;}}};function updateHeight($xeTable){const reactData=$xeTable;const internalData=$xeTable;internalData.customHeight=calcTableHeight($xeTable,'height');internalData.customMinHeight=calcTableHeight($xeTable,'minHeight');internalData.customMaxHeight=calcTableHeight($xeTable,'maxHeight');// 如果启用虚拟滚动,纠正高度
|
|
237
237
|
if(reactData.scrollYLoad&&!(internalData.customHeight||internalData.customMinHeight||internalData.customMaxHeight)){internalData.customHeight=300;}}/**
|
|
@@ -266,7 +266,7 @@ if(_xeUtils.default.isFunction(slotFunc)){return(0,_vn.getSlotVNs)(slotFunc.call
|
|
|
266
266
|
* 同步 data 数据(即将废弃)
|
|
267
267
|
* 如果用了该方法,那么组件将不再记录增删改的状态,只能自行实现对应逻辑
|
|
268
268
|
* 对于某些特殊的场景,比如深层树节点元素发生变动时可能会用到
|
|
269
|
-
*/syncData(){const $xeTable=this;const reactData=$xeTable;const internalData=$xeTable;
|
|
269
|
+
*/syncData(){const $xeTable=this;const reactData=$xeTable;const internalData=$xeTable;errLog('vxe.error.delFunc',['syncData','getData']);return $xeTable.$nextTick().then(()=>{reactData.tableData=[];return $xeTable.$nextTick().then(()=>loadTableData($xeTable,internalData.tableFullData,true,true));});},/**
|
|
270
270
|
* 手动处理数据,用于手动排序与筛选
|
|
271
271
|
* 对于手动更改了排序、筛选...等条件后需要重新处理数据时可能会用到
|
|
272
272
|
*/updateData(){const $xeTable=this;const reactData=$xeTable;const{scrollXLoad,scrollYLoad}=reactData;return $xeTable.handleTableData(true).then(()=>{$xeTable.updateFooter();if(scrollXLoad||scrollYLoad){if(scrollXLoad){$xeTable.updateScrollXSpace();}if(scrollYLoad){$xeTable.updateScrollYSpace();}return $xeTable.refreshScroll();}}).then(()=>{$xeTable.updateCellAreas();return handleLazyRecalculate($xeTable,true,true,true);}).then(()=>{// 存在滚动行为未结束情况
|
|
@@ -291,7 +291,7 @@ internalData.mergeHeaderRowMaps={};internalData.mergeHeaderColMaps={};internalDa
|
|
|
291
291
|
* @param {Row} row 行对象
|
|
292
292
|
* @param {Object} record 新数据
|
|
293
293
|
* @param {String} field 字段名
|
|
294
|
-
*/reloadRow(row,record,field){const $xeTable=this;const props=$xeTable;const reactData=$xeTable;const internalData=$xeTable;const{keepSource}=props;const{tableData}=reactData;const{sourceDataRowIdData}=internalData;if(keepSource){if($xeTable.isAggregateRecord(row)){return $xeTable.$nextTick();}const rowkey=(0,_util.getRowkey)($xeTable);const rowid=_xeUtils.default.get(row,rowkey);const oRow=sourceDataRowIdData[rowid];if(oRow&&row){if(field){const newValue=_xeUtils.default.clone(_xeUtils.default.get(record||row,field),true);_xeUtils.default.set(row,field,newValue);_xeUtils.default.set(oRow,field,newValue);}else{const newRecord=_xeUtils.default.clone(Object.assign({},record),true);_xeUtils.default.set(newRecord,rowkey,rowid);_xeUtils.default.destructuring(oRow,Object.assign(row,newRecord));}}reactData.tableData=tableData.slice(0);}else{
|
|
294
|
+
*/reloadRow(row,record,field){const $xeTable=this;const props=$xeTable;const reactData=$xeTable;const internalData=$xeTable;const{keepSource}=props;const{tableData}=reactData;const{sourceDataRowIdData}=internalData;if(keepSource){if($xeTable.isAggregateRecord(row)){return $xeTable.$nextTick();}const rowkey=(0,_util.getRowkey)($xeTable);const rowid=_xeUtils.default.get(row,rowkey);const oRow=sourceDataRowIdData[rowid];if(oRow&&row){if(field){const newValue=_xeUtils.default.clone(_xeUtils.default.get(record||row,field),true);_xeUtils.default.set(row,field,newValue);_xeUtils.default.set(oRow,field,newValue);}else{const newRecord=_xeUtils.default.clone(Object.assign({},record),true);_xeUtils.default.set(newRecord,rowkey,rowid);_xeUtils.default.destructuring(oRow,Object.assign(row,newRecord));}}reactData.tableData=tableData.slice(0);}else{errLog('vxe.error.reqProp',['keep-source']);}return $xeTable.$nextTick();},/**
|
|
295
295
|
* 加载列配置
|
|
296
296
|
* 对于表格列需要重载、局部递增场景下可能会用到
|
|
297
297
|
* @param {ColumnInfo} columns 列配置
|
|
@@ -303,7 +303,7 @@ if(virtualXOpts.scrollToLeftOnChange){targetScrollLeft=0;}if(virtualYOpts.scroll
|
|
|
303
303
|
*/reloadColumn(columns){return this.clearAll().then(()=>{return this.loadColumn(columns);});},handleInitColumn(collectColumn){const $xeTable=this;return handleInitColumn($xeTable,collectColumn);},/**
|
|
304
304
|
* 更新数据行的 Map
|
|
305
305
|
*/cacheRowMap(isReset){const $xeTable=this;const props=$xeTable;const reactData=$xeTable;const internalData=$xeTable;const{treeConfig}=props;const{isRowGroupStatus}=reactData;const{currKeyField,fullAllDataRowIdData,tableFullData,tableFullTreeData,tableFullGroupData,treeExpandedMaps,rowExpandedMaps,selectCheckboxMaps}=internalData;const fullAllDataRowIdMaps=isReset?{}:Object.assign({},fullAllDataRowIdData);// 存在已删除数据
|
|
306
|
-
const fullDataRowIdMaps={};const idMaps={};const{handleUpdateRowId}=(0,_util.createHandleUpdateRowId)($xeTable);let rowNum=0;const handleRowCache=(row,index,items,currIndex,parentRow,rowid,level,seq)=>{let rowRest=fullAllDataRowIdMaps[rowid];if(idMaps[rowid]){
|
|
306
|
+
const fullDataRowIdMaps={};const idMaps={};const{handleUpdateRowId}=(0,_util.createHandleUpdateRowId)($xeTable);let rowNum=0;const handleRowCache=(row,index,items,currIndex,parentRow,rowid,level,seq)=>{let rowRest=fullAllDataRowIdMaps[rowid];if(idMaps[rowid]){errLog('vxe.error.repeatKey',[currKeyField,rowid]);}if(!rowRest){rowRest={row,rowid,_seq:-1,seq,index:-1,_index:-1,$index:-1,treeIndex:index,_tIndex:-1,items,parent:parentRow,level,height:0,resizeHeight:0,oTop:0,expandHeight:0};}rowRest.treeLoaded=false;rowRest.expandLoaded=false;rowRest._seq=rowNum++;rowRest.row=row;rowRest.items=items;rowRest.parent=parentRow;rowRest.level=level;rowRest.index=currIndex;rowRest.treeIndex=index;// 更新缓存
|
|
307
307
|
if(selectCheckboxMaps[rowid]){selectCheckboxMaps[rowid]=row;}if(rowExpandedMaps[rowid]){rowExpandedMaps[rowid]=row;}idMaps[rowid]=true;fullDataRowIdMaps[rowid]=rowRest;fullAllDataRowIdMaps[rowid]=rowRest;};if(treeConfig){const treeOpts=$xeTable.computeTreeOpts;const{lazy}=treeOpts;const childrenField=treeOpts.children||treeOpts.childrenField;const hasChildField=treeOpts.hasChild||treeOpts.hasChildField;_xeUtils.default.eachTree(tableFullTreeData,(row,index,items,path,parentRow,nodes)=>{const rowid=handleUpdateRowId(row);if(lazy){if(row[hasChildField]&&row[childrenField]===undefined){row[childrenField]=null;}if(treeExpandedMaps[rowid]){if(!row[childrenField]||!row[childrenField].length){delete treeExpandedMaps[rowid];}}}handleRowCache(row,index,items,parentRow?-1:index,parentRow,rowid,nodes.length-1,(0,_util.toTreePathSeq)(path));},{children:childrenField});}else if(isRowGroupStatus){const aggregateOpts=$xeTable.computeAggregateOpts;const{mapChildrenField}=aggregateOpts;_xeUtils.default.eachTree(tableFullGroupData,(row,index,items,path,parentRow,nodes)=>{const rowid=handleUpdateRowId(row);handleRowCache(row,index,items,parentRow?-1:index,parentRow,rowid,nodes.length-1,(0,_util.toTreePathSeq)(path));},{children:mapChildrenField});}else{tableFullData.forEach((row,index,items)=>{handleRowCache(row,index,items,index,null,handleUpdateRowId(row),0,index+1);});}internalData.fullDataRowIdData=fullDataRowIdMaps;internalData.fullAllDataRowIdData=fullAllDataRowIdMaps;reactData.treeExpandedFlag++;},cacheSourceMap(fullData){const $xeTable=this;const props=$xeTable;const internalData=$xeTable;const{treeConfig}=props;const treeOpts=$xeTable.computeTreeOpts;const sourceData=_xeUtils.default.clone(fullData,true);const{handleUpdateRowId}=(0,_util.createHandleUpdateRowId)($xeTable);const sourceRowIdData={};const handleSourceRow=row=>{const rowid=handleUpdateRowId(row);sourceRowIdData[rowid]=row;};// 源数据缓存
|
|
308
308
|
if(treeConfig){const childrenField=treeOpts.children||treeOpts.childrenField;_xeUtils.default.eachTree(sourceData,handleSourceRow,{children:treeOpts.transform?treeOpts.mapChildrenField:childrenField});}else{sourceData.forEach(handleSourceRow);}internalData.sourceDataRowIdData=sourceRowIdData;internalData.tableSourceData=sourceData;},getParams(){const $xeTable=this;const props=$xeTable;return props.params;},loadTreeChildren(row,childRecords){const $xeTable=this;const props=$xeTable;const internalData=$xeTable;const{keepSource}=props;const{tableSourceData,fullDataRowIdData,fullAllDataRowIdData,sourceDataRowIdData}=internalData;const treeOpts=$xeTable.computeTreeOpts;const{transform,mapChildrenField}=treeOpts;const childrenField=treeOpts.children||treeOpts.childrenField;const parentRest=fullAllDataRowIdData[(0,_util.getRowid)($xeTable,row)];const parentLevel=parentRest?parentRest.level:0;return this.createData(childRecords).then(rows=>{if(keepSource){const rowid=(0,_util.getRowid)(this,row);const matchObj=_xeUtils.default.findTree(tableSourceData,item=>rowid===(0,_util.getRowid)(this,item),{children:childrenField});if(matchObj){matchObj.item[childrenField]=_xeUtils.default.clone(rows,true);}rows.forEach(childRow=>{const rowid=(0,_util.getRowid)(this,childRow);sourceDataRowIdData[rowid]=_xeUtils.default.clone(childRow,true);});}_xeUtils.default.eachTree(rows,(childRow,index,items,path,parentItem,nodes)=>{const rowid=(0,_util.getRowid)($xeTable,childRow);const parentRow=parentItem||parentRest.row;const rest={row:childRow,rowid,_seq:-1,seq:-1,index,_index:-1,$index:-1,treeIndex:-1,_tIndex:-1,items,parent:parentRow,level:parentLevel+nodes.length,height:0,resizeHeight:0,oTop:0,expandHeight:0};fullDataRowIdData[rowid]=rest;fullAllDataRowIdData[rowid]=rest;},{children:childrenField});row[childrenField]=rows;if(transform){row[mapChildrenField]=_xeUtils.default.clone(rows,false);}updateAfterDataIndex($xeTable);return rows;});},/**
|
|
309
309
|
* 根据 tr 元素获取对应的 row 信息
|
|
@@ -324,8 +324,8 @@ if(treeConfig){const childrenField=treeOpts.children||treeOpts.childrenField;_xe
|
|
|
324
324
|
* 根据 row 获取渲染中的虚拟索引
|
|
325
325
|
* @param {Row} row 行对象
|
|
326
326
|
*/getVMRowIndex:createGetRowCacheProp('$index'),// 在 v3 中废弃
|
|
327
|
-
_getRowIndex(row){
|
|
328
|
-
$getRowIndex(row){
|
|
327
|
+
_getRowIndex(row){warnLog('vxe.error.delFunc',['_getRowIndex','getVTRowIndex']);return this.getVTRowIndex(row);},// 在 v3 中废弃
|
|
328
|
+
$getRowIndex(row){warnLog('vxe.error.delFunc',['$getRowIndex','getVMRowIndex']);return this.getVMRowIndex(row);},/**
|
|
329
329
|
* 根据 column 获取相对于 columns 中的索引
|
|
330
330
|
* @param {ColumnInfo} column 列配置
|
|
331
331
|
*/getColumnIndex:createGetColumnCacheProp('index'),/**
|
|
@@ -335,8 +335,8 @@ $getRowIndex(row){(0,_log.warnLog)('vxe.error.delFunc',['$getRowIndex','getVMRow
|
|
|
335
335
|
* 根据 column 获取渲染中的虚拟索引
|
|
336
336
|
* @param {ColumnInfo} column 列配置
|
|
337
337
|
*/getVMColumnIndex:createGetColumnCacheProp('$index'),// 在 v3 中废弃
|
|
338
|
-
_getColumnIndex(column){
|
|
339
|
-
$getColumnIndex(column){
|
|
338
|
+
_getColumnIndex(column){warnLog('vxe.error.delFunc',['_getColumnIndex','getVTColumnIndex']);return this.getVTColumnIndex(column);},// 在 v3 中废弃
|
|
339
|
+
$getColumnIndex(column){warnLog('vxe.error.delFunc',['$getColumnIndex','getVMColumnIndex']);return this.getVMColumnIndex(column);},/**
|
|
340
340
|
* 判断是否为索引列
|
|
341
341
|
* @param {ColumnInfo} column 列配置
|
|
342
342
|
*/isSeqColumn(column){return column&&column.type==='seq';},/**
|
|
@@ -357,7 +357,7 @@ if((0,_utils.eqEmptyValue)(_xeUtils.default.get(record,rowkey))){_xeUtils.defaul
|
|
|
357
357
|
* 如果传 row 则还原一行
|
|
358
358
|
* 如果传 rows 则还原多行
|
|
359
359
|
* 如果还额外传了 field 则还原指定的单元格数据
|
|
360
|
-
*/revertData(rows,field){const $xeTable=this;const props=$xeTable;const reactData=$xeTable;const internalData=$xeTable;const{keepSource,treeConfig}=props;const{fullAllDataRowIdData,fullDataRowIdData,tableSourceData,sourceDataRowIdData,tableFullData,afterFullData,removeRowMaps}=internalData;const treeOpts=$xeTable.computeTreeOpts;const{transform}=treeOpts;const{handleGetRowId}=(0,_util.createHandleGetRowId)($xeTable);if(!keepSource){
|
|
360
|
+
*/revertData(rows,field){const $xeTable=this;const props=$xeTable;const reactData=$xeTable;const internalData=$xeTable;const{keepSource,treeConfig}=props;const{fullAllDataRowIdData,fullDataRowIdData,tableSourceData,sourceDataRowIdData,tableFullData,afterFullData,removeRowMaps}=internalData;const treeOpts=$xeTable.computeTreeOpts;const{transform}=treeOpts;const{handleGetRowId}=(0,_util.createHandleGetRowId)($xeTable);if(!keepSource){errLog('vxe.error.reqProp',['keep-source']);return $xeTable.$nextTick();}let targetRows=rows;if(rows){if(!_xeUtils.default.isArray(rows)){targetRows=[rows];}}else{targetRows=_xeUtils.default.toArray($xeTable.getUpdateRecords());}let reDelFlag=false;if(targetRows.length){targetRows.forEach(item=>{const rowid=handleGetRowId(item);const rowRest=fullAllDataRowIdData[rowid];if(rowRest){const row=rowRest.row;if(!$xeTable.isInsertByRow(row)){const oRow=sourceDataRowIdData[rowid];if(oRow&&row){if(field){_xeUtils.default.set(row,field,_xeUtils.default.clone(_xeUtils.default.get(oRow,field),true));}else{_xeUtils.default.destructuring(row,_xeUtils.default.clone(oRow,true));}if(!fullDataRowIdData[rowid]&&$xeTable.isRemoveByRow(row)){if(removeRowMaps[rowid]){delete removeRowMaps[rowid];}tableFullData.unshift(row);afterFullData.unshift(row);reDelFlag=true;}}}}});}if(rows){if(reDelFlag){reactData.removeRowFlag++;$xeTable.updateFooter();$xeTable.cacheRowMap(false);$xeTable.handleTableData(treeConfig&&transform);if(!(treeConfig&&transform)){$xeTable.updateAfterDataIndex();}$xeTable.checkSelectionStatus();if(reactData.scrollYLoad){$xeTable.updateScrollYSpace();}}return $xeTable.$nextTick().then(()=>{$xeTable.updateCellAreas();return handleLazyRecalculate($xeTable,false,true,true);});}return $xeTable.reloadData(tableSourceData);},/**
|
|
361
361
|
* 清空单元格内容
|
|
362
362
|
* 如果不创参数,则清空整个表格内容
|
|
363
363
|
* 如果传 row 则清空一行内容
|
|
@@ -413,7 +413,7 @@ if(!rowRest){return false;}const row=rowRest.row;const oRow=sourceDataRowIdData[
|
|
|
413
413
|
* 只对 tree-config 有效,用于树形结构,获取指定行的层级
|
|
414
414
|
*/getTreeRowLevel(rowOrRowid){const $xeTable=this;const props=$xeTable;const internalData=$xeTable;const{treeConfig}=props;const{fullAllDataRowIdData}=internalData;if(rowOrRowid&&treeConfig){let rowid;if(_xeUtils.default.isString(rowOrRowid)){rowid=rowOrRowid;}else{rowid=(0,_util.getRowid)($xeTable,rowOrRowid);}if(rowid){const rest=fullAllDataRowIdData[rowid];if(rest){return rest.level;}}}return-1;},/**
|
|
415
415
|
* 只对 tree-config 有效,获取行的父级
|
|
416
|
-
*/getTreeParentRow(rowOrRowid){const $xeTable=this;const props=$xeTable;const internalData=$xeTable;const{treeConfig}=props;const{fullAllDataRowIdData}=internalData;if(rowOrRowid&&treeConfig){let rowid;if(_xeUtils.default.isString(rowOrRowid)){rowid=rowOrRowid;}else{rowid=(0,_util.getRowid)($xeTable,rowOrRowid);}if(rowid){const rest=fullAllDataRowIdData[rowid];if(rest){return rest.parent;}}}return null;},getParentRow(rowOrRowid){const $xeTable=this;
|
|
416
|
+
*/getTreeParentRow(rowOrRowid){const $xeTable=this;const props=$xeTable;const internalData=$xeTable;const{treeConfig}=props;const{fullAllDataRowIdData}=internalData;if(rowOrRowid&&treeConfig){let rowid;if(_xeUtils.default.isString(rowOrRowid)){rowid=rowOrRowid;}else{rowid=(0,_util.getRowid)($xeTable,rowOrRowid);}if(rowid){const rest=fullAllDataRowIdData[rowid];if(rest){return rest.parent;}}}return null;},getParentRow(rowOrRowid){const $xeTable=this;warnLog('vxe.error.delFunc',['getParentRow','getTreeParentRow']);return $xeTable.getTreeParentRow(rowOrRowid);},/**
|
|
417
417
|
* 根据行的唯一主键获取行
|
|
418
418
|
* @param {String/Number} rowid 行主键
|
|
419
419
|
*/getRowById(cellValue){const $xeTable=this;const internalData=$xeTable;const{fullAllDataRowIdData}=internalData;const rowid=_xeUtils.default.eqNull(cellValue)?'':encodeURIComponent(cellValue);return fullAllDataRowIdData[rowid]?fullAllDataRowIdData[rowid].row:null;},/**
|
|
@@ -444,11 +444,11 @@ if(!targetColumn.fixed&&isMaxFixedColumn){if(_ui.VxeUI.modal){_ui.VxeUI.modal.me
|
|
|
444
444
|
* 手动重置列的显示隐藏、列宽拖动的状态;
|
|
445
445
|
* 如果为 true 则重置所有状态
|
|
446
446
|
* 如果已关联工具栏,则会同步更新
|
|
447
|
-
*/resetColumn(options){
|
|
447
|
+
*/resetColumn(options){warnLog('vxe.error.delFunc',['resetColumn','resetCustom']);return this.resetCustom(options);},/**
|
|
448
448
|
* @private
|
|
449
449
|
*/handleCustom(){const $xeTable=this;const props=$xeTable;const{mouseConfig}=props;if(mouseConfig){if($xeTable.clearSelected){$xeTable.clearSelected();}if($xeTable.clearCellAreas){$xeTable.clearCellAreas();$xeTable.clearCopyCellArea();}}$xeTable.analyColumnWidth();return $xeTable.refreshColumn(true);},/**
|
|
450
450
|
* 还原自定义列操作状态
|
|
451
|
-
*/restoreCustomStorage(){const $xeTable=this;const props=$xeTable;const{customConfig}=props;const tableId=$xeTable.computeTableId;const customOpts=$xeTable.computeCustomOpts;const{storage,restoreStore,storeOptions}=customOpts;const isAllCustom=storage===true;const storageOpts=Object.assign({},isAllCustom?{}:storage||{},storeOptions);const isCustomResizable=hangleStorageDefaultValue(storageOpts.resizable,isAllCustom);const isCustomVisible=hangleStorageDefaultValue(storageOpts.visible,isAllCustom);const isCustomFixed=hangleStorageDefaultValue(storageOpts.fixed,isAllCustom);const isCustomAggGroup=hangleStorageDefaultValue(storageOpts.aggGroup,isAllCustom);const isCustomSort=hangleStorageDefaultValue(storageOpts.sort,isAllCustom);if(storage&&(customConfig?(0,_utils.isEnableConf)(customOpts):customOpts.enabled)&&(isCustomResizable||isCustomVisible||isCustomFixed||isCustomAggGroup||isCustomSort)){if(!tableId){
|
|
451
|
+
*/restoreCustomStorage(){const $xeTable=this;const props=$xeTable;const{customConfig}=props;const tableId=$xeTable.computeTableId;const customOpts=$xeTable.computeCustomOpts;const{storage,restoreStore,storeOptions}=customOpts;const isAllCustom=storage===true;const storageOpts=Object.assign({},isAllCustom?{}:storage||{},storeOptions);const isCustomResizable=hangleStorageDefaultValue(storageOpts.resizable,isAllCustom);const isCustomVisible=hangleStorageDefaultValue(storageOpts.visible,isAllCustom);const isCustomFixed=hangleStorageDefaultValue(storageOpts.fixed,isAllCustom);const isCustomAggGroup=hangleStorageDefaultValue(storageOpts.aggGroup,isAllCustom);const isCustomSort=hangleStorageDefaultValue(storageOpts.sort,isAllCustom);if(storage&&(customConfig?(0,_utils.isEnableConf)(customOpts):customOpts.enabled)&&(isCustomResizable||isCustomVisible||isCustomFixed||isCustomAggGroup||isCustomSort)){if(!tableId){errLog('vxe.error.reqProp',['id']);return;}const storeData=getCustomStorageMap(tableId);if(restoreStore){return Promise.resolve(restoreStore({$table:$xeTable,id:tableId,type:'restore',storeData})).then(storeData=>{if(!storeData){return;}return handleCustomRestore($xeTable,storeData);}).catch(e=>e);}else{return handleCustomRestore($xeTable,storeData);}}},/**
|
|
452
452
|
* 用于 custom-config,用于手动恢复自定义列设置信息,恢复表格重置为初始状态
|
|
453
453
|
* @param storeData
|
|
454
454
|
* @returns
|
|
@@ -458,10 +458,10 @@ const allCols=[];_xeUtils.default.eachTree(internalData.collectColumn,column=>{c
|
|
|
458
458
|
const{isRowGroupStatus,rowGroupList}=reactData;if(isRowGroupStatus&&!!$xeTable.handlePivotTableAggData){const rowGroupFields=$xeTable.computeRowGroupFields;if(rowGroupFields?rowGroupFields.length:rowGroupList.length){if(rowGroupFields&&rowGroupFields.length){$xeTable.setRowGroups(rowGroupFields);}else{$xeTable.clearRowGroups();}}else{$xeTable.handleUpdateAggData();}}});},/**
|
|
459
459
|
* 用于 custom-config,用于获取自定义列设置信息,用于自定义保持
|
|
460
460
|
* @returns
|
|
461
|
-
*/getCustomStoreData(){const $xeTable=this;const props=$xeTable;const reactData=$xeTable;const internalData=$xeTable;const{id}=props;const customOpts=$xeTable.computeCustomOpts;const{isRowGroupStatus,rowGroupList}=reactData;const{fullColumnFieldData,collectColumn}=internalData;const{storage,checkMethod,storeOptions}=customOpts;const isAllCustom=storage===true;const storageOpts=Object.assign({},isAllCustom?{}:storage||{},storeOptions);const isCustomResizable=hangleStorageDefaultValue(storageOpts.resizable,isAllCustom);const isCustomVisible=hangleStorageDefaultValue(storageOpts.visible,isAllCustom);const isCustomFixed=hangleStorageDefaultValue(storageOpts.fixed,isAllCustom);const isCustomSort=hangleStorageDefaultValue(storageOpts.sort,isAllCustom);const isCustomAggGroup=hangleStorageDefaultValue(storageOpts.aggGroup,isAllCustom);const isCustomAggFunc=hangleStorageDefaultValue(storageOpts.aggFunc,isAllCustom);const resizableData={};const sortData=[];const visibleData={};const fixedData={};const aggGroupData={};const aggFuncData={};const storeData={resizableData:undefined,sortData:undefined,visibleData:undefined,fixedData:undefined,aggGroupData:undefined,aggFuncData:undefined};if(!id){if(storage){
|
|
461
|
+
*/getCustomStoreData(){const $xeTable=this;const props=$xeTable;const reactData=$xeTable;const internalData=$xeTable;const{id}=props;const customOpts=$xeTable.computeCustomOpts;const{isRowGroupStatus,rowGroupList}=reactData;const{fullColumnFieldData,collectColumn}=internalData;const{storage,checkMethod,storeOptions}=customOpts;const isAllCustom=storage===true;const storageOpts=Object.assign({},isAllCustom?{}:storage||{},storeOptions);const isCustomResizable=hangleStorageDefaultValue(storageOpts.resizable,isAllCustom);const isCustomVisible=hangleStorageDefaultValue(storageOpts.visible,isAllCustom);const isCustomFixed=hangleStorageDefaultValue(storageOpts.fixed,isAllCustom);const isCustomSort=hangleStorageDefaultValue(storageOpts.sort,isAllCustom);const isCustomAggGroup=hangleStorageDefaultValue(storageOpts.aggGroup,isAllCustom);const isCustomAggFunc=hangleStorageDefaultValue(storageOpts.aggFunc,isAllCustom);const resizableData={};const sortData=[];const visibleData={};const fixedData={};const aggGroupData={};const aggFuncData={};const storeData={resizableData:undefined,sortData:undefined,visibleData:undefined,fixedData:undefined,aggGroupData:undefined,aggFuncData:undefined};if(!id){if(storage){errLog('vxe.error.reqProp',['id']);}return storeData;}let hasResizable=0;let hasSort=0;let hasFixed=0;let hasVisible=0;let hasAggFunc=0;const sortMaps={};_xeUtils.default.eachTree(collectColumn,(column,index,items,path,parentColumn)=>{const colKey=column.getKey();if(!colKey){errLog('vxe.error.reqProp',[`${column.getTitle()||column.type||''} -> column.field=?`]);return;}if(parentColumn){if(isCustomSort){const pColKey=parentColumn.getKey();const psObj=sortMaps[pColKey];hasSort=1;if(psObj){const sObj={k:colKey};sortMaps[colKey]=sObj;if(!psObj.c){psObj.c=[];}psObj.c.push(sObj);}}}else{if(isCustomSort){hasSort=1;const sObj={k:colKey};sortMaps[colKey]=sObj;sortData.push(sObj);}// 只支持一级
|
|
462
462
|
if(isCustomFixed&&(column.fixed||'')!==(column.defaultFixed||'')){hasFixed=1;fixedData[colKey]=column.fixed;}}if(isCustomResizable&&column.resizeWidth){hasResizable=1;resizableData[colKey]=column.renderWidth;}if(isCustomVisible&&(!checkMethod||checkMethod({$table:$xeTable,column}))){if(!column.visible&&column.defaultVisible){hasVisible=1;visibleData[colKey]=false;}else if(column.visible&&!column.defaultVisible){hasVisible=1;visibleData[colKey]=true;}}if(isCustomAggFunc&&(column.aggFunc||'')!==(column.defaultAggFunc||'')){hasAggFunc=1;aggFuncData[colKey]=column.aggFunc;}});if(hasResizable){storeData.resizableData=resizableData;}if(hasSort){storeData.sortData=sortData;}if(hasFixed){storeData.fixedData=fixedData;}if(hasVisible){storeData.visibleData=visibleData;}if(isCustomAggGroup&&isRowGroupStatus){rowGroupList.forEach(aggConf=>{const colRest=fullColumnFieldData[aggConf.field];if(colRest){aggGroupData[colRest.column.getKey()]=true;}});storeData.aggGroupData=aggGroupData;}if(hasAggFunc){storeData.aggFuncData=aggFuncData;}return storeData;},/**
|
|
463
463
|
* @private
|
|
464
|
-
*/saveCustomStore(type){const $xeTable=this;const props=$xeTable;const reactData=$xeTable;const{customConfig}=props;const tableId=$xeTable.computeTableId;const customOpts=$xeTable.computeCustomOpts;const{updateStore,storage,storeOptions}=customOpts;const isAllCustom=storage===true;const storageOpts=Object.assign({},isAllCustom?{}:storage||{},storeOptions);const isCustomResizable=hangleStorageDefaultValue(storageOpts.resizable,isAllCustom);const isCustomVisible=hangleStorageDefaultValue(storageOpts.visible,isAllCustom);const isCustomFixed=hangleStorageDefaultValue(storageOpts.fixed,isAllCustom);const isCustomSort=hangleStorageDefaultValue(storageOpts.sort,isAllCustom);const isCustomAggGroup=hangleStorageDefaultValue(storageOpts.aggGroup,isAllCustom);const isCustomAggFunc=hangleStorageDefaultValue(storageOpts.aggFunc,isAllCustom);if(type!=='reset'){reactData.isCustomStatus=true;}if(storage&&(customConfig?(0,_utils.isEnableConf)(customOpts):customOpts.enabled)&&(isCustomResizable||isCustomVisible||isCustomFixed||isCustomSort||isCustomAggGroup||isCustomAggFunc)){if(!tableId){
|
|
464
|
+
*/saveCustomStore(type){const $xeTable=this;const props=$xeTable;const reactData=$xeTable;const{customConfig}=props;const tableId=$xeTable.computeTableId;const customOpts=$xeTable.computeCustomOpts;const{updateStore,storage,storeOptions}=customOpts;const isAllCustom=storage===true;const storageOpts=Object.assign({},isAllCustom?{}:storage||{},storeOptions);const isCustomResizable=hangleStorageDefaultValue(storageOpts.resizable,isAllCustom);const isCustomVisible=hangleStorageDefaultValue(storageOpts.visible,isAllCustom);const isCustomFixed=hangleStorageDefaultValue(storageOpts.fixed,isAllCustom);const isCustomSort=hangleStorageDefaultValue(storageOpts.sort,isAllCustom);const isCustomAggGroup=hangleStorageDefaultValue(storageOpts.aggGroup,isAllCustom);const isCustomAggFunc=hangleStorageDefaultValue(storageOpts.aggFunc,isAllCustom);if(type!=='reset'){reactData.isCustomStatus=true;}if(storage&&(customConfig?(0,_utils.isEnableConf)(customOpts):customOpts.enabled)&&(isCustomResizable||isCustomVisible||isCustomFixed||isCustomSort||isCustomAggGroup||isCustomAggFunc)){if(!tableId){errLog('vxe.error.reqProp',['id']);return this.$nextTick();}const storeData=type==='reset'?{resizableData:{},sortData:{},visibleData:{},fixedData:{},aggGroupData:{},aggFuncData:{}}:this.getCustomStoreData();if(updateStore){return updateStore({$table:$xeTable,id:tableId,type,storeData});}else{setCustomStorageMap(tableId,type==='reset'?null:storeData);}}return this.$nextTick();},handleUpdateDataQueue(){this.upDataFlag++;},handleRefreshColumnQueue(){this.reColumnFlag++;},handleFilterOptions(column){const $xeTable=this;const reactData=$xeTable;if(column){const{filterStore}=reactData;const{filterRender,filters}=column;const filterOptions=filters||[];const compConf=(0,_utils.isEnableConf)(filterRender)?renderer.get(filterRender.name):null;const frMethod=column.filterRecoverMethod||(compConf?compConf.tableFilterRecoverMethod||compConf.filterRecoverMethod:null);filterStore.column=column;// 复原状态
|
|
465
465
|
filterOptions.forEach(option=>{const{_checked,checked}=option;option._checked=checked;if(!checked&&_checked!==checked){if(frMethod){frMethod({option,column,$table:$xeTable});}}});$xeTable.checkFilterOptions();}},/**
|
|
466
466
|
* 刷新列配置
|
|
467
467
|
*/refreshColumn(initSort){const $xeTable=this;if(initSort){handleUpdateColumn($xeTable);}return parseColumns($xeTable,true).then(()=>{return this.refreshScroll();}).then(()=>{return handleLazyRecalculate($xeTable,false,true,true);});},/**
|
|
@@ -487,7 +487,7 @@ setTimeout(()=>{internalData.intoRunScroll=false;resolve();},10);});},handleResi
|
|
|
487
487
|
*/recalculate(reFull){const $xeTable=this;const isForce=!!reFull;return handleLazyRecalculate($xeTable,isForce,isForce,isForce);},updateStyle(){const $xeTable=this;return updateStyle($xeTable);},/**
|
|
488
488
|
* 处理固定列的显示状态
|
|
489
489
|
*/checkScrolling(){const $xeTable=this;const internalData=$xeTable;const{elemStore}=internalData;const bodyScrollElem=(0,_util.getRefElem)(elemStore['main-body-scroll']);const leftContainerElem=$xeTable.$refs.refLeftContainer;const rightContainerElem=$xeTable.$refs.refRightContainer;const xHandleEl=$xeTable.$refs.refScrollXHandleElem;const bodtTargetEl=xHandleEl||bodyScrollElem;if(bodtTargetEl){if(leftContainerElem){if(bodtTargetEl.scrollLeft>0){(0,_dom.addClass)(leftContainerElem,'scrolling--middle');}else{(0,_dom.removeClass)(leftContainerElem,'scrolling--middle');}}if(rightContainerElem){if(bodtTargetEl.clientWidth<bodtTargetEl.scrollWidth-Math.ceil(bodtTargetEl.scrollLeft)){(0,_dom.addClass)(rightContainerElem,'scrolling--middle');}else{(0,_dom.removeClass)(rightContainerElem,'scrolling--middle');}}}},preventEvent(evnt,type,args,next,end){const $xeTable=this;const $xeGrid=$xeTable.$xeGrid;const $xeGantt=$xeTable.$xeGantt;let evntList=interceptor.get(type);// 兼容老版本
|
|
490
|
-
if(!evntList.length&&type==='event.clearEdit'){evntList=interceptor.get('event.clearActived');if(evntList.length){
|
|
490
|
+
if(!evntList.length&&type==='event.clearEdit'){evntList=interceptor.get('event.clearActived');if(evntList.length){warnLog('vxe.error.delEvent',['event.clearActived','event.clearEdit']);}}// 兼容老版本
|
|
491
491
|
let rest=null;let isStop=false;for(let i=0;i<evntList.length;i++){const func=evntList[i];const fnRest=func(Object.assign({$table:$xeTable,$grid:$xeGrid,$gantt:$xeGantt,$event:evnt},args));if(fnRest===false){isStop=true;break;}else if(fnRest&&fnRest.status===false){rest=fnRest.result;isStop=true;break;}}if(!isStop){if(next){rest=next();}}if(end){end();}return rest;},/**
|
|
492
492
|
* 全局按下事件处理
|
|
493
493
|
*/handleGlobalMousedownEvent(evnt){const $xeTable=this;const props=$xeTable;const $xeGrid=$xeTable.$xeGrid;const $xeGantt=$xeTable.$xeGantt;const $xeGGWrapper=$xeGrid||$xeGantt;const reactData=$xeTable;const internalData=$xeTable;const{editStore,ctxMenuStore,customStore}=reactData;const{mouseConfig,editRules}=props;const el=$xeTable.$refs.refElem;const editOpts=$xeTable.computeEditOpts;const validOpts=$xeTable.computeValidOpts;const areaOpts=$xeTable.computeAreaOpts;const{actived}=editStore;const tableFilter=$xeTable.$refs.refTableFilter;const tableMenu=$xeTable.$refs.refTableMenu;const tableCustom=$xeTable.$refs.refTableCustom;const validTooltip=$xeTable.$refs.refValidTooltip;// 筛选
|
|
@@ -572,7 +572,7 @@ if(actived.row===row&&actived.column===column){return;}}if(tooltipStore.column!=
|
|
|
572
572
|
* 判断列头复选框是否被选中
|
|
573
573
|
*/isAllCheckboxChecked(){const $xeTable=this;const reactData=$xeTable;return reactData.isAllSelected;},/**
|
|
574
574
|
* 判断列头复选框是否被半选
|
|
575
|
-
*/isAllCheckboxIndeterminate(){const $xeTable=this;const reactData=$xeTable;return!reactData.isAllSelected&&reactData.isIndeterminate;},isCheckboxIndeterminate(){const $xeTable=this;
|
|
575
|
+
*/isAllCheckboxIndeterminate(){const $xeTable=this;const reactData=$xeTable;return!reactData.isAllSelected&&reactData.isIndeterminate;},isCheckboxIndeterminate(){const $xeTable=this;warnLog('vxe.error.delFunc',['isCheckboxIndeterminate','isAllCheckboxIndeterminate']);return $xeTable.isAllCheckboxIndeterminate();},/**
|
|
576
576
|
* 获取复选框半选状态的行数据
|
|
577
577
|
*/getCheckboxIndeterminateRecords(isFull){const $xeTable=this;const props=$xeTable;const internalData=$xeTable;const{treeConfig}=props;const{fullDataRowIdData,treeIndeterminateRowMaps}=internalData;if(treeConfig){const fullRest=[];const defRest=[];_xeUtils.default.each(treeIndeterminateRowMaps,(item,rowid)=>{if(item){fullRest.push(item);if(fullDataRowIdData[rowid]){defRest.push(item);}}});if(isFull){return fullRest;}return defRest;}return[];},handleCheckedCheckboxRow(rows,value,isForce){const $xeTable=this;return handleCheckedCheckboxRow($xeTable,rows,value,isForce);},/**
|
|
578
578
|
* 用于多选行,设置行为选中状态,第二个参数为选中与否
|
|
@@ -672,7 +672,7 @@ if((columnOpts.isCurrent||highlightCurrentColumn)&&(!currentColumnOpts.trigger||
|
|
|
672
672
|
if(!triggerRadio&&(radioColumn&&radioOpts.trigger==='row'||isRadioType&&radioOpts.trigger==='cell')){$xeTable.triggerRadioRowEvent(evnt,params);}// 如果是复选框
|
|
673
673
|
if(!triggerCheckbox&&(checkboxColumn&&checkboxOpts.trigger==='row'||isCheckboxType&&checkboxOpts.trigger==='cell')){$xeTable.handleToggleCheckRowEvent(evnt,params);}}// 如果设置了单元格选中功能,则不会使用点击事件去处理(只能支持双击模式)
|
|
674
674
|
if((0,_utils.isEnableConf)(editConfig)){// 记录点击输入框聚焦状态
|
|
675
|
-
if(keyboardOpts.arrowCursorLock&&evnt&&editOpts.mode==='cell'&&evnt.target&&/^input|textarea$/i.test(evnt.target.tagName)){focused.column=column;focused.row=row;}if(editOpts.trigger==='manual'){if(actived.args&&actived.row===row&&column!==actived.column){handleChangeCell($xeTable,evnt,params);}}else if(!actived.args||row!==actived.row||column!==actived.column){if(editOpts.trigger==='click'){handleChangeCell($xeTable,evnt,params);}else if(editOpts.trigger==='dblclick'){if(editOpts.mode==='row'&&actived.row===row){handleChangeCell($xeTable,evnt,params);}}}}}// 如果是双击编辑模式
|
|
675
|
+
if(keyboardOpts.arrowCursorLock&&evnt&&editOpts.mode==='cell'&&evnt.target&&/^input|textarea$/i.test(evnt.target.tagName)){focused.column=column;focused.row=row;}if(editOpts.trigger==='manual'){if(actived.args&&actived.row===row&&column!==actived.column){if(editOpts.mode==='row'){handleChangeCell($xeTable,evnt,params);}else{checkValidate($xeTable,'blur').catch(e=>e);}}}else if(!actived.args||row!==actived.row||column!==actived.column){if(editOpts.trigger==='click'){handleChangeCell($xeTable,evnt,params);}else if(editOpts.trigger==='dblclick'){if(editOpts.mode==='row'&&actived.row===row){handleChangeCell($xeTable,evnt,params);}}}}}// 如果是双击编辑模式
|
|
676
676
|
if((0,_utils.isEnableConf)(editConfig)&&editOpts.trigger==='dblclick'){if(actived.row&&actived.column){if(editOpts.mode==='row'){if(!$xeTable.eqRow(actived.row,row)){$xeTable.handleClearEdit(evnt);}}else if(editOpts.mode==='cell'){if(!$xeTable.eqRow(actived.row,row)||actived.column.id!==column.id){$xeTable.handleClearEdit(evnt);}}}}if($xeGantt){const ganttReactData=$xeGantt.reactData;ganttReactData.activeBarRowid=null;}$xeTable.dispatchEvent('cell-click',params,evnt);},/**
|
|
677
677
|
* 列双击点击事件
|
|
678
678
|
* 如果是双击模式,则激活为编辑状态
|
|
@@ -733,20 +733,21 @@ if(!remote||firstSortColumn&&firstSortColumn.remoteSort){$xeTable.handleTableDat
|
|
|
733
733
|
* 如果为空则清空所有列的排序条件
|
|
734
734
|
* @param {String} column 列或字段名
|
|
735
735
|
*/clearSort(fieldOrColumn){const $xeTable=this;const sortOpts=$xeTable.computeSortOpts;if(fieldOrColumn){const column=(0,_util.handleFieldOrColumn)($xeTable,fieldOrColumn);if(column){column.order=null;}}else{clearAllSort($xeTable);}if(!sortOpts.remote){$xeTable.handleTableData(true);}return $xeTable.$nextTick().then(()=>{updateRowOffsetTop($xeTable);return updateStyle($xeTable);});},clearSortByEvent(evnt,fieldOrColumn){const $xeTable=this;const internalData=$xeTable;const{tableFullColumn}=internalData;const sortOpts=$xeTable.computeSortOpts;const{multiple}=sortOpts;const sortCols=[];let column=null;if(evnt){if(fieldOrColumn){column=(0,_util.handleFieldOrColumn)($xeTable,fieldOrColumn);if(column){column.order=null;}}else{tableFullColumn.forEach(column=>{if(column.order){column.order=null;sortCols.push(column);}});}if(!sortOpts.remote){$xeTable.handleTableData(true);}if(!multiple){column=sortCols[0];}if(column){$xeTable.handleColumnSortEvent(evnt,column);}if(multiple&&sortCols.length){const params={$table:$xeTable,$event:evnt,cols:sortCols,sortList:[]};$xeTable.dispatchEvent('clear-all-sort',params,evnt);}}return $xeTable.$nextTick().then(()=>{updateRowOffsetTop($xeTable);return updateStyle($xeTable);});},// 在 v3 中废弃
|
|
736
|
-
getSortColumn(){
|
|
736
|
+
getSortColumn(){warnLog('vxe.error.delFunc',['getSortColumn','getSortColumns']);return _xeUtils.default.find(this.tableFullColumn,column=>(column.sortable||column.remoteSort)&&column.order);},isSort(fieldOrColumn){if(fieldOrColumn){const column=(0,_util.handleFieldOrColumn)(this,fieldOrColumn);return column&&column.sortable&&!!column.order;}return this.getSortColumns().length>0;},getSortColumns(){const{multiple,chronological}=this.sortOpts;const sortList=[];this.tableFullColumn.forEach(column=>{const{field,order}=column;if((column.sortable||column.remoteSort)&&order){sortList.push({column,field,property:field,order,sortTime:column.sortTime});}});if(multiple&&chronological&&sortList.length>1){return _xeUtils.default.orderBy(sortList,'sortTime');}return sortList;},setFilterByEvent(evnt,fieldOrColumn,options){const $xeTable=this;const column=(0,_util.handleFieldOrColumn)($xeTable,fieldOrColumn);if(column&&column.filters){column.filters=(0,_util.toFilters)(options||[],column.id);return $xeTable.handleColumnConfirmFilter(column,evnt);}return $xeTable.$nextTick();},/**
|
|
737
737
|
* 关闭筛选
|
|
738
738
|
* @param {Event} evnt 事件
|
|
739
739
|
*/closeFilter(){const $xeTable=this;const reactData=$xeTable;const{filterStore}=reactData;const{column,visible}=filterStore;filterStore.isAllSelected=false;filterStore.isIndeterminate=false;filterStore.visible=false;if(visible){const field=column?column.field:null;$xeTable.dispatchEvent('filter-visible',{column,property:field,field,filterList:()=>$xeTable.getCheckedFilters(),visible:false},null);}return $xeTable.$nextTick();},/**
|
|
740
740
|
* 判断指定列是否为筛选状态,如果为空则判断所有列
|
|
741
741
|
* @param {String} fieldOrColumn 字段名
|
|
742
742
|
*/isActiveFilterByColumn(fieldOrColumn){const column=(0,_util.handleFieldOrColumn)(this,fieldOrColumn);if(column){return column.filters&&column.filters.some(option=>option.checked);}return this.getCheckedFilters().length>0;},// 已废弃
|
|
743
|
-
isFilter(fieldOrColumn){return this.isActiveFilterByColumn(fieldOrColumn);},clearFilterByEvent(evnt,fieldOrColumn){const $xeTable=this;const reactData=$xeTable;const internalData=$xeTable;const{filterStore}=reactData;const{tableFullColumn}=internalData;const filterOpts=$xeTable.computeFilterOpts;const{multiple}=filterOpts;const filterCols=[];let column=null;if(fieldOrColumn){column=(0,_util.handleFieldOrColumn)($xeTable,fieldOrColumn);if(column){$xeTable.handleClearFilter(column);}}else{tableFullColumn.forEach(column=>{if(column.filters){filterCols.push(column);$xeTable.handleClearFilter(column);}});}if(!fieldOrColumn||column!==filterStore.column){Object.assign(filterStore,{isAllSelected:false,isIndeterminate:false,style:null,options:[],column:null,multiple:false
|
|
743
|
+
isFilter(fieldOrColumn){return this.isActiveFilterByColumn(fieldOrColumn);},clearFilterByEvent(evnt,fieldOrColumn){const $xeTable=this;const reactData=$xeTable;const internalData=$xeTable;const{filterStore}=reactData;const{tableFullColumn}=internalData;const filterOpts=$xeTable.computeFilterOpts;const{multiple}=filterOpts;const filterCols=[];let column=null;if(fieldOrColumn){column=(0,_util.handleFieldOrColumn)($xeTable,fieldOrColumn);if(column){$xeTable.handleClearFilter(column);}}else{tableFullColumn.forEach(column=>{if(column.filters){filterCols.push(column);$xeTable.handleClearFilter(column);}});}if(!fieldOrColumn||column!==filterStore.column){Object.assign(filterStore,{isAllSelected:false,isIndeterminate:false,style:null,options:[],column:null,multiple:false,// 选项是覅多选
|
|
744
|
+
visible:false});}if(!filterOpts.remote){$xeTable.updateData();}if(!multiple){column=filterCols[0];}if(column){const filterList=()=>$xeTable.getCheckedFilters();const values=[];const datas=[];column.filters.forEach(item=>{if(item.checked){values.push(item.value);datas.push(item.data);}});const params={$table:$xeTable,$event:evnt,column,field:column.field,property:column.field,values,datas,filters:filterList,filterList};$xeTable.dispatchEvent('filter-change',params,evnt);$xeTable.dispatchEvent('clear-filter',params,evnt);}if(multiple&&filterCols.length){const params={$table:$xeTable,$event:evnt,cols:filterCols,filterList:[]};$xeTable.dispatchEvent('clear-all-filter',params,evnt);}return $xeTable.$nextTick();},/**
|
|
744
745
|
* 判断展开行是否懒加载完成
|
|
745
746
|
* @param {Row} row 行对象
|
|
746
747
|
*/isRowExpandLoaded(row){const $xeTable=this;const{fullAllDataRowIdData}=this;const rowRest=fullAllDataRowIdData[(0,_util.getRowid)($xeTable,row)];return rowRest&&!!rowRest.expandLoaded;},clearRowExpandLoaded(row){const $xeTable=this;const reactData=$xeTable;const internalData=$xeTable;const{fullAllDataRowIdData,rowExpandLazyLoadedMaps}=internalData;const expandOpts=$xeTable.computeExpandOpts;const{lazy}=expandOpts;const rowid=(0,_util.getRowid)($xeTable,row);const rowRest=fullAllDataRowIdData[rowid];if(lazy&&rowRest){rowRest.expandLoaded=false;delete rowExpandLazyLoadedMaps[rowid];}reactData.rowExpandedFlag++;return $xeTable.$nextTick();},/**
|
|
747
748
|
* 重新懒加载展开行,并展开内容
|
|
748
749
|
* @param {Row} row 行对象
|
|
749
|
-
*/reloadRowExpand(row){const $xeTable=this;const internalData=$xeTable;const{rowExpandLazyLoadedMaps}=internalData;const expandOpts=$xeTable.computeExpandOpts;const{lazy}=expandOpts;const rowid=(0,_util.getRowid)(this,row);if(lazy&&!rowExpandLazyLoadedMaps[rowid]){$xeTable.clearRowExpandLoaded(row).then(()=>handleAsyncRowExpand($xeTable,row));}return $xeTable.$nextTick();},reloadExpandContent(row){
|
|
750
|
+
*/reloadRowExpand(row){const $xeTable=this;const internalData=$xeTable;const{rowExpandLazyLoadedMaps}=internalData;const expandOpts=$xeTable.computeExpandOpts;const{lazy}=expandOpts;const rowid=(0,_util.getRowid)(this,row);if(lazy&&!rowExpandLazyLoadedMaps[rowid]){$xeTable.clearRowExpandLoaded(row).then(()=>handleAsyncRowExpand($xeTable,row));}return $xeTable.$nextTick();},reloadExpandContent(row){warnLog('vxe.error.delFunc',['reloadExpandContent','reloadRowExpand']);// 即将废弃
|
|
750
751
|
return this.reloadRowExpand(row);},/**
|
|
751
752
|
* 展开行事件
|
|
752
753
|
*/triggerRowExpandEvent(evnt,params){const $xeTable=this;const reactData=$xeTable;const internalData=$xeTable;const{expandColumn}=reactData;const{rowExpandLazyLoadedMaps}=internalData;const expandOpts=$xeTable.computeExpandOpts;const{row}=params;const{lazy,trigger}=expandOpts;if(trigger==='manual'){return;}evnt.stopPropagation();const rowid=(0,_util.getRowid)($xeTable,row);if(!lazy||!rowExpandLazyLoadedMaps[rowid]){const expanded=!$xeTable.isRowExpandByRow(row);const columnIndex=expandColumn?$xeTable.getColumnIndex(expandColumn):-1;const $columnIndex=expandColumn?$xeTable.getVMColumnIndex(expandColumn):-1;$xeTable.setRowExpand(row,expanded);$xeTable.dispatchEvent('toggle-row-expand',{expanded,column:expandColumn,columnIndex,$columnIndex,row,rowIndex:$xeTable.getRowIndex(row),$rowIndex:$xeTable.getVMRowIndex(row)},evnt);}},/**
|
|
@@ -764,10 +765,10 @@ return this.reloadRowExpand(row);},/**
|
|
|
764
765
|
rowExpandedMaps={};internalData.rowExpandedMaps=rowExpandedMaps;rows=rows.slice(rows.length-1,rows.length);}const validRows=toggleMethod?rows.filter(row=>toggleMethod({$table:$xeTable,expanded,column:expandColumn,columnIndex,$columnIndex,row,rowIndex:$xeTable.getRowIndex(row),$rowIndex:$xeTable.getVMRowIndex(row)})):rows;if(expanded){validRows.forEach(row=>{const rowid=handleGetRowId(row);if(!rowExpandedMaps[rowid]){const rowRest=fullAllDataRowIdData[rowid];const isLoad=lazy&&!rowRest.expandLoaded&&!rowExpandLazyLoadedMaps[rowid];if(isLoad){lazyRests.push(handleAsyncRowExpand($xeTable,row));}else{rowExpandedMaps[rowid]=row;}}});}else{validRows.forEach(item=>{const rowid=handleGetRowId(item);if(rowExpandedMaps[rowid]){delete rowExpandedMaps[rowid];}});}if(reserve){validRows.forEach(row=>handleRowExpandReserve($xeTable,row,expanded));}}reactData.rowExpandedFlag++;return Promise.all(lazyRests).then(()=>$xeTable.$nextTick()).then(()=>handleLazyRecalculate($xeTable,true,true,true)).then(()=>{updateRowOffsetTop($xeTable);updateRowExpandStyle($xeTable);handleRowExpandScroll($xeTable);return $xeTable.updateCellAreas();});},/**
|
|
765
766
|
* 判断行是否为展开状态
|
|
766
767
|
* @param {Row} row 行对象
|
|
767
|
-
*/isRowExpandByRow(row){const $xeTable=this;const reactData=$xeTable;const internalData=$xeTable;const{rowExpandedFlag}=reactData;const{rowExpandedMaps}=internalData;const rowid=(0,_util.getRowid)(this,row);return!!rowExpandedFlag&&!!rowExpandedMaps[rowid];},isExpandByRow(row){
|
|
768
|
+
*/isRowExpandByRow(row){const $xeTable=this;const reactData=$xeTable;const internalData=$xeTable;const{rowExpandedFlag}=reactData;const{rowExpandedMaps}=internalData;const rowid=(0,_util.getRowid)(this,row);return!!rowExpandedFlag&&!!rowExpandedMaps[rowid];},isExpandByRow(row){warnLog('vxe.error.delFunc',['isExpandByRow','isRowExpandByRow']);// 即将废弃
|
|
768
769
|
return this.isRowExpandByRow(row);},/**
|
|
769
770
|
* 手动清空展开行状态,数据会恢复成未展开的状态
|
|
770
|
-
*/clearRowExpand(){const $xeTable=this;const reactData=$xeTable;const internalData=$xeTable;const{tableFullData,scrollYStore}=internalData;const expandOpts=$xeTable.computeExpandOpts;const{reserve}=expandOpts;const expList=$xeTable.getRowExpandRecords();internalData.rowExpandedMaps={};if(reserve){tableFullData.forEach(row=>handleRowExpandReserve($xeTable,row,false));}reactData.rowExpandedFlag++;scrollYStore.startIndex=0;scrollYStore.endIndex=1;return $xeTable.$nextTick().then(()=>{if(expList.length){return handleLazyRecalculate($xeTable,true,true,true);}}).then(()=>{updateRowOffsetTop($xeTable);updateRowExpandStyle($xeTable);handleRowExpandScroll($xeTable);return $xeTable.updateCellAreas();});},clearRowExpandReserve(){this.rowExpandedReserveRowMap={};return this.$nextTick();},getRowExpandRecords(){const $xeTable=this;const internalData=$xeTable;const rest=[];_xeUtils.default.each(internalData.rowExpandedMaps,item=>{if(item){rest.push(item);}});return rest;},setRowGroups(fieldOrColumns){const $xeTable=this;const props=$xeTable;const internalData=$xeTable;const{aggregateConfig,rowGroupConfig}=props;const aggregateOpts=$xeTable.computeAggregateOpts;const{maxGroupSize}=aggregateOpts;if(!(aggregateConfig||rowGroupConfig)){
|
|
771
|
+
*/clearRowExpand(){const $xeTable=this;const reactData=$xeTable;const internalData=$xeTable;const{tableFullData,scrollYStore}=internalData;const expandOpts=$xeTable.computeExpandOpts;const{reserve}=expandOpts;const expList=$xeTable.getRowExpandRecords();internalData.rowExpandedMaps={};if(reserve){tableFullData.forEach(row=>handleRowExpandReserve($xeTable,row,false));}reactData.rowExpandedFlag++;scrollYStore.startIndex=0;scrollYStore.endIndex=1;return $xeTable.$nextTick().then(()=>{if(expList.length){return handleLazyRecalculate($xeTable,true,true,true);}}).then(()=>{updateRowOffsetTop($xeTable);updateRowExpandStyle($xeTable);handleRowExpandScroll($xeTable);return $xeTable.updateCellAreas();});},clearRowExpandReserve(){this.rowExpandedReserveRowMap={};return this.$nextTick();},getRowExpandRecords(){const $xeTable=this;const internalData=$xeTable;const rest=[];_xeUtils.default.each(internalData.rowExpandedMaps,item=>{if(item){rest.push(item);}});return rest;},setRowGroups(fieldOrColumns){const $xeTable=this;const props=$xeTable;const internalData=$xeTable;const{aggregateConfig,rowGroupConfig}=props;const aggregateOpts=$xeTable.computeAggregateOpts;const{maxGroupSize}=aggregateOpts;if(!(aggregateConfig||rowGroupConfig)){errLog('vxe.error.reqProp',['aggregate-config']);return $xeTable.$nextTick();}const confList=fieldOrColumns?_xeUtils.default.isArray(fieldOrColumns)?fieldOrColumns:[fieldOrColumns]:[];if(maxGroupSize&&confList.length>maxGroupSize){if(_ui.VxeUI.modal){_ui.VxeUI.modal.message({status:'error',content:getI18n('vxe.table.maxGroupCol',[maxGroupSize])});}return $xeTable.$nextTick();}if(confList.length){handleUpdateRowGroup($xeTable,confList.map(fieldOrColumn=>{return _xeUtils.default.isString(fieldOrColumn)?fieldOrColumn:fieldOrColumn.field;}));return loadTableData($xeTable,internalData.tableSynchData,false,true);}return $xeTable.$nextTick();},getRowGroups(){const $xeTable=this;const props=$xeTable;const reactData=$xeTable;const internalData=$xeTable;const{aggregateConfig,rowGroupConfig}=props;const{fullColumnFieldData}=internalData;if(aggregateConfig||rowGroupConfig){const{rowGroupList}=reactData;return rowGroupList.map(({field})=>{const colRet=fullColumnFieldData[field];if(colRet){return colRet.column;}return{field};});}return[];},getRowGroupFields(){const $xeTable=this;return $xeTable.getRowGroups().map(item=>item.field);},clearRowGroups(){const $xeTable=this;const props=$xeTable;const internalData=$xeTable;const{aggregateConfig,rowGroupConfig}=props;if(!(aggregateConfig||rowGroupConfig)){errLog('vxe.error.reqProp',['aggregate-config']);return $xeTable.$nextTick();}handleUpdateRowGroup($xeTable,[]);return loadTableData($xeTable,internalData.tableSynchData,false,true);},isRowGroupRecord(row){const $xeTable=this;warnLog('vxe.error.delFunc',['isRowGroupRecord','isAggregateRecord']);return $xeTable.isAggregateRecord(row);},isRowGroupExpandByRow(row){const $xeTable=this;warnLog('vxe.error.delFunc',['isRowGroupExpandByRow','isAggregateExpandByRow']);return $xeTable.isAggregateExpandByRow(row);},isAggregateRecord(row){const $xeTable=this;const reactData=$xeTable;const{isRowGroupStatus}=reactData;return isRowGroupStatus&&row.isAggregate;},getAggregateContentByRow(row){const $xeTable=this;const reactData=$xeTable;const{isRowGroupStatus}=reactData;return isRowGroupStatus&&row&&row.isAggregate?row.groupContent:'';},getAggregateRowChildren(row){const $xeTable=this;const reactData=$xeTable;const aggregateOpts=$xeTable.computeAggregateOpts;const{childrenField,mapChildrenField}=aggregateOpts;const{isRowGroupStatus}=reactData;return isRowGroupStatus&&row&&row.isAggregate&&childrenField&&mapChildrenField?row[mapChildrenField]||[]:[];},refreshAggregateCalcValues(){const $xeTable=this;updateGroupData($xeTable);return $xeTable.$nextTick();},isAggregateExpandByRow(row){const $xeTable=this;const reactData=$xeTable;const internalData=$xeTable;const{rowGroupExpandedFlag}=reactData;const{rowGroupExpandedMaps}=internalData;return!!rowGroupExpandedFlag&&!!rowGroupExpandedMaps[(0,_util.getRowid)($xeTable,row)];},setRowGroupExpand(rows,expanded){const $xeTable=this;if(rows){if(!_xeUtils.default.isArray(rows)){rows=[rows];}return handleRowGroupVirtualExpand($xeTable,rows,expanded);}return $xeTable.$nextTick();},setRowGroupExpandByField(groupFields,expanded){const $xeTable=this;const reactData=$xeTable;const internalData=$xeTable;const{isRowGroupStatus}=reactData;const aggregateOpts=$xeTable.computeAggregateOpts;const{childrenField}=aggregateOpts;if(groupFields){if(!_xeUtils.default.isArray(groupFields)){groupFields=[groupFields];}if(isRowGroupStatus){const rows=[];const gfKeys={};groupFields.forEach(groupField=>{gfKeys[groupField]=true;});_xeUtils.default.eachTree(internalData.afterGroupFullData,row=>{if(row.isAggregate&&gfKeys[row.groupField]){rows.push(row);}},{children:childrenField});if(rows.length){return handleRowGroupVirtualExpand($xeTable,rows,expanded);}}}return $xeTable.$nextTick();},setAllRowGroupExpand(expanded){const $xeTable=this;const reactData=$xeTable;const internalData=$xeTable;const{tableFullGroupData}=internalData;const aggregateOpts=$xeTable.computeAggregateOpts;const{mapChildrenField}=aggregateOpts;const rgExpandedMaps={};if(expanded&&mapChildrenField){_xeUtils.default.eachTree(tableFullGroupData,row=>{if(row[mapChildrenField]&&row[mapChildrenField].length){rgExpandedMaps[(0,_util.getRowid)($xeTable,row)]=row;}},{children:mapChildrenField});}internalData.rowGroupExpandedMaps=rgExpandedMaps;handleVirtualTreeToList($xeTable);$xeTable.handleTableData();updateAfterDataIndex($xeTable);reactData.rowGroupExpandedFlag++;return handleLazyRecalculate($xeTable,true,true,true);},clearRowGroupExpand(){const $xeTable=this;const reactData=$xeTable;const internalData=$xeTable;internalData.rowGroupExpandedMaps={};handleVirtualTreeToList($xeTable);$xeTable.handleTableData();updateAfterDataIndex($xeTable);reactData.rowGroupExpandedFlag++;return handleLazyRecalculate($xeTable,true,true,true);},getTreeExpandRecords(){const $xeTable=this;const internalData=$xeTable;const rest=[];_xeUtils.default.each(internalData.treeExpandedMaps,item=>{if(item){rest.push(item);}});return rest;},/**
|
|
771
772
|
* 内部方法、获取树表格状态
|
|
772
773
|
* @deprecated
|
|
773
774
|
* @private
|
|
@@ -777,7 +778,7 @@ return this.isRowExpandByRow(row);},/**
|
|
|
777
778
|
*/isTreeExpandLoaded(row){const $xeTable=this;const{fullAllDataRowIdData}=this;const rowRest=fullAllDataRowIdData[(0,_util.getRowid)($xeTable,row)];return rowRest&&!!rowRest.treeLoaded;},clearTreeExpandLoaded(rows){const $xeTable=this;const reactData=$xeTable;const internalData=$xeTable;const{fullAllDataRowIdData,treeExpandedMaps}=internalData;const treeOpts=$xeTable.computeTreeOpts;const{transform}=treeOpts;if(rows){if(!_xeUtils.default.isArray(rows)){rows=[rows];}rows.forEach(row=>{const rowid=(0,_util.getRowid)($xeTable,row);const rowRest=fullAllDataRowIdData[rowid];if(rowRest){rowRest.treeLoaded=false;if(treeExpandedMaps[rowid]){delete treeExpandedMaps[rowid];}}});}else{_xeUtils.default.each(fullAllDataRowIdData,rowRest=>{rowRest.treeLoaded=false;});internalData.treeExpandedMaps={};}if(transform){handleVirtualTreeToList($xeTable);$xeTable.handleTableData();}reactData.treeExpandedFlag++;return $xeTable.$nextTick();},/**
|
|
778
779
|
* 重新懒加载树节点,并展开该节点
|
|
779
780
|
* @param {Row} row 行对象
|
|
780
|
-
*/reloadTreeExpand(row){const $xeTable=this;const reactData=$xeTable;const internalData=$xeTable;const{treeExpandLazyLoadedMaps}=internalData;const treeOpts=$xeTable.computeTreeOpts;const{transform,lazy}=treeOpts;const hasChildField=treeOpts.hasChild||treeOpts.hasChildField;const rowid=(0,_util.getRowid)($xeTable,row);if(lazy&&row[hasChildField]&&!treeExpandLazyLoadedMaps[rowid]){return $xeTable.clearTreeExpandLoaded(row).then(()=>{return handleAsyncTreeExpandChilds($xeTable,row);}).then(()=>{if(transform){handleVirtualTreeToList($xeTable);$xeTable.handleTableData();}reactData.treeExpandedFlag++;}).then(()=>{return $xeTable.recalculate();});}return $xeTable.$nextTick();},reloadTreeChilds(row){const $xeTable=this;
|
|
781
|
+
*/reloadTreeExpand(row){const $xeTable=this;const reactData=$xeTable;const internalData=$xeTable;const{treeExpandLazyLoadedMaps}=internalData;const treeOpts=$xeTable.computeTreeOpts;const{transform,lazy}=treeOpts;const hasChildField=treeOpts.hasChild||treeOpts.hasChildField;const rowid=(0,_util.getRowid)($xeTable,row);if(lazy&&row[hasChildField]&&!treeExpandLazyLoadedMaps[rowid]){return $xeTable.clearTreeExpandLoaded(row).then(()=>{return handleAsyncTreeExpandChilds($xeTable,row);}).then(()=>{if(transform){handleVirtualTreeToList($xeTable);$xeTable.handleTableData();}reactData.treeExpandedFlag++;}).then(()=>{return $xeTable.recalculate();});}return $xeTable.$nextTick();},reloadTreeChilds(row){const $xeTable=this;warnLog('vxe.error.delFunc',['reloadTreeChilds','reloadTreeExpand']);// 即将废弃
|
|
781
782
|
return $xeTable.reloadTreeExpand(row);},/**
|
|
782
783
|
* 行分组事件
|
|
783
784
|
*/triggerRowGroupExpandEvent(evnt,params){const $xeTable=this;const internalData=$xeTable;const{rowGroupExpandedMaps}=internalData;const aggregateOpts=$xeTable.computeAggregateOpts;const{row,column}=params;const{trigger}=aggregateOpts;if(trigger==='manual'){return;}evnt.stopPropagation();const rowid=(0,_util.getRowid)($xeTable,row);const expanded=!rowGroupExpandedMaps[rowid];const columnIndex=$xeTable.getColumnIndex(column);const $columnIndex=$xeTable.getVMColumnIndex(column);$xeTable.setRowGroupExpand(row,expanded);$xeTable.dispatchEvent('toggle-row-group-expand',{expanded,column,columnIndex,$columnIndex,row},evnt);},/**
|
|
@@ -817,12 +818,12 @@ if(isRollX){evnt.preventDefault();internalData.inWheelScroll=true;(0,_dom.wheelS
|
|
|
817
818
|
updateScrollXSpace(){const $xeTable=this;const reactData=$xeTable;const internalData=$xeTable;const{scrollXLoad,overflowX,scrollXWidth}=reactData;const{visibleColumn,scrollXStore,elemStore,fullColumnIdData}=internalData;const $xeGanttView=internalData.xeGanttView;const mouseOpts=$xeTable.computeMouseOpts;const tableBody=$xeTable.$refs.refTableBody;const tableBodyElem=tableBody?tableBody.$el:null;if(tableBodyElem){const bodyScrollElem=(0,_util.getRefElem)(elemStore['main-body-scroll']);const bodyTableElem=(0,_util.getRefElem)(elemStore['main-body-table']);const headerTableElem=(0,_util.getRefElem)(elemStore['main-header-table']);const footerTableElem=(0,_util.getRefElem)(elemStore['main-footer-table']);let xSpaceLeft=0;const firstColumn=visibleColumn[scrollXStore.startIndex];if(firstColumn){const colRest=fullColumnIdData[firstColumn.id]||{};xSpaceLeft=colRest.oLeft;}let clientWidth=0;if(bodyScrollElem){clientWidth=bodyScrollElem.clientWidth;}// 虚拟渲染
|
|
818
819
|
let isScrollXBig=false;let ySpaceWidth=scrollXWidth;if(scrollXWidth>maxXWidth){// 触右
|
|
819
820
|
if(bodyScrollElem&&bodyTableElem&&bodyScrollElem.scrollLeft+clientWidth>=maxXWidth){xSpaceLeft=maxXWidth-bodyTableElem.clientWidth;}else{xSpaceLeft=(maxXWidth-clientWidth)*(xSpaceLeft/(scrollXWidth-clientWidth));}ySpaceWidth=maxXWidth;isScrollXBig=true;}if(!(scrollXLoad&&overflowX)){xSpaceLeft=0;}if(getConfig().scrollMarginStyle){// 已废弃方式
|
|
820
|
-
if(headerTableElem){headerTableElem.style.marginLeft=headerTableElem.getAttribute('xvm')?`${xSpaceLeft}px`:'';}if(bodyTableElem){bodyTableElem.style.marginLeft=`${xSpaceLeft}px`;}if(footerTableElem){footerTableElem.style.marginLeft=footerTableElem.getAttribute('xvm')?`${xSpaceLeft}px`:'';}}else{if(headerTableElem){headerTableElem.style.transform=headerTableElem.getAttribute('xvm')?`translate(${xSpaceLeft}px, 0px)`:'';}if(bodyTableElem){bodyTableElem.style.transform=`translate(${xSpaceLeft}px, ${reactData.scrollYTop||0}px)`;}if(footerTableElem){footerTableElem.style.transform=footerTableElem.getAttribute('xvm')?`translate(${xSpaceLeft}px, 0px)`:'';}}const containerList=['main'];containerList.forEach(name=>{const layoutList=['header','body','footer'];layoutList.forEach(layout=>{const xSpaceElem=(0,_util.getRefElem)(elemStore[`${name}-${layout}-xSpace`]);if(xSpaceElem){xSpaceElem.style.width=scrollXLoad?`${ySpaceWidth}px`:'';}});});reactData.scrollXLeft=xSpaceLeft;reactData.scrollXWidth=ySpaceWidth;reactData.isScrollXBig=isScrollXBig;const scrollXSpaceEl=$xeTable.$refs.refScrollXSpaceElem;if(scrollXSpaceEl){scrollXSpaceEl.style.width=`${ySpaceWidth}px`;}calcScrollbar($xeTable);if(isScrollXBig&&mouseOpts.area){
|
|
821
|
+
if(headerTableElem){headerTableElem.style.marginLeft=headerTableElem.getAttribute('xvm')?`${xSpaceLeft}px`:'';}if(bodyTableElem){bodyTableElem.style.marginLeft=`${xSpaceLeft}px`;}if(footerTableElem){footerTableElem.style.marginLeft=footerTableElem.getAttribute('xvm')?`${xSpaceLeft}px`:'';}}else{if(headerTableElem){headerTableElem.style.transform=headerTableElem.getAttribute('xvm')?`translate(${xSpaceLeft}px, 0px)`:'';}if(bodyTableElem){bodyTableElem.style.transform=`translate(${xSpaceLeft}px, ${reactData.scrollYTop||0}px)`;}if(footerTableElem){footerTableElem.style.transform=footerTableElem.getAttribute('xvm')?`translate(${xSpaceLeft}px, 0px)`:'';}}const containerList=['main'];containerList.forEach(name=>{const layoutList=['header','body','footer'];layoutList.forEach(layout=>{const xSpaceElem=(0,_util.getRefElem)(elemStore[`${name}-${layout}-xSpace`]);if(xSpaceElem){xSpaceElem.style.width=scrollXLoad?`${ySpaceWidth}px`:'';}});});reactData.scrollXLeft=xSpaceLeft;reactData.scrollXWidth=ySpaceWidth;reactData.isScrollXBig=isScrollXBig;const scrollXSpaceEl=$xeTable.$refs.refScrollXSpaceElem;if(scrollXSpaceEl){scrollXSpaceEl.style.width=`${ySpaceWidth}px`;}calcScrollbar($xeTable);if(isScrollXBig&&mouseOpts.area){errLog('vxe.error.notProp',['mouse-config.area']);}if($xeGanttView&&$xeGanttView.handleUpdateSXSpace){$xeGanttView.handleUpdateSXSpace();}return $xeTable.$nextTick(()=>{updateStyle($xeTable);});}},updateScrollYData(){const $xeTable=this;$xeTable.handleTableData();$xeTable.updateScrollYSpace();return $xeTable.$nextTick().then(()=>{$xeTable.handleTableData();$xeTable.updateScrollYSpace();});},// 更新纵向 Y 可视渲染上下剩余空间大小
|
|
821
822
|
updateScrollYSpace(){const $xeTable=this;const reactData=$xeTable;const internalData=$xeTable;const{isAllOverflow,overflowY,scrollYLoad,scrollYHeight,expandColumn}=reactData;const{scrollYStore,elemStore,isResizeCellHeight,afterFullData,fullAllDataRowIdData,rowExpandedMaps}=internalData;const $xeGanttView=internalData.xeGanttView;const{startIndex}=scrollYStore;const mouseOpts=$xeTable.computeMouseOpts;const expandOpts=$xeTable.computeExpandOpts;const rowOpts=$xeTable.computeRowOpts;const cellOpts=$xeTable.computeCellOpts;const defaultRowHeight=$xeTable.computeDefaultRowHeight;const bodyScrollElem=(0,_util.getRefElem)(elemStore['main-body-scroll']);const bodyTableElem=(0,_util.getRefElem)(elemStore['main-body-table']);const leftBodyTableElem=(0,_util.getRefElem)(elemStore['left-body-table']);const rightbodyTableElem=(0,_util.getRefElem)(elemStore['right-body-table']);const containerList=['main','left','right'];let ySpaceTop=0;let sYHeight=scrollYHeight;let isScrollYBig=false;if(scrollYLoad){const isCustomCellHeight=isResizeCellHeight||cellOpts.height||rowOpts.height;if(!isCustomCellHeight&&!expandColumn&&isAllOverflow){sYHeight=afterFullData.length*defaultRowHeight;if(sYHeight>maxYHeight){isScrollYBig=true;}ySpaceTop=Math.max(0,startIndex*defaultRowHeight);}else{const firstRow=afterFullData[startIndex];if(firstRow){let rowid=(0,_util.getRowid)($xeTable,firstRow);let rowRest=fullAllDataRowIdData[rowid]||{};ySpaceTop=rowRest.oTop||0;const lastRow=afterFullData[afterFullData.length-1];rowid=(0,_util.getRowid)($xeTable,lastRow);rowRest=fullAllDataRowIdData[rowid]||{};if(rowRest){const rHeight=(0,_util.getCellRestHeight)(rowRest,cellOpts,rowOpts,defaultRowHeight);// 如果为空时还没计算完数据,保持原高度不变
|
|
822
823
|
if(rHeight){sYHeight=(rowRest.oTop||0)+rHeight;// 是否展开行
|
|
823
824
|
if(expandColumn&&rowExpandedMaps[rowid]){sYHeight+=rowRest.expandHeight||expandOpts.height||0;}}}if(sYHeight>maxYHeight){isScrollYBig=true;}}else{sYHeight=bodyTableElem?bodyTableElem.clientHeight:0;}}}else{if(bodyTableElem){sYHeight=bodyTableElem.clientHeight;}}let clientHeight=0;if(bodyScrollElem){clientHeight=bodyScrollElem.clientHeight;}// 虚拟渲染
|
|
824
825
|
let ySpaceHeight=sYHeight;let scrollYTop=ySpaceTop;if(isScrollYBig){// 触底
|
|
825
|
-
if(bodyScrollElem&&bodyTableElem&&bodyScrollElem.scrollTop+clientHeight>=maxYHeight){scrollYTop=maxYHeight-bodyTableElem.clientHeight;}else{scrollYTop=(maxYHeight-clientHeight)*(ySpaceTop/(scrollYHeight-clientHeight));}ySpaceHeight=maxYHeight;}if(!(scrollYLoad&&overflowY)){scrollYTop=0;}if(getConfig().scrollMarginStyle){if(leftBodyTableElem){leftBodyTableElem.style.marginTop=`${scrollYTop}px`;}if(bodyTableElem){bodyTableElem.style.marginTop=`${scrollYTop}px`;}if(rightbodyTableElem){rightbodyTableElem.style.marginTop=`${scrollYTop}px`;}}else{if(leftBodyTableElem){leftBodyTableElem.style.transform=`translate(0px, ${scrollYTop}px)`;}if(bodyTableElem){bodyTableElem.style.transform=`translate(${reactData.scrollXLeft||0}px, ${scrollYTop}px)`;}if(rightbodyTableElem){rightbodyTableElem.style.transform=`translate(0px, ${scrollYTop}px)`;}}containerList.forEach(name=>{const layoutList=['header','body','footer'];layoutList.forEach(layout=>{const ySpaceElem=(0,_util.getRefElem)(elemStore[`${name}-${layout}-ySpace`]);if(ySpaceElem){ySpaceElem.style.height=ySpaceHeight?`${ySpaceHeight}px`:'';}});});const scrollYSpaceEl=$xeTable.$refs.refScrollYSpaceElem;if(scrollYSpaceEl){scrollYSpaceEl.style.height=ySpaceHeight?`${ySpaceHeight}px`:'';}const rowExpandYSpaceEl=$xeTable.$refs.refRowExpandYSpaceElem;if(rowExpandYSpaceEl){rowExpandYSpaceEl.style.height=ySpaceHeight?`${ySpaceHeight}px`:'';}reactData.scrollYTop=scrollYTop;reactData.scrollYHeight=isScrollYBig?sYHeight:ySpaceHeight;reactData.isScrollYBig=isScrollYBig;calcScrollbar($xeTable);if(isScrollYBig&&mouseOpts.area){
|
|
826
|
+
if(bodyScrollElem&&bodyTableElem&&bodyScrollElem.scrollTop+clientHeight>=maxYHeight){scrollYTop=maxYHeight-bodyTableElem.clientHeight;}else{scrollYTop=(maxYHeight-clientHeight)*(ySpaceTop/(scrollYHeight-clientHeight));}ySpaceHeight=maxYHeight;}if(!(scrollYLoad&&overflowY)){scrollYTop=0;}if(getConfig().scrollMarginStyle){if(leftBodyTableElem){leftBodyTableElem.style.marginTop=`${scrollYTop}px`;}if(bodyTableElem){bodyTableElem.style.marginTop=`${scrollYTop}px`;}if(rightbodyTableElem){rightbodyTableElem.style.marginTop=`${scrollYTop}px`;}}else{if(leftBodyTableElem){leftBodyTableElem.style.transform=`translate(0px, ${scrollYTop}px)`;}if(bodyTableElem){bodyTableElem.style.transform=`translate(${reactData.scrollXLeft||0}px, ${scrollYTop}px)`;}if(rightbodyTableElem){rightbodyTableElem.style.transform=`translate(0px, ${scrollYTop}px)`;}}containerList.forEach(name=>{const layoutList=['header','body','footer'];layoutList.forEach(layout=>{const ySpaceElem=(0,_util.getRefElem)(elemStore[`${name}-${layout}-ySpace`]);if(ySpaceElem){ySpaceElem.style.height=ySpaceHeight?`${ySpaceHeight}px`:'';}});});const scrollYSpaceEl=$xeTable.$refs.refScrollYSpaceElem;if(scrollYSpaceEl){scrollYSpaceEl.style.height=ySpaceHeight?`${ySpaceHeight}px`:'';}const rowExpandYSpaceEl=$xeTable.$refs.refRowExpandYSpaceElem;if(rowExpandYSpaceEl){rowExpandYSpaceEl.style.height=ySpaceHeight?`${ySpaceHeight}px`:'';}reactData.scrollYTop=scrollYTop;reactData.scrollYHeight=isScrollYBig?sYHeight:ySpaceHeight;reactData.isScrollYBig=isScrollYBig;calcScrollbar($xeTable);if(isScrollYBig&&mouseOpts.area){errLog('vxe.error.notProp',['mouse-config.area']);}if($xeGanttView&&$xeGanttView.handleUpdateSYSpace){$xeGanttView.handleUpdateSYSpace();}return $xeTable.$nextTick().then(()=>{return updateStyle($xeTable);});},updateScrollYStatus(fullData){const $xeTable=this;return updateScrollYStatus($xeTable,fullData);},/**
|
|
826
827
|
* 如果有滚动条,则滚动到对应的位置
|
|
827
828
|
*/scrollTo(scrollLeft,scrollTop){const $xeTable=this;const reactData=$xeTable;const internalData=$xeTable;const{elemStore}=internalData;const headerScrollElem=(0,_util.getRefElem)(elemStore['main-header-scroll']);const bodyScrollElem=(0,_util.getRefElem)(elemStore['main-body-scroll']);const footerScrollElem=(0,_util.getRefElem)(elemStore['main-footer-scroll']);const leftScrollElem=(0,_util.getRefElem)(elemStore['left-body-scroll']);const rightScrollElem=(0,_util.getRefElem)(elemStore['right-body-scroll']);const xHandleEl=$xeTable.$refs.refScrollXHandleElem;const yHandleEl=$xeTable.$refs.refScrollYHandleElem;internalData.intoRunScroll=true;if(scrollLeft){if(!_xeUtils.default.isNumber(scrollLeft)){scrollTop=scrollLeft.top;scrollLeft=scrollLeft.left;}}if(_xeUtils.default.isNumber(scrollLeft)){(0,_dom.setScrollLeft)(xHandleEl,scrollLeft);(0,_dom.setScrollLeft)(bodyScrollElem,scrollLeft);(0,_dom.setScrollLeft)(headerScrollElem,scrollLeft);(0,_dom.setScrollLeft)(footerScrollElem,scrollLeft);if(reactData.scrollXLoad){loadScrollXData($xeTable);}}if(_xeUtils.default.isNumber(scrollTop)){(0,_dom.setScrollTop)(yHandleEl,scrollTop);(0,_dom.setScrollTop)(bodyScrollElem,scrollTop);(0,_dom.setScrollTop)(leftScrollElem,scrollTop);(0,_dom.setScrollTop)(rightScrollElem,scrollTop);if(reactData.scrollYLoad){loadScrollYData($xeTable);}}return new Promise(resolve=>{setTimeout(()=>{$xeTable.$nextTick(()=>{internalData.intoRunScroll=false;resolve();});},reactData.scrollXLoad||reactData.scrollYLoad?30:0);});},/**
|
|
828
829
|
* 如果有滚动条,则滚动到对应的行
|
|
@@ -852,9 +853,9 @@ internalData._sToTime=setTimeout(()=>{internalData._sToTime=undefined;if(scrollY
|
|
|
852
853
|
* 如果单元格配置了校验规则,则会进行校验
|
|
853
854
|
*/updateStatus(slotParams,cellValue){const $xeTable=this;const props=$xeTable;const internalData=$xeTable;return this.$nextTick().then(()=>{const{editRules}=props;const{isActivated}=internalData;if(isActivated&&slotParams&&editRules){return $xeTable.handleCellRuleUpdateStatus('change',slotParams,cellValue);}});},/**
|
|
854
855
|
* 设置合并单元格 [{ row: Row|number, column: ColumnInfo|number, rowspan: number, colspan: number }]
|
|
855
|
-
*/setMergeCells(merges){const $xeTable=this;const props=$xeTable;const reactData=$xeTable;const internalData=$xeTable;if(props.spanMethod){
|
|
856
|
+
*/setMergeCells(merges){const $xeTable=this;const props=$xeTable;const reactData=$xeTable;const internalData=$xeTable;if(props.spanMethod){errLog('vxe.error.errConflicts',['merge-cells','span-method']);}handleBodyMerge($xeTable,merges);$xeTable.handleUpdateBodyMerge();return $xeTable.$nextTick().then(()=>{const{expandColumn}=reactData;const{mergeBodyList}=internalData;if(expandColumn&&mergeBodyList.length){warnLog('vxe.error.errConflicts',['type=expand','merge-cells | span-method']);}$xeTable.updateCellAreas();return updateStyle($xeTable);});},/**
|
|
856
857
|
* 移除单元格合并 [{row:Row|number, col:ColumnInfo|number}]
|
|
857
|
-
*/removeMergeCells(merges){const $xeTable=this;const props=$xeTable;if(props.spanMethod){
|
|
858
|
+
*/removeMergeCells(merges){const $xeTable=this;const props=$xeTable;if(props.spanMethod){errLog('vxe.error.errConflicts',['merge-cells','span-method']);}const rest=removeBodyMerges($xeTable,merges);$xeTable.handleUpdateBodyMerge();return $xeTable.$nextTick().then(()=>{$xeTable.updateCellAreas();updateStyle($xeTable);return rest;});},/**
|
|
858
859
|
* 获取所有被合并的单元格
|
|
859
860
|
*/getMergeCells(){const $xeTable=this;const internalData=$xeTable;return internalData.mergeBodyList.slice(0);},/**
|
|
860
861
|
* 清除所有单元格合并
|
|
@@ -864,8 +865,8 @@ internalData._sToTime=setTimeout(()=>{internalData._sToTime=undefined;if(scrollY
|
|
|
864
865
|
* 获取所有被合并的表头单元格
|
|
865
866
|
*/getMergeHeaderCells(){const $xeTable=this;const internalData=$xeTable;return internalData.mergeHeaderList.slice(0);},/**
|
|
866
867
|
* 清除所有表头单元格合并
|
|
867
|
-
*/clearMergeHeaderCells(){const $xeTable=this;const reactData=$xeTable;const internalData=$xeTable;internalData.mergeHeaderList=[];internalData.mergeHeaderMaps={};internalData.mergeHeaderCellMaps={};internalData.mergeHeaderRowMaps={};internalData.mergeBodyColMaps={};reactData.mergeHeadFlag++;return $xeTable.$nextTick().then(()=>{return updateStyle($xeTable);});},setMergeFooterCells(merges){const $xeTable=this;const props=$xeTable;if(props.footerSpanMethod){
|
|
868
|
-
return $xeTable.setMergeFooterCells(merges);},removeMergeFooterCells(merges){const $xeTable=this;const props=$xeTable;if(props.footerSpanMethod){
|
|
868
|
+
*/clearMergeHeaderCells(){const $xeTable=this;const reactData=$xeTable;const internalData=$xeTable;internalData.mergeHeaderList=[];internalData.mergeHeaderMaps={};internalData.mergeHeaderCellMaps={};internalData.mergeHeaderRowMaps={};internalData.mergeBodyColMaps={};reactData.mergeHeadFlag++;return $xeTable.$nextTick().then(()=>{return updateStyle($xeTable);});},setMergeFooterCells(merges){const $xeTable=this;const props=$xeTable;if(props.footerSpanMethod){errLog('vxe.error.errConflicts',['merge-footer-cells | merge-footer-items','footer-span-method']);}handleFooterMerge($xeTable,merges);$xeTable.handleUpdateFooterMerge();return $xeTable.$nextTick().then(()=>{return updateStyle($xeTable);});},setMergeFooterItems(merges){const $xeTable=this;// errLog('vxe.error.delFunc', ['setMergeFooterItems', 'setMergeFooterCells'])
|
|
869
|
+
return $xeTable.setMergeFooterCells(merges);},removeMergeFooterCells(merges){const $xeTable=this;const props=$xeTable;if(props.footerSpanMethod){errLog('vxe.error.errConflicts',['merge-footer-cells | merge-footer-items','footer-span-method']);}const rest=removeFooterMerges($xeTable,merges);$xeTable.handleUpdateFooterMerge();return $xeTable.$nextTick().then(()=>{updateStyle($xeTable);return rest;});},removeMergeFooterItems(merges){const $xeTable=this;// errLog('vxe.error.delFunc', ['removeMergeFooterItems', 'removeMergeFooterCells'])
|
|
869
870
|
return $xeTable.removeMergeFooterCells(merges);},/**
|
|
870
871
|
* 获取所有被合并的表尾
|
|
871
872
|
*/getMergeFooterCells(){const $xeTable=this;const internalData=$xeTable;return internalData.mergeFooterList.slice(0);},getMergeFooterItems(){const $xeTable=this;// errLog('vxe.error.delFunc', ['getMergeFooterItems', 'getMergeFooterCells'])
|
|
@@ -879,7 +880,7 @@ emitEvent(type,params,evnt){const $xeTable=this;$xeTable.dispatchEvent(type,para
|
|
|
879
880
|
*/connect($toolbar){const $xeTable=this;return $xeTable.connectToolbar($toolbar);},/**
|
|
880
881
|
* 连接工具栏
|
|
881
882
|
* @param $toolbar
|
|
882
|
-
*/connectToolbar($toolbar){const $xeTable=this;const internalData=$xeTable;if($toolbar&&$toolbar.syncUpdate){$toolbar.syncUpdate({collectColumn:internalData.collectColumn,$table:$xeTable});this.$toolbar=$toolbar;}else{
|
|
883
|
+
*/connectToolbar($toolbar){const $xeTable=this;const internalData=$xeTable;if($toolbar&&$toolbar.syncUpdate){$toolbar.syncUpdate({collectColumn:internalData.collectColumn,$table:$xeTable});this.$toolbar=$toolbar;}else{errLog('vxe.error.barUnableLink');}return $xeTable.$nextTick();},handleConnectGanttView($ganttView){const $xeTable=this;const internalData=$xeTable;if($ganttView&&$ganttView.connectUpdate){$ganttView.connectUpdate({$table:$xeTable});internalData.xeGanttView=$ganttView;}return $xeTable.$nextTick();},/*************************
|
|
883
884
|
* Publish methods
|
|
884
885
|
*************************//**
|
|
885
886
|
* 已废弃,被 getCellElement 替换
|