Commit face4f90 authored by Alexander.Trofimov's avatar Alexander.Trofimov Committed by Alexander.Trofimov

asc_checkDataRange добавил делать ли полную проверку (для форматированной...

asc_checkDataRange добавил делать ли полную проверку (для форматированной таблицы тоже делаем проверку)

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@57602 954022d7-b5bf-4e40-9824-e11837661b57
parent 42191eac
...@@ -546,8 +546,18 @@ parserHelper.prototype.get3DRef = function (sheet, range) { ...@@ -546,8 +546,18 @@ parserHelper.prototype.get3DRef = function (sheet, range) {
parserHelper.prototype.getEscapeSheetName = function (sheet) { parserHelper.prototype.getEscapeSheetName = function (sheet) {
return rx_test_ws_name.test(sheet) ? sheet : "'" + sheet.replace(/'/g, "''") + "'"; return rx_test_ws_name.test(sheet) ? sheet : "'" + sheet.replace(/'/g, "''") + "'";
}; };
// Проверяем ссылку на валидность для диаграммы или автофильтра /**
parserHelper.prototype.checkDataRange = function (model, dialogType, dataRange, isRows, chartType) { * Проверяем ссылку на валидность для диаграммы или автофильтра
* @param {Workbook} model
* @param {WorkbookView} wb
* @param {c_oAscSelectionDialogType} dialogType
* @param {string} dataRange
* @param {boolean} fullCheck
* @param {boolean} isRows
* @param {c_oAscChartTypeSettings} chartType
* @returns {*}
*/
parserHelper.prototype.checkDataRange = function (model, wb, dialogType, dataRange, fullCheck, isRows, chartType) {
if (c_oAscSelectionDialogType.Chart === dialogType) { if (c_oAscSelectionDialogType.Chart === dialogType) {
dataRange = parserHelp.parse3DRef(dataRange); dataRange = parserHelp.parse3DRef(dataRange);
if (null === dataRange || !model.getWorksheetByName(dataRange.sheet)) if (null === dataRange || !model.getWorksheetByName(dataRange.sheet))
...@@ -559,27 +569,32 @@ parserHelper.prototype.checkDataRange = function (model, dialogType, dataRange, ...@@ -559,27 +569,32 @@ parserHelper.prototype.checkDataRange = function (model, dialogType, dataRange,
if (null === dataRange) if (null === dataRange)
return c_oAscError.ID.DataRangeError; return c_oAscError.ID.DataRangeError;
if (c_oAscSelectionDialogType.Chart === dialogType) { if (fullCheck) {
// Проверка максимального дипазона if (c_oAscSelectionDialogType.Chart === dialogType) {
var maxSeries = 255; // Проверка максимального дипазона
var minStockVal = 4; var maxSeries = 255;
var minStockVal = 4;
var intervalValues, intervalSeries;
if (isRows) { var intervalValues, intervalSeries;
intervalSeries = dataRange.r2 - dataRange.r1 + 1; if (isRows) {
intervalValues = dataRange.c2 - dataRange.c1 + 1; intervalSeries = dataRange.r2 - dataRange.r1 + 1;
} else { intervalValues = dataRange.c2 - dataRange.c1 + 1;
intervalSeries = dataRange.c2 - dataRange.c1 + 1; } else {
intervalValues = dataRange.r2 - dataRange.r1 + 1; intervalSeries = dataRange.c2 - dataRange.c1 + 1;
} intervalValues = dataRange.r2 - dataRange.r1 + 1;
}
if (c_oAscChartTypeSettings.stock === chartType) { if (c_oAscChartTypeSettings.stock === chartType) {
if (minStockVal !== intervalSeries || intervalValues < minStockVal) if (minStockVal !== intervalSeries || intervalValues < minStockVal)
return c_oAscError.ID.StockChartError; return c_oAscError.ID.StockChartError;
} else if (intervalSeries > maxSeries) } else if (intervalSeries > maxSeries)
return c_oAscError.ID.MaxDataSeriesError; return c_oAscError.ID.MaxDataSeriesError;
} else if (c_oAscSelectionDialogType.FormatTable === dialogType) {
// ToDo убрать эту проверку, заменить на более грамотную после правки функции _searchFilters
if ('error' === wb.getWorksheet().autoFilters._searchFilters(dataRange, false))
return c_oAscError.ID.AutoFilterDataRangeError;
}
} }
return c_oAscError.ID.No; return c_oAscError.ID.No;
}; };
......
...@@ -2548,8 +2548,8 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS"; ...@@ -2548,8 +2548,8 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS";
return this.chartPreviewManager.getChartPreviews(chartType); return this.chartPreviewManager.getChartPreviews(chartType);
}, },
asc_checkDataRange: function(dialogType, dataRange, isRows, chartType) { asc_checkDataRange: function(dialogType, dataRange, fullCheck, isRows, chartType) {
return parserHelp.checkDataRange(this.wbModel, dialogType, dataRange, isRows, chartType); return parserHelp.checkDataRange(this.wbModel, this.wb, dialogType, dataRange, fullCheck, isRows, chartType);
}, },
// Для вставки диаграмм в Word // Для вставки диаграмм в Word
......
...@@ -2046,7 +2046,7 @@ var gUndoInsDelCellsFlag = true; ...@@ -2046,7 +2046,7 @@ var gUndoInsDelCellsFlag = true;
if(aWs.TableParts[i].Ref) if(aWs.TableParts[i].Ref)
{ {
tableRange = aWs.TableParts[i].Ref; tableRange = aWs.TableParts[i].Ref;
}; }; // ToDo ';' в конце } ставить не стоить
if(this._rangeHitInAnRange(range,tableRange)) if(this._rangeHitInAnRange(range,tableRange))
return {tableRange: tableRange, id: i}; return {tableRange: tableRange, id: i};
...@@ -2054,36 +2054,36 @@ var gUndoInsDelCellsFlag = true; ...@@ -2054,36 +2054,36 @@ var gUndoInsDelCellsFlag = true;
} }
return null; return null;
}, },
checkApplyFilterOrSort: function(tablePartId) checkApplyFilterOrSort: function(tablePartId)
{ {
var aWs = this._getCurrentWS(); var aWs = this._getCurrentWS();
var result = false; var result = false;
if(tablePartId !== undefined) if(tablePartId !== undefined)
{ {
var tablePart = aWs.TableParts[tablePartId]; var tablePart = aWs.TableParts[tablePartId];
if(tablePart.Ref && ((tablePart.AutoFilter && tablePart.AutoFilter.FilterColumns && tablePart.AutoFilter.FilterColumns.length) || (tablePart && tablePart.SortState && tablePart.SortState.SortConditions && tablePart.SortState.SortConditions[0]))) if(tablePart.Ref && ((tablePart.AutoFilter && tablePart.AutoFilter.FilterColumns && tablePart.AutoFilter.FilterColumns.length) || (tablePart && tablePart.SortState && tablePart.SortState.SortConditions && tablePart.SortState.SortConditions[0])))
result = true; result = true;
} }
else else
{ {
if(aWs.AutoFilter && ((aWs.AutoFilter.FilterColumns && aWs.AutoFilter.FilterColumns.length) || (aWs.AutoFilter.SortState && aWs.AutoFilter.SortState.SortConditions && aWs.AutoFilter.SortState.SortConditions[0]))) if(aWs.AutoFilter && ((aWs.AutoFilter.FilterColumns && aWs.AutoFilter.FilterColumns.length) || (aWs.AutoFilter.SortState && aWs.AutoFilter.SortState.SortConditions && aWs.AutoFilter.SortState.SortConditions[0])))
{ {
result = {isFilterColumns: true, isAutoFilter: true}; result = {isFilterColumns: true, isAutoFilter: true};
} }
else if(aWs.AutoFilter) else if(aWs.AutoFilter)
{ {
result = {isFilterColumns: null, isAutoFilter: true}; result = {isFilterColumns: null, isAutoFilter: true};
} }
else else
{ {
result = {isFilterColumns: null, isAutoFilter: false}; result = {isFilterColumns: null, isAutoFilter: false};
}; };
}; };
return result; return result;
}, },
getAddFormatTableOptions: function(activeCells) getAddFormatTableOptions: function(activeCells)
{ {
...@@ -3723,6 +3723,9 @@ var gUndoInsDelCellsFlag = true; ...@@ -3723,6 +3723,9 @@ var gUndoInsDelCellsFlag = true;
_searchFilters: function(activeCells, isAll) _searchFilters: function(activeCells, isAll)
{ {
// ToDo по хорошему стоит порефакторить код. ws.model легко можно заменить на aWs (хотя aWs как мне кажется не совсем хорошее название)
// Условие на вхождение диапазона заменить на containsRange. Возвращаемое значение привести к одному типу
// После правки поправить функцию parserHelper.checkDataRange
var ws = this.worksheet; var ws = this.worksheet;
var aWs = this._getCurrentWS(); var aWs = this._getCurrentWS();
var allF =[]; var allF =[];
...@@ -6225,6 +6228,7 @@ var gUndoInsDelCellsFlag = true; ...@@ -6225,6 +6228,7 @@ var gUndoInsDelCellsFlag = true;
//если хотя бы одна ячейка попадает внутрь tableRange //если хотя бы одна ячейка попадает внутрь tableRange
_rangeHitInAnRange: function(range,tableRange) _rangeHitInAnRange: function(range,tableRange)
{ {
// ToDo стоит заменить на range.isIntersect
for(var r = range.r1; r <= range.r2; r++) for(var r = range.r1; r <= range.r2; r++)
{ {
for(var c = range.c1; c <= range.c2; c++) for(var c = range.c1; c <= range.c2; c++)
......
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