From 735714ede331a447ad90f1521ea2c49fdaa1b5c2 Mon Sep 17 00:00:00 2001 From: "Alexander.Trofimov" Date: Wed, 6 Jul 2016 13:19:10 +0300 Subject: [PATCH 1/3] add method GetActiveCell to api builder ApiWorksheet --- cell/apiBuilder.js | 587 +++++++++++++++++++++++---------------------- 1 file changed, 298 insertions(+), 289 deletions(-) diff --git a/cell/apiBuilder.js b/cell/apiBuilder.js index 3b95dffe08..ac6bde1a7d 100644 --- a/cell/apiBuilder.js +++ b/cell/apiBuilder.js @@ -32,317 +32,326 @@ "use strict"; -(function(window, builder) { - /** - * @global - * @class - * @name Api - */ - var Api = window["Asc"]["spreadsheet_api"]; +(function (window, builder) { + /** + * @global + * @class + * @name Api + */ + var Api = window["Asc"]["spreadsheet_api"]; - /** - * Class representing a sheet. - * @constructor - */ - function ApiWorksheet(worksheet) { - this.worksheet = worksheet; - } + /** + * Class representing a sheet. + * @constructor + */ + function ApiWorksheet(worksheet, worksheetView) { + this.worksheet = worksheet; + this.worksheetView = worksheetView; + } - /** - * Class representing a range. - * @constructor - */ - function ApiRange(range) { - this.range = range; - } + /** + * Class representing a range. + * @constructor + */ + function ApiRange(range) { + this.range = range; + } - /** - * Class representing a graphical object. - * @constructor - */ - function ApiDrawing(Drawing) - { - this.Drawing = Drawing; - } + /** + * Class representing a graphical object. + * @constructor + */ + function ApiDrawing(Drawing) { + this.Drawing = Drawing; + } - /** - * This type specifies the types, create charts - * @typedef {("bar" | "barStacked" | "barStackedPercent" | "bar3D" | "barStacked3D" | "barStackedPercent3D" | "barStackedPercent3DPerspective" | "horizontalBar" | "horizontalBarStacked" | "horizontalBarStackedPercent" | "horizontalBar3D" | "horizontalBarStacked3D" | "horizontalBarStackedPercent3D" | "lineNormal" | "lineStacked" | "lineStackedPercent" | "line3D" | "pie" | "pie3D" | "doughnut" | "scatter" | "stock")} ChartType - */ + /** + * This type specifies the types, create charts + * @typedef {("bar" | "barStacked" | "barStackedPercent" | "bar3D" | "barStacked3D" | "barStackedPercent3D" | "barStackedPercent3DPerspective" | "horizontalBar" | "horizontalBarStacked" | "horizontalBarStackedPercent" | "horizontalBar3D" | "horizontalBarStacked3D" | "horizontalBarStackedPercent3D" | "lineNormal" | "lineStacked" | "lineStackedPercent" | "line3D" | "pie" | "pie3D" | "doughnut" | "scatter" | "stock")} ChartType + */ - /** - * Class representing a Chart. - * @constructor - * - */ - function ApiChart(Chart) - { - ApiChart.superclass.constructor.call(this, Chart.parent); - this.Chart = Chart; - } - AscCommon.extendClass(ApiChart, ApiDrawing); + /** + * Class representing a Chart. + * @constructor + * + */ + function ApiChart(Chart) { + ApiChart.superclass.constructor.call(this, Chart.parent); + this.Chart = Chart; + } - /** - * Returns an object that represents the active sheet - * @memberof Api - * @returns {ApiWorksheet} - */ - Api.prototype.GetActiveSheet = function() { - return new ApiWorksheet(this.wbModel.getWorksheet(this.wbModel.getActive())); - }; + AscCommon.extendClass(ApiChart, ApiDrawing); - /** - * Set sheet name - * @memberof ApiWorksheet - * @param {string} name - */ - ApiWorksheet.prototype.SetName = function(name) { - this.worksheet.setName(name); - }; + /** + * Returns an object that represents the active sheet + * @memberof Api + * @returns {ApiWorksheet} + */ + Api.prototype.GetActiveSheet = function () { + var index = this.wbModel.getActive(); + return new ApiWorksheet(this.wbModel.getWorksheet(index), this.wb.getWorksheet(index)); + }; - /** - * Returns an object that represents the range - * @memberof ApiWorksheet - * @param {string} sRange - * @returns {ApiRange} - */ - ApiWorksheet.prototype.GetRange = function(sRange) { - return new ApiRange(this.worksheet.getRange2(sRange)); - }; + /** + * Returns an object that represents the active cell + * @memberof ApiWorksheet + * @returns {ApiRange} + */ + ApiWorksheet.prototype.GetActiveCell = function () { + var ar = this.worksheetView.activeRange; + return new ApiRange(this.worksheet.getCell3(ar.startRow, ar.startCol)); + }; - /** - * Format as table - * @memberof ApiWorksheet - * @param {string} sRange - */ - ApiWorksheet.prototype.FormatAsTable = function(sRange) { - this.worksheet.autoFilters.addAutoFilter('TableStyleLight9', AscCommonExcel.g_oRangeCache.getAscRange(sRange)); - }; + /** + * Set sheet name + * @memberof ApiWorksheet + * @param {string} name + */ + ApiWorksheet.prototype.SetName = function (name) { + this.worksheet.setName(name); + }; - /** - * Set column width - * @memberof ApiWorksheet - * @param {number} column - * @param {number} width - */ - ApiWorksheet.prototype.SetColumnWidth = function(column, width) { - this.worksheet.setColWidth(width, column, column); - }; + /** + * Returns an object that represents the range + * @memberof ApiWorksheet + * @param {string} sRange + * @returns {ApiRange} + */ + ApiWorksheet.prototype.GetRange = function (sRange) { + return new ApiRange(this.worksheet.getRange2(sRange)); + }; - /** - * Set column width - * @memberof ApiWorksheet - * @param {string} sDataRange - * @param {bool} bInRows - * @param {ChartType} sType - * @param {number} nStyleIndex - * @param {number} nFromCol - * @param {number} nFromRow - * @param {number} nToCol - * @param {number} nToRow - */ - ApiWorksheet.prototype.AddChart = function(sDataRange, bInRows, sType, nStyleIndex, nFromCol, nFromRow, nToCol, nToRow) { + /** + * Format as table + * @memberof ApiWorksheet + * @param {string} sRange + */ + ApiWorksheet.prototype.FormatAsTable = function (sRange) { + this.worksheet.autoFilters.addAutoFilter('TableStyleLight9', AscCommonExcel.g_oRangeCache.getAscRange(sRange)); + }; - History.Create_NewPoint(); - var settings = new AscCommon.asc_ChartSettings(); - switch (sType) - { - case "bar" : - { - settings.type = Asc.c_oAscChartTypeSettings.barNormal; - break; - } - case "barStacked": - { - settings.type = Asc.c_oAscChartTypeSettings.barStacked; - break; - } - case "barStackedPercent": - { - settings.type = Asc.c_oAscChartTypeSettings.barStackedPer; - break; - } - case "bar3D": - { - settings.type = Asc.c_oAscChartTypeSettings.barNormal3d; - break; - } - case "barStacked3D": - { - settings.type = Asc.c_oAscChartTypeSettings.barStacked3d; - break; - } - case "barStackedPercent3D": - { - settings.type = Asc.c_oAscChartTypeSettings.barStackedPer3d; - break; - } - case "barStackedPercent3DPerspective": - { - settings.type = Asc.c_oAscChartTypeSettings.barNormal3dPerspective; - break; - } - case "horizontalBar": - { - settings.type = Asc.c_oAscChartTypeSettings.hBarNormal; - break; - } - case "horizontalBarStacked": - { - settings.type = Asc.c_oAscChartTypeSettings.hBarStacked; - break; - } - case "horizontalBarStackedPercent": - { - settings.type = Asc.c_oAscChartTypeSettings.hBarStackedPer; - break; - } - case "horizontalBar3D": - { - settings.type = Asc.c_oAscChartTypeSettings.hBarNormal3d; - break; - } - case "horizontalBarStacked3D": - { - settings.type = Asc.c_oAscChartTypeSettings.hBarStacked3d; - break; - } - case "horizontalBarStackedPercent3D": - { - settings.type = Asc.c_oAscChartTypeSettings.hBarStackedPer3d; - break; - } - case "lineNormal": - { - settings.type = Asc.c_oAscChartTypeSettings.lineNormal; - break; - } - case "lineStacked": - { - settings.type = Asc.c_oAscChartTypeSettings.lineStacked; - break; - } - case "lineStackedPercent": - { - settings.type = Asc.c_oAscChartTypeSettings.lineStackedPer; - break; - } - case "line3D": - { - settings.type = Asc.c_oAscChartTypeSettings.line3d; - break; - } - case "pie": - { - settings.type = Asc.c_oAscChartTypeSettings.pie; - break; - } - case "pie3D": - { - settings.type = Asc.c_oAscChartTypeSettings.pie3d; - break; - } - case "doughnut": - { - settings.type = Asc.c_oAscChartTypeSettings.doughnut; - break; - } - case "scatter": - { - settings.type = Asc.c_oAscChartTypeSettings.scatter; - break; - } - case "stock": - { - settings.type = Asc.c_oAscChartTypeSettings.stock; - break; - } - } - settings.style = nStyleIndex; - settings.inColumns = !bInRows; - settings.range = sDataRange; - var oChart = AscFormat.DrawingObjectsController.prototype.getChartSpace(this.worksheet, settings); - oChart.setWorksheet(this.worksheet); - oChart.setBFromSerialize(true); - oChart.addToDrawingObjects(); - oChart.setDrawingBaseCoords(nFromCol, 0, nFromRow, 0, nToCol, 0, nToRow, 0, 0, 0, 0, 0); - if(AscFormat.isRealNumber(nStyleIndex)) - { - oChart.setStyle(nStyleIndex); - } - }; + /** + * Set column width + * @memberof ApiWorksheet + * @param {number} column + * @param {number} width + */ + ApiWorksheet.prototype.SetColumnWidth = function (column, width) { + this.worksheet.setColWidth(width, column, column); + }; - /** - * Set cell value - * @memberof ApiRange - * @param {string} val - */ - ApiRange.prototype.SetValue = function(val) { - this.range.setValue(val); - }; + /** + * Set column width + * @memberof ApiWorksheet + * @param {string} sDataRange + * @param {bool} bInRows + * @param {ChartType} sType + * @param {number} nStyleIndex + * @param {number} nFromCol + * @param {number} nFromRow + * @param {number} nToCol + * @param {number} nToRow + */ + ApiWorksheet.prototype.AddChart = + function (sDataRange, bInRows, sType, nStyleIndex, nFromCol, nFromRow, nToCol, nToRow) { - /** - * Set text color in the rgb format. - * @param {byte} r - * @param {byte} g - * @param {byte} b - */ - ApiRange.prototype.SetFontColor = function(r, g, b) { - this.range.setFontcolor(new AscCommonExcel.RgbColor((r << 16) + (g << 8) + b)); - }; + History.Create_NewPoint(); + var settings = new AscCommon.asc_ChartSettings(); + switch (sType) { + case "bar" : + { + settings.type = Asc.c_oAscChartTypeSettings.barNormal; + break; + } + case "barStacked": + { + settings.type = Asc.c_oAscChartTypeSettings.barStacked; + break; + } + case "barStackedPercent": + { + settings.type = Asc.c_oAscChartTypeSettings.barStackedPer; + break; + } + case "bar3D": + { + settings.type = Asc.c_oAscChartTypeSettings.barNormal3d; + break; + } + case "barStacked3D": + { + settings.type = Asc.c_oAscChartTypeSettings.barStacked3d; + break; + } + case "barStackedPercent3D": + { + settings.type = Asc.c_oAscChartTypeSettings.barStackedPer3d; + break; + } + case "barStackedPercent3DPerspective": + { + settings.type = Asc.c_oAscChartTypeSettings.barNormal3dPerspective; + break; + } + case "horizontalBar": + { + settings.type = Asc.c_oAscChartTypeSettings.hBarNormal; + break; + } + case "horizontalBarStacked": + { + settings.type = Asc.c_oAscChartTypeSettings.hBarStacked; + break; + } + case "horizontalBarStackedPercent": + { + settings.type = Asc.c_oAscChartTypeSettings.hBarStackedPer; + break; + } + case "horizontalBar3D": + { + settings.type = Asc.c_oAscChartTypeSettings.hBarNormal3d; + break; + } + case "horizontalBarStacked3D": + { + settings.type = Asc.c_oAscChartTypeSettings.hBarStacked3d; + break; + } + case "horizontalBarStackedPercent3D": + { + settings.type = Asc.c_oAscChartTypeSettings.hBarStackedPer3d; + break; + } + case "lineNormal": + { + settings.type = Asc.c_oAscChartTypeSettings.lineNormal; + break; + } + case "lineStacked": + { + settings.type = Asc.c_oAscChartTypeSettings.lineStacked; + break; + } + case "lineStackedPercent": + { + settings.type = Asc.c_oAscChartTypeSettings.lineStackedPer; + break; + } + case "line3D": + { + settings.type = Asc.c_oAscChartTypeSettings.line3d; + break; + } + case "pie": + { + settings.type = Asc.c_oAscChartTypeSettings.pie; + break; + } + case "pie3D": + { + settings.type = Asc.c_oAscChartTypeSettings.pie3d; + break; + } + case "doughnut": + { + settings.type = Asc.c_oAscChartTypeSettings.doughnut; + break; + } + case "scatter": + { + settings.type = Asc.c_oAscChartTypeSettings.scatter; + break; + } + case "stock": + { + settings.type = Asc.c_oAscChartTypeSettings.stock; + break; + } + } + settings.style = nStyleIndex; + settings.inColumns = !bInRows; + settings.range = sDataRange; + var oChart = AscFormat.DrawingObjectsController.prototype.getChartSpace(this.worksheet, settings); + oChart.setWorksheet(this.worksheet); + oChart.setBFromSerialize(true); + oChart.addToDrawingObjects(); + oChart.setDrawingBaseCoords(nFromCol, 0, nFromRow, 0, nToCol, 0, nToRow, 0, 0, 0, 0, 0); + if (AscFormat.isRealNumber(nStyleIndex)) { + oChart.setStyle(nStyleIndex); + } + }; - /** - * Set font size - * @param {number} size - */ - ApiRange.prototype.SetFontSize = function(size) { - this.range.setFontsize(size); - }; + /** + * Set cell value + * @memberof ApiRange + * @param {string} val + */ + ApiRange.prototype.SetValue = function (val) { + this.range.setValue(val); + }; - /** - * Set font name - * @param {string} name - */ - ApiRange.prototype.SetFontName = function(name) { - this.range.setFontname(name); - }; + /** + * Set text color in the rgb format. + * @param {byte} r + * @param {byte} g + * @param {byte} b + */ + ApiRange.prototype.SetFontColor = function (r, g, b) { + this.range.setFontcolor(new AscCommonExcel.RgbColor((r << 16) + (g << 8) + b)); + }; - /** - * Set align vertical - * @param {'center' | 'bottom' | 'top'} value - */ - ApiRange.prototype.SetAlignVertical = function(value) { - this.range.setAlignVertical(value); - }; + /** + * Set font size + * @param {number} size + */ + ApiRange.prototype.SetFontSize = function (size) { + this.range.setFontsize(size); + }; - /** - * Set align horizontal - * @param {'left' | 'right' | 'center' | 'justify'} value - */ - ApiRange.prototype.SetAlignHorizontal = function(value) { - this.range.setAlignHorizontal(value); - }; + /** + * Set font name + * @param {string} name + */ + ApiRange.prototype.SetFontName = function (name) { + this.range.setFontname(name); + }; + + /** + * Set align vertical + * @param {'center' | 'bottom' | 'top'} value + */ + ApiRange.prototype.SetAlignVertical = function (value) { + this.range.setAlignVertical(value); + }; + + /** + * Set align horizontal + * @param {'left' | 'right' | 'center' | 'justify'} value + */ + ApiRange.prototype.SetAlignHorizontal = function (value) { + this.range.setAlignHorizontal(value); + }; + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // Export + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + Api.prototype["GetActiveSheet"] = Api.prototype.GetActiveSheet; + ApiWorksheet.prototype["GetActiveCell"] = ApiWorksheet.prototype.GetActiveCell; + ApiWorksheet.prototype["SetName"] = ApiWorksheet.prototype.SetName; + ApiWorksheet.prototype["GetRange"] = ApiWorksheet.prototype.GetRange; + ApiWorksheet.prototype["FormatAsTable"] = ApiWorksheet.prototype.FormatAsTable; + ApiWorksheet.prototype["SetColumnWidth"] = ApiWorksheet.prototype.SetColumnWidth; + ApiWorksheet.prototype["AddChart"] = ApiWorksheet.prototype.AddChart; - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // Export - ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - Api.prototype["GetActiveSheet"] = Api.prototype.GetActiveSheet; - - ApiWorksheet.prototype["SetName"] = ApiWorksheet.prototype.SetName; - ApiWorksheet.prototype["GetRange"] = ApiWorksheet.prototype.GetRange; - ApiWorksheet.prototype["FormatAsTable"] = ApiWorksheet.prototype.FormatAsTable; - ApiWorksheet.prototype["SetColumnWidth"] = ApiWorksheet.prototype.SetColumnWidth; - ApiWorksheet.prototype["AddChart"] = ApiWorksheet.prototype.AddChart; - - ApiRange.prototype["SetValue"] = ApiRange.prototype.SetValue; - ApiRange.prototype["SetFontColor"] = ApiRange.prototype.SetFontColor; - ApiRange.prototype["SetFontSize"] = ApiRange.prototype.SetFontSize; - ApiRange.prototype["SetFontName"] = ApiRange.prototype.SetFontName; - ApiRange.prototype["SetAlignVertical"] = ApiRange.prototype.SetAlignVertical; - ApiRange.prototype["SetAlignHorizontal"] = ApiRange.prototype.SetAlignHorizontal; + ApiRange.prototype["SetValue"] = ApiRange.prototype.SetValue; + ApiRange.prototype["SetFontColor"] = ApiRange.prototype.SetFontColor; + ApiRange.prototype["SetFontSize"] = ApiRange.prototype.SetFontSize; + ApiRange.prototype["SetFontName"] = ApiRange.prototype.SetFontName; + ApiRange.prototype["SetAlignVertical"] = ApiRange.prototype.SetAlignVertical; + ApiRange.prototype["SetAlignHorizontal"] = ApiRange.prototype.SetAlignHorizontal; }(window, null)); From 571d2dd977afa7538603c80174fe4b84c051b6ed Mon Sep 17 00:00:00 2001 From: "Alexander.Trofimov" Date: Wed, 6 Jul 2016 14:16:08 +0300 Subject: [PATCH 2/3] cell api builder: add methods GetRow, GetCol, GetRangeByNumber --- cell/apiBuilder.js | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/cell/apiBuilder.js b/cell/apiBuilder.js index ac6bde1a7d..5c5d160fcc 100644 --- a/cell/apiBuilder.js +++ b/cell/apiBuilder.js @@ -123,6 +123,17 @@ return new ApiRange(this.worksheet.getRange2(sRange)); }; + /** + * Returns an object that represents the range + * @memberof ApiWorksheet + * @param {Number} row + * @param {Number} col + * @returns {ApiRange} + */ + ApiWorksheet.prototype.GetRangeByNumber = function (row, col) { + return new ApiRange(this.worksheet.getCell3(row, col)); + }; + /** * Format as table * @memberof ApiWorksheet @@ -284,6 +295,23 @@ } }; + /** + * Get cell row + * @memberof ApiRange + * @returns {Number} + */ + ApiRange.prototype.GetRow = function () { + return this.range.bbox.r1; + }; + /** + * Get cell column + * @memberof ApiRange + * @returns {Number} + */ + ApiRange.prototype.GetCol = function () { + return this.range.bbox.c1; + }; + /** * Set cell value * @memberof ApiRange @@ -344,10 +372,13 @@ ApiWorksheet.prototype["GetActiveCell"] = ApiWorksheet.prototype.GetActiveCell; ApiWorksheet.prototype["SetName"] = ApiWorksheet.prototype.SetName; ApiWorksheet.prototype["GetRange"] = ApiWorksheet.prototype.GetRange; + ApiWorksheet.prototype["GetRangeByNumber"] = ApiWorksheet.prototype.GetRangeByNumber; ApiWorksheet.prototype["FormatAsTable"] = ApiWorksheet.prototype.FormatAsTable; ApiWorksheet.prototype["SetColumnWidth"] = ApiWorksheet.prototype.SetColumnWidth; ApiWorksheet.prototype["AddChart"] = ApiWorksheet.prototype.AddChart; + ApiRange.prototype["GetRow"] = ApiRange.prototype.GetRow; + ApiRange.prototype["GetCol"] = ApiRange.prototype.GetCol; ApiRange.prototype["SetValue"] = ApiRange.prototype.SetValue; ApiRange.prototype["SetFontColor"] = ApiRange.prototype.SetFontColor; ApiRange.prototype["SetFontSize"] = ApiRange.prototype.SetFontSize; From 53af754cbaa213350cdaaa59c2fd7946bbfc6bd7 Mon Sep 17 00:00:00 2001 From: Sergey Luzyanin Date: Wed, 6 Jul 2016 15:03:27 +0300 Subject: [PATCH 3/3] Convert the formula instead of calling the plugin --- word/Editor/GraphicObjects/GraphicObjects.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/word/Editor/GraphicObjects/GraphicObjects.js b/word/Editor/GraphicObjects/GraphicObjects.js index 34e3c2932d..6886d792d7 100644 --- a/word/Editor/GraphicObjects/GraphicObjects.js +++ b/word/Editor/GraphicObjects/GraphicObjects.js @@ -1256,7 +1256,10 @@ CGraphicObjects.prototype = handleOleObjectDoubleClick: function(drawing, oleObject, e, x, y, pageIndex) { - if(false === this.document.Document_Is_SelectionLocked(changestype_Drawing_Props)) + if(drawing && drawing.ParaMath){ + drawing.Convert_ToMathObject(); + } + else if(false === this.document.Document_Is_SelectionLocked(changestype_Drawing_Props)) { var pluginData = new Asc.CPluginData(); pluginData.setAttribute("data", oleObject.m_sData);