_toggle: function(lock, arrOper) { var clip, region, operRegion, sendRegion, cellList = [], i, len1, j, len2, tempCell, tempArr = [], tempLock; if (cache.protectState) { Backbone.trigger('event:showMsgBar:show', '保护状态,不能进行该操作'); return; } if (clip = selects.getModelByType('clip')) { cache.clipState = 'null'; clip.destroy(); } region = getOperRegion(arrOper); operRegion = region.operRegion; sendRegion = region.sendRegion; //整行操作或多行操作 if (operRegion.endColIndex === 'MAX') { //筛选出已经进行设置过的锁定列 for (i = 0, len1 = colList.length; i < len1; i++) { if (typeof(tempLock = colList[i].get('operProp').locked) === 'boolean' && tempLock !== lock) { tempArr.push(i); } } for (i = operRegion.startRowIndex, len1 = operRegion.endRowIndex + 1; i < len1; i++) { rowList[i].set('operProp.locked', lock); //交叉位置创建单元格 for (j = 0, len2 = tempArr.length; j < len2; j++) { tempCell = cells.createCellModel(tempArr[j], i); tempCell.set('locked', lock); } } cellList = cells.getCellByVertical(operRegion); for (i = 0, len1 = cellList.length; i < len1; i++) { cellList[i].set('locked', lock); } //整列或多列操作 } else if (operRegion.endRowIndex === 'MAX') { for (i = 0, len2 = rowList.length; i < len2; i++) { if (typeof(tempLock = rowList[i].get('operProp').locked) === 'boolean' && tempLock !== lock) { tempArr.push(i); } } for (i = operRegion.startColIndex, len1 = operRegion.endColIndex + 1; i < len1; i++) { colList[i].set('operProp.locked', lock); //交叉位置创建单元格 for (j = 0, len2 = tempArr.length; j < len2; j++) { tempCell = cells.createCellModel(i, tempArr[j]); tempCell.set('locked', lock); } } cellList = cells.getCellByVertical(operRegion); for (i = 0, len1 = cellList.length; i < len1; i++) { cellList[i].set('locked', lock); } } else { cells.oprCellsByRegion(operRegion, function(cell) { cell.set('locked', lock); }); } send.PackAjax({ url: config.url.cell.lock, data: JSON.stringify({ coordinate: [sendRegion], lock: lock }) }); },
arrow: function(direction) { var selectRecord = cache.shortcut.select, select, cellModel, initSelectColIndex, initSelectRowIndex, selectColAlias, selectRowAlias, colIndex, rowIndex, occupyCol, occupyRow, maxColIndex = gridCols.length - 1, maxRowIndex = gridRows.length - 1; select = selects.getModelByType('selected'); //对于方向键,应该以选择初始点为基准做操作,因暂时不支持初始点,所以暂以左上角为基准 selectColAlias = select.get('wholePosi').startX; selectRowAlias = select.get('wholePosi').startY; initSelectRowIndex = gridRows.getIndexByAlias(selectRowAlias); initSelectColIndex = gridCols.getIndexByAlias(selectColAlias); cellModel = cells.getCellByVertical(initSelectColIndex, initSelectRowIndex)[0]; switch (direction) { case 'LEFT': colIndex = initSelectColIndex < 1 ? 0 : initSelectColIndex - 1; rowIndex = gridRows.getIndexByAlias(selectRecord.rowAlias); if (rowIndex === -1) { rowIndex = initSelectRowIndex; } selectRecord.colAlias = gridColList[colIndex].get('alias'); break; case 'RIGHT': if (!cellModel) { colIndex = initSelectColIndex < maxColIndex ? initSelectColIndex + 1 : maxColIndex; } else { occupyCol = cellModel.get('occupy').x; colIndex = initSelectColIndex + occupyCol.length - occupyCol.indexOf(selectColAlias); colIndex = colIndex < maxColIndex ? colIndex : maxColIndex; } rowIndex = gridRows.getIndexByAlias(selectRecord.rowAlias); if (rowIndex === -1) { rowIndex = initSelectRowIndex; } selectRecord.colAlias = gridColList[colIndex].get('alias'); break; case 'UP': rowIndex = initSelectRowIndex < 1 ? 0 : initSelectRowIndex - 1; colIndex = gridCols.getIndexByAlias(selectRecord.colAlias); if (colIndex === -1) { colIndex = initSelectColIndex; } selectRecord.rowAlias = gridRowList[rowIndex].get('alias'); break; case 'DOWN': if (!cellModel) { rowIndex = initSelectRowIndex < maxRowIndex ? initSelectRowIndex + 1 : maxRowIndex; } else { occupyRow = cellModel.get('occupy').y; rowIndex = initSelectRowIndex + occupyRow.length - occupyRow.indexOf(selectRowAlias); rowIndex = rowIndex < maxRowIndex ? rowIndex : maxRowIndex; } colIndex = gridCols.getIndexByAlias(selectRecord.colAlias); if (colIndex === -1) { colIndex = initSelectColIndex; } selectRecord.rowAlias = gridRowList[rowIndex].get('alias'); break; default: return; } select.set('tempPosi', { initColIndex: colIndex, initRowIndex: rowIndex, mouseColIndex: colIndex, mouseRowIndex: rowIndex }); },