Commit 2fa2962a authored by GoshaZotov's avatar GoshaZotov

for bug #32599

add function into api: asc_sortCellsRangeExpand -> getSelectionSortInfo
rename sortColFilter -> sortRange(wsview)
change function wsview -> sortRange
parent 62058104
...@@ -446,9 +446,9 @@ var editor; ...@@ -446,9 +446,9 @@ var editor;
ws.reapplyAutoFilter(displayName); ws.reapplyAutoFilter(displayName);
}; };
spreadsheet_api.prototype.asc_sortColFilter = function(type, cellId, displayName, color) { spreadsheet_api.prototype.asc_sortColFilter = function(type, cellId, displayName, color, bIsExpandRange) {
var ws = this.wb.getWorksheet(); var ws = this.wb.getWorksheet();
ws.sortColFilter(type, cellId, displayName, color); ws.sortRange(type, cellId, displayName, color, bIsExpandRange);
}; };
spreadsheet_api.prototype.asc_getAddFormatTableOptions = function(range) { spreadsheet_api.prototype.asc_getAddFormatTableOptions = function(range) {
...@@ -2086,7 +2086,12 @@ var editor; ...@@ -2086,7 +2086,12 @@ var editor;
spreadsheet_api.prototype.asc_mergeCellsDataLost = function(options) { spreadsheet_api.prototype.asc_mergeCellsDataLost = function(options) {
return this.wb.getWorksheet().getSelectionMergeInfo(options); return this.wb.getWorksheet().getSelectionMergeInfo(options);
}; };
//нужно ли спрашивать пользователя о расширении диапазона
spreadsheet_api.prototype.asc_sortCellsRangeExpand = function() {
return this.wb.getWorksheet().getSelectionSortInfo();
};
spreadsheet_api.prototype.asc_getSheetViewSettings = function() { spreadsheet_api.prototype.asc_getSheetViewSettings = function() {
return this.wb.getWorksheet().getSheetViewSettings(); return this.wb.getWorksheet().getSheetViewSettings();
}; };
......
...@@ -6751,7 +6751,46 @@ ...@@ -6751,7 +6751,46 @@
return false; return false;
}; };
//нужно ли спрашивать пользователя о расширении диапазона
WorksheetView.prototype.getSelectionSortInfo = function () {
//в случае попытки сортировать мультиселект, необходимо выдавать ошибку
var arn = this.model.selectionRange.getLast().clone(true);
//null - не выдавать сообщение и не расширять, false - не выдавать сообщение и расширЯть, true - выдавать сообщение
var bResult = false;
//в случае одной выделенной ячейки - всегда не выдаём сообщение и автоматически расширяем
if(!arn.isOneCell())
{
var colCount = arn.c2 - arn.c1 + 1;
var rowCount = arn.r2 - arn.r1 + 1;
//если выделено более одного столбца и более одной строки - не выдаем сообщение и не расширяем
if(colCount > 1 && rowCount > 1)
{
bResult = null;
}
else
{
//далее проверяем есть ли смежные ячейки у startCol/startRow
var activeCell = this.model.selectionRange.activeCell;
var activeCellRange = new Asc.Range(activeCell.col, activeCell.row, activeCell.col, activeCell.row);
var expandRange = this.model.autoFilters._getAdjacentCellsAF(activeCellRange);
//если диапазон не расширяется за счет близлежащих ячеек - не выдаем сообщение и не расширяем
if(arn.isEqual(expandRange) || activeCellRange.isEqual(expandRange))
{
bResult = null;
}
else
{
bResult = true;
}
}
}
return bResult;
};
WorksheetView.prototype.getSelectionMathInfo = function () { WorksheetView.prototype.getSelectionMathInfo = function () {
var oSelectionMathInfo = new asc_CSelectionMathInfo(); var oSelectionMathInfo = new asc_CSelectionMathInfo();
var sum = 0; var sum = 0;
...@@ -11674,7 +11713,7 @@ ...@@ -11674,7 +11713,7 @@
}; };
WorksheetView.prototype.sortColFilter = function (type, cellId, displayName, color) { WorksheetView.prototype.sortRange = function (type, cellId, displayName, color, bIsExpandRange) {
var t = this; var t = this;
var ar = this.model.selectionRange.getLast().clone(); var ar = this.model.selectionRange.getLast().clone();
var onChangeAutoFilterCallback = function (isSuccess) { var onChangeAutoFilterCallback = function (isSuccess) {
...@@ -11698,12 +11737,31 @@ ...@@ -11698,12 +11737,31 @@
t._onUpdateFormatTable(sortProps.sortRange.bbox, false); t._onUpdateFormatTable(sortProps.sortRange.bbox, false);
History.EndTransaction(); History.EndTransaction();
}; };
if (null === sortProps) { if (null === sortProps) {
var rgbColor = color ? var rgbColor = color ? new AscCommonExcel.RgbColor((color.asc_getR() << 16) + (color.asc_getG() << 8) + color.asc_getB()) : null;
new AscCommonExcel.RgbColor((color.asc_getR() << 16) + (color.asc_getG() << 8) + color.asc_getB()) :
null; //expand selectionRange
t.setSelectionInfo("sort", type, null, null, rgbColor); var selectionRange = t.model.selectionRange;
if(bIsExpandRange)
{
var lastRange = selectionRange.getLast().clone();
var activeCell = selectionRange.activeCell;
var activeCellRange = new Asc.Range(activeCell.col, activeCell.row, activeCell.col, activeCell.row);
var expandRange = t.model.autoFilters._getAdjacentCellsAF(activeCellRange);
selectionRange.ranges[selectionRange.ranges.length - 1] = expandRange;
}
//sort
t.setSelectionInfo("sort", type, null, null, rgbColor);
if(bIsExpandRange)
{
selectionRange.ranges[selectionRange.ranges.length - 1] = lastRange;
}
//TODO здесь необходимо селект перерисовывать
} else if (false !== sortProps) { } else if (false !== sortProps) {
t._isLockedCells(sortProps.sortRange.bbox, /*subType*/null, onSortAutoFilterCallBack); t._isLockedCells(sortProps.sortRange.bbox, /*subType*/null, onSortAutoFilterCallBack);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment