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) {
parserHelper.prototype.getEscapeSheetName = function (sheet) {
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) {
dataRange = parserHelp.parse3DRef(dataRange);
if (null === dataRange || !model.getWorksheetByName(dataRange.sheet))
......@@ -559,6 +569,7 @@ parserHelper.prototype.checkDataRange = function (model, dialogType, dataRange,
if (null === dataRange)
return c_oAscError.ID.DataRangeError;
if (fullCheck) {
if (c_oAscSelectionDialogType.Chart === dialogType) {
// Проверка максимального дипазона
var maxSeries = 255;
......@@ -578,8 +589,12 @@ parserHelper.prototype.checkDataRange = function (model, dialogType, dataRange,
return c_oAscError.ID.StockChartError;
} else if (intervalSeries > maxSeries)
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;
};
......
......@@ -2548,8 +2548,8 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS";
return this.chartPreviewManager.getChartPreviews(chartType);
},
asc_checkDataRange: function(dialogType, dataRange, isRows, chartType) {
return parserHelp.checkDataRange(this.wbModel, dialogType, dataRange, isRows, chartType);
asc_checkDataRange: function(dialogType, dataRange, fullCheck, isRows, chartType) {
return parserHelp.checkDataRange(this.wbModel, this.wb, dialogType, dataRange, fullCheck, isRows, chartType);
},
// Для вставки диаграмм в Word
......
......@@ -2046,7 +2046,7 @@ var gUndoInsDelCellsFlag = true;
if(aWs.TableParts[i].Ref)
{
tableRange = aWs.TableParts[i].Ref;
};
}; // ToDo ';' в конце } ставить не стоить
if(this._rangeHitInAnRange(range,tableRange))
return {tableRange: tableRange, id: i};
......@@ -3723,6 +3723,9 @@ var gUndoInsDelCellsFlag = true;
_searchFilters: function(activeCells, isAll)
{
// ToDo по хорошему стоит порефакторить код. ws.model легко можно заменить на aWs (хотя aWs как мне кажется не совсем хорошее название)
// Условие на вхождение диапазона заменить на containsRange. Возвращаемое значение привести к одному типу
// После правки поправить функцию parserHelper.checkDataRange
var ws = this.worksheet;
var aWs = this._getCurrentWS();
var allF =[];
......@@ -6225,6 +6228,7 @@ var gUndoInsDelCellsFlag = true;
//если хотя бы одна ячейка попадает внутрь tableRange
_rangeHitInAnRange: function(range,tableRange)
{
// ToDo стоит заменить на range.isIntersect
for(var r = range.r1; r <= range.r2; r++)
{
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