Exemple #1
0
		_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
				})
			});

		},
Exemple #2
0
		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
			});
		},