Commit efff1ae9 authored by Dmitry.Vikulov's avatar Dmitry.Vikulov Committed by Alexander.Trofimov

Fix Bug 20811 - [Charts] Не срабатывает undo/redo для изменения диапазона...

Fix Bug 20811 - [Charts] Не срабатывает undo/redo для изменения диапазона данных во фрейме с диаграммой

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@50411 954022d7-b5bf-4e40-9824-e11837661b57
parent a6934e90
...@@ -794,6 +794,9 @@ asc_CChart.prototype = { ...@@ -794,6 +794,9 @@ asc_CChart.prototype = {
Undo: function(type, data) { Undo: function(type, data) {
var api = window["Asc"]["editor"];
var ws = api.wb.getWorksheet();
switch (type) { switch (type) {
// type, subType, styleId // type, subType, styleId
...@@ -821,8 +824,8 @@ asc_CChart.prototype = { ...@@ -821,8 +824,8 @@ asc_CChart.prototype = {
// range // range
case historyitem_Chart_RangeInterval: case historyitem_Chart_RangeInterval:
this.range.interval = data.oldValue; this.range.interval = data.oldValue;
if ( this.worksheet ) { if ( ws ) {
this.range.intervalObject = convertFormula(this.range.interval, this.worksheet); this.range.intervalObject = convertFormula( this.range.interval, ws );
this.rebuildSeries(); this.rebuildSeries();
} }
break; break;
...@@ -893,14 +896,17 @@ asc_CChart.prototype = { ...@@ -893,14 +896,17 @@ asc_CChart.prototype = {
break; break;
} }
if ( this.worksheet ) { if ( ws ) {
this.worksheet.objectRender.rebuildChartGraphicObjects(); ws.objectRender.rebuildChartGraphicObjects();
this.worksheet.objectRender.showDrawingObjects(false); ws.objectRender.showDrawingObjects(false);
} }
}, },
Redo: function(type, data) { Redo: function(type, data) {
var api = window["Asc"]["editor"];
var ws = api.wb.getWorksheet();
// type, subType, styleId // type, subType, styleId
switch (type) { switch (type) {
case historyitem_Chart_Type: case historyitem_Chart_Type:
...@@ -927,8 +933,8 @@ asc_CChart.prototype = { ...@@ -927,8 +933,8 @@ asc_CChart.prototype = {
// range // range
case historyitem_Chart_RangeInterval: case historyitem_Chart_RangeInterval:
this.range.interval = data.newValue; this.range.interval = data.newValue;
if ( this.worksheet ) { if ( ws ) {
this.range.intervalObject = convertFormula(this.range.interval, this.worksheet); this.range.intervalObject = convertFormula( this.range.interval, ws );
this.rebuildSeries(); this.rebuildSeries();
} }
break; break;
...@@ -998,9 +1004,9 @@ asc_CChart.prototype = { ...@@ -998,9 +1004,9 @@ asc_CChart.prototype = {
this.legend.bOverlay = data.newValue; this.legend.bOverlay = data.newValue;
break; break;
} }
if ( this.worksheet ) { if ( ws ) {
this.worksheet.objectRender.rebuildChartGraphicObjects(); ws.objectRender.rebuildChartGraphicObjects();
this.worksheet.objectRender.showDrawingObjects(false); ws.objectRender.showDrawingObjects(false);
} }
} }
} }
...@@ -3277,12 +3283,12 @@ function DrawingObjects() { ...@@ -3277,12 +3283,12 @@ function DrawingObjects() {
if ( !drawingObject.flags.anchorUpdated ) if ( !drawingObject.flags.anchorUpdated )
drawingObject.updateAnchorPosition(); drawingObject.updateAnchorPosition();
// Shape render // Shape render (drawForPrint)
if ( drawingObject.isGraphicObject() ) { if ( drawingObject.isGraphicObject() ) {
if ( printOptions ) { if ( printOptions ) {
var left = worksheet.getCellLeft(printOptions.pageRange.c1, 3) - worksheet.getCellLeft(0, 3); var left = worksheet.getCellLeft(printOptions.pageRange.c1, 3) - 2 * worksheet.getCellLeft(0, 3) - ptToMm(printOptions.margin.left);
var top = worksheet.getCellTop(printOptions.pageRange.r1, 3) - worksheet.getCellTop(0, 3); var top = worksheet.getCellTop(printOptions.pageRange.r1, 3) - 2 * worksheet.getCellTop(0, 3) - ptToMm(printOptions.margin.left);
var tx = drawingObject.graphicObject.transform.tx; var tx = drawingObject.graphicObject.transform.tx;
var ty = drawingObject.graphicObject.transform.ty; var ty = drawingObject.graphicObject.transform.ty;
...@@ -4000,14 +4006,21 @@ function DrawingObjects() { ...@@ -4000,14 +4006,21 @@ function DrawingObjects() {
function editChart(drawingObject) { function editChart(drawingObject) {
var _interval = drawingObject.graphicObject.chart.range.interval;
drawingObject.graphicObject.chart.range.intervalObject = worksheet._getRange(oBBoxTo.c1, oBBoxTo.r1, oBBoxTo.c2, oBBoxTo.r2); drawingObject.graphicObject.chart.range.intervalObject = worksheet._getRange(oBBoxTo.c1, oBBoxTo.r1, oBBoxTo.c2, oBBoxTo.r2);
_this.calcChartInterval(drawingObject.graphicObject.chart); _this.calcChartInterval(drawingObject.graphicObject.chart);
drawingObject.graphicObject.chart.rebuildSeries(); drawingObject.graphicObject.chart.rebuildSeries();
drawingObject.graphicObject.recalculate(); drawingObject.graphicObject.recalculate();
_this.editChartDrawingObject(drawingObject.graphicObject.chart);
History.Add(g_oUndoRedoGraphicObjects, historyitem_AutoShapes_RecalculateTransformUndo, null, null, new UndoRedoDataGraphicObjects(drawingObject.graphicObject.Get_Id(), new UndoRedoDataGOSingleProp(null, null)));
History.Add(g_oUndoRedoGraphicObjects, historyitem_Chart_RangeInterval, null, null, new UndoRedoDataGraphicObjects(drawingObject.graphicObject.chart.Get_Id(), new UndoRedoDataGOSingleProp(_interval, drawingObject.graphicObject.chart.range.interval)));
History.Add(g_oUndoRedoGraphicObjects, historyitem_AutoShapes_RecalculateTransformRedo, null, null, new UndoRedoDataGraphicObjects(drawingObject.graphicObject.chart.Get_Id(), new UndoRedoDataGOSingleProp(null, null)));
} }
var bRedraw = false;
History.Create_NewPoint();
History.StartTransaction();
for (var i = 0; i < aObjects.length; i++) { for (var i = 0; i < aObjects.length; i++) {
var drawingObject = aObjects[i]; var drawingObject = aObjects[i];
...@@ -4016,13 +4029,18 @@ function DrawingObjects() { ...@@ -4016,13 +4029,18 @@ function DrawingObjects() {
if ( oBBoxFrom.isEqual(bbox) ) { if ( oBBoxFrom.isEqual(bbox) ) {
if ( bResize && drawingObject.graphicObject.selected ) { if ( bResize && drawingObject.graphicObject.selected ) {
editChart(drawingObject); editChart(drawingObject);
return; bRedraw = true;
break;
} }
else else
editChart(drawingObject); editChart(drawingObject);
} }
} }
} }
History.EndTransaction();
if ( bRedraw )
_this.showDrawingObjects(true);
} }
} }
...@@ -4831,6 +4849,11 @@ function DrawingObjects() { ...@@ -4831,6 +4849,11 @@ function DrawingObjects() {
return tmp; return tmp;
} }
function ptToMm(val) {
var tmp = val * ascCvtRatio(1, 3);
return tmp;
}
function mmToPx(val) { function mmToPx(val) {
var tmp = val * ascCvtRatio(3, 0); var tmp = val * ascCvtRatio(3, 0);
return tmp; return tmp;
......
...@@ -1596,7 +1596,7 @@ CChartAsGroup.prototype = ...@@ -1596,7 +1596,7 @@ CChartAsGroup.prototype =
this.hAxisTitle = new CChartTitle(this, CHART_TITLE_TYPE_H_AXIS); this.hAxisTitle = new CChartTitle(this, CHART_TITLE_TYPE_H_AXIS);
this.hAxisTitle.readFromBinary(r); this.hAxisTitle.readFromBinary(r);
} }
this.chart.Read_FromBinary2(r); this.chart.Read_FromBinary2(r, false);
this.spPr.Read_FromBinary2(r); this.spPr.Read_FromBinary2(r);
var chartLeft =this.drawingObjects.convertMetric((parseInt($("#ws-canvas").css('width')) / 2) - c_oAscChartDefines.defaultChartWidth / 2, 0, 3); var chartLeft =this.drawingObjects.convertMetric((parseInt($("#ws-canvas").css('width')) / 2) - c_oAscChartDefines.defaultChartWidth / 2, 0, 3);
var chartTop = this.drawingObjects.convertMetric((parseInt($("#ws-canvas").css('height')) / 2) - c_oAscChartDefines.defaultChartHeight / 2, 0, 3); var chartTop = this.drawingObjects.convertMetric((parseInt($("#ws-canvas").css('height')) / 2) - c_oAscChartDefines.defaultChartHeight / 2, 0, 3);
......
...@@ -1842,7 +1842,7 @@ ...@@ -1842,7 +1842,7 @@
this._drawSelection(); this._drawSelection();
} }
this._drawGraphic(); this._drawGraphic();
this.objectRender.showDrawingObjectsEx(true); this.objectRender.showDrawingObjects(true);
return this; return this;
}, },
......
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