9101 lines
466 KiB
JavaScript
9101 lines
466 KiB
JavaScript
/*
|
|
* (c) Copyright Ascensio System SIA 2010-2015
|
|
*
|
|
* This program is a free software product. You can redistribute it and/or
|
|
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
|
* version 3 as published by the Free Software Foundation. In accordance with
|
|
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
|
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
|
* of any third-party rights.
|
|
*
|
|
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
|
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
|
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
|
*
|
|
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
|
* EU, LV-1021.
|
|
*
|
|
* The interactive user interfaces in modified source and object code versions
|
|
* of the Program must display Appropriate Legal Notices, as required under
|
|
* Section 5 of the GNU AGPL version 3.
|
|
*
|
|
* Pursuant to Section 7(b) of the License you must retain the original Product
|
|
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
|
* grant you any rights under trademark law for use of our trademarks.
|
|
*
|
|
* All the Product's GUI elements, including illustrations and icon sets, as
|
|
* well as technical writing content are licensed under the terms of the
|
|
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
|
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
|
*
|
|
*/
|
|
"use strict";
|
|
var EFFECT_NONE = 0;
|
|
var EFFECT_SUBTLE = 1;
|
|
var EFFECT_MODERATE = 2;
|
|
var EFFECT_INTENSE = 3;
|
|
var CHART_STYLE_MANAGER = null;
|
|
var SKIP_LBL_LIMIT = 100;
|
|
function ReadWBModel(oDrawing, oReader) {
|
|
if (isRealObject(window["Asc"]) && isRealObject(window["Asc"]["editor"])) {
|
|
if (readBool(oReader)) {
|
|
var api = window["Asc"]["editor"];
|
|
if (api.wbModel) {
|
|
var id = readString(oReader);
|
|
oDrawing.worksheet = api.wbModel.getWorksheetById(id);
|
|
}
|
|
} else {
|
|
oDrawing.worksheet = null;
|
|
}
|
|
}
|
|
}
|
|
function checkBlackUnifill(unifill, bLines) {
|
|
if (unifill && unifill.fill && unifill.fill.color) {
|
|
var RGBA = unifill.fill.color.RGBA;
|
|
if (RGBA.R === 0 && RGBA.G === 0 && RGBA.B === 0) {
|
|
if (bLines) {
|
|
RGBA.R = 134;
|
|
RGBA.G = 134;
|
|
RGBA.B = 134;
|
|
} else {
|
|
RGBA.R = 255;
|
|
RGBA.G = 255;
|
|
RGBA.B = 255;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
function BBoxInfo(worksheet, bbox) {
|
|
this.worksheet = worksheet;
|
|
if (window["Asc"] && typeof window["Asc"].Range === "function") {
|
|
this.bbox = window["Asc"].Range(bbox.c1, bbox.r1, bbox.c2, bbox.r2, false);
|
|
} else {
|
|
this.bbox = bbox;
|
|
}
|
|
}
|
|
BBoxInfo.prototype = {
|
|
checkIntersection: function (bboxInfo) {
|
|
if (this.worksheet !== bboxInfo.worksheet) {
|
|
return false;
|
|
}
|
|
return this.bbox.isIntersect(bboxInfo.bbox);
|
|
}
|
|
};
|
|
function CreateUnifillSolidFillSchemeColorByIndex(index) {
|
|
var ret = new CUniFill();
|
|
ret.setFill(new CSolidFill());
|
|
ret.fill.setColor(new CUniColor());
|
|
ret.fill.color.setColor(new CSchemeColor());
|
|
ret.fill.color.color.setId(index);
|
|
return ret;
|
|
}
|
|
function CChartStyleManager() {
|
|
this.styles = [];
|
|
ExecuteNoHistory(function () {
|
|
var DefaultDataPointPerDataPoint = [[CreateUniFillSchemeColorWidthTint(8, 0.885), CreateUniFillSchemeColorWidthTint(8, 0.55), CreateUniFillSchemeColorWidthTint(8, 0.78), CreateUniFillSchemeColorWidthTint(8, 0.925), CreateUniFillSchemeColorWidthTint(8, 0.7), CreateUniFillSchemeColorWidthTint(8, 0.3)], [CreateUniFillSchemeColorWidthTint(0, 0), CreateUniFillSchemeColorWidthTint(1, 0), CreateUniFillSchemeColorWidthTint(2, 0), CreateUniFillSchemeColorWidthTint(3, 0), CreateUniFillSchemeColorWidthTint(4, 0), CreateUniFillSchemeColorWidthTint(5, 0)], [CreateUniFillSchemeColorWidthTint(0, -0.5), CreateUniFillSchemeColorWidthTint(1, -0.5), CreateUniFillSchemeColorWidthTint(2, -0.5), CreateUniFillSchemeColorWidthTint(3, -0.5), CreateUniFillSchemeColorWidthTint(4, -0.5), CreateUniFillSchemeColorWidthTint(5, -0.5)], [CreateUniFillSchemeColorWidthTint(8, 0.05), CreateUniFillSchemeColorWidthTint(8, 0.55), CreateUniFillSchemeColorWidthTint(8, 0.78), CreateUniFillSchemeColorWidthTint(8, 0.15), CreateUniFillSchemeColorWidthTint(8, 0.7), CreateUniFillSchemeColorWidthTint(8, 0.3)]];
|
|
var s = DefaultDataPointPerDataPoint;
|
|
var f = CreateUniFillSchemeColorWidthTint;
|
|
this.styles[0] = new CChartStyle(EFFECT_NONE, EFFECT_SUBTLE, s[0], EFFECT_SUBTLE, EFFECT_NONE, [], 3, s[0], 7);
|
|
this.styles[1] = new CChartStyle(EFFECT_NONE, EFFECT_SUBTLE, s[1], EFFECT_SUBTLE, EFFECT_NONE, [], 3, s[1], 7);
|
|
for (var i = 2; i < 8; ++i) {
|
|
this.styles[i] = new CChartStyle(EFFECT_NONE, EFFECT_SUBTLE, [f(i - 2, 0)], EFFECT_SUBTLE, EFFECT_NONE, [], 3, [f(i - 2, 0)], 7);
|
|
}
|
|
this.styles[8] = new CChartStyle(EFFECT_SUBTLE, EFFECT_SUBTLE, s[0], EFFECT_SUBTLE, EFFECT_SUBTLE, [f(12, 0)], 5, s[0], 9);
|
|
this.styles[9] = new CChartStyle(EFFECT_SUBTLE, EFFECT_SUBTLE, s[1], EFFECT_SUBTLE, EFFECT_SUBTLE, [f(12, 0)], 5, s[1], 9);
|
|
for (i = 10; i < 16; ++i) {
|
|
this.styles[i] = new CChartStyle(EFFECT_SUBTLE, EFFECT_SUBTLE, [f(i - 10, 0)], EFFECT_SUBTLE, EFFECT_SUBTLE, [f(12, 0)], 5, [f(i - 10, 0)], 9);
|
|
}
|
|
this.styles[16] = new CChartStyle(EFFECT_MODERATE, EFFECT_INTENSE, s[0], EFFECT_SUBTLE, EFFECT_NONE, [], 5, s[0], 9);
|
|
this.styles[17] = new CChartStyle(EFFECT_MODERATE, EFFECT_INTENSE, s[1], EFFECT_INTENSE, EFFECT_NONE, [], 5, s[1], 9);
|
|
for (i = 18; i < 24; ++i) {
|
|
this.styles[i] = new CChartStyle(EFFECT_MODERATE, EFFECT_INTENSE, [f(i - 18, 0)], EFFECT_SUBTLE, EFFECT_NONE, [], 5, [f(i - 18, 0)], 9);
|
|
}
|
|
this.styles[24] = new CChartStyle(EFFECT_INTENSE, EFFECT_INTENSE, s[0], EFFECT_SUBTLE, EFFECT_NONE, [], 7, s[0], 13);
|
|
this.styles[25] = new CChartStyle(EFFECT_MODERATE, EFFECT_INTENSE, s[1], EFFECT_SUBTLE, EFFECT_NONE, [], 7, s[1], 13);
|
|
for (i = 26; i < 32; ++i) {
|
|
this.styles[i] = new CChartStyle(EFFECT_MODERATE, EFFECT_INTENSE, [f(i - 26, 0)], EFFECT_SUBTLE, EFFECT_NONE, [], 7, s[1], 13);
|
|
}
|
|
this.styles[32] = new CChartStyle(EFFECT_NONE, EFFECT_SUBTLE, s[0], EFFECT_SUBTLE, EFFECT_SUBTLE, [f(8, -0.5)], 5, s[0], 9);
|
|
this.styles[33] = new CChartStyle(EFFECT_NONE, EFFECT_SUBTLE, s[1], EFFECT_SUBTLE, EFFECT_SUBTLE, s[2], 5, s[1], 9);
|
|
for (i = 34; i < 40; ++i) {
|
|
this.styles[i] = new CChartStyle(EFFECT_NONE, EFFECT_SUBTLE, [f(i - 34, 0)], EFFECT_SUBTLE, EFFECT_SUBTLE, [f(i - 34, -0.5)], 5, [f(i - 34, 0)], 9);
|
|
}
|
|
this.styles[40] = new CChartStyle(EFFECT_INTENSE, EFFECT_INTENSE, s[3], EFFECT_SUBTLE, EFFECT_NONE, [], 5, s[3], 9);
|
|
this.styles[41] = new CChartStyle(EFFECT_INTENSE, EFFECT_INTENSE, s[1], EFFECT_INTENSE, EFFECT_NONE, [], 5, s[1], 9);
|
|
for (i = 42; i < 48; ++i) {
|
|
this.styles[i] = new CChartStyle(EFFECT_INTENSE, EFFECT_INTENSE, [f(i - 42, 0)], EFFECT_SUBTLE, EFFECT_NONE, [], 5, [f(i - 42, 0)], 9);
|
|
}
|
|
this.defaultLineStyles = [];
|
|
this.defaultLineStyles[0] = new ChartLineStyle(f(15, 0.75), f(15, 0.5), f(15, 0.75), f(15, 0), EFFECT_SUBTLE);
|
|
for (i = 0; i < 32; ++i) {
|
|
this.defaultLineStyles[i] = this.defaultLineStyles[0];
|
|
}
|
|
this.defaultLineStyles[32] = new ChartLineStyle(f(8, 0.75), f(8, 0.5), f(8, 0.75), f(8, 0), EFFECT_SUBTLE);
|
|
this.defaultLineStyles[33] = this.defaultLineStyles[32];
|
|
this.defaultLineStyles[34] = new ChartLineStyle(f(8, 0.75), f(8, 0.5), f(8, 0.75), f(8, 0), EFFECT_SUBTLE);
|
|
for (i = 35; i < 40; ++i) {
|
|
this.defaultLineStyles[i] = this.defaultLineStyles[34];
|
|
}
|
|
this.defaultLineStyles[40] = new ChartLineStyle(f(8, 0.75), f(8, 0.9), f(12, 0), f(12, 0), EFFECT_NONE);
|
|
for (i = 41; i < 48; ++i) {
|
|
this.defaultLineStyles[i] = this.defaultLineStyles[40];
|
|
}
|
|
},
|
|
this, []);
|
|
}
|
|
CChartStyleManager.prototype = {
|
|
getStyleByIndex: function (index) {
|
|
if (isRealNumber(index)) {
|
|
return this.styles[(index - 1) % 48];
|
|
}
|
|
return this.styles[1];
|
|
},
|
|
getDefaultLineStyleByIndex: function (index) {
|
|
if (isRealNumber(index)) {
|
|
return this.defaultLineStyles[(index - 1) % 48];
|
|
}
|
|
return this.defaultLineStyles[2];
|
|
}
|
|
};
|
|
function ChartLineStyle(axisAndMajorGridLines, minorGridlines, chartArea, otherLines, floorChartArea) {
|
|
this.axisAndMajorGridLines = axisAndMajorGridLines;
|
|
this.minorGridlines = minorGridlines;
|
|
this.chartArea = chartArea;
|
|
this.otherLines = otherLines;
|
|
this.floorChartArea = floorChartArea;
|
|
}
|
|
function CChartStyle(effect, fill1, fill2, fill3, line1, line2, line3, line4, markerSize) {
|
|
this.effect = effect;
|
|
this.fill1 = fill1;
|
|
this.fill2 = fill2;
|
|
this.fill3 = fill3;
|
|
this.line1 = line1;
|
|
this.line2 = line2;
|
|
this.line3 = line3;
|
|
this.line4 = line4;
|
|
this.markerSize = markerSize;
|
|
}
|
|
function CreateUniFillSchemeColorWidthTint(schemeColorId, tintVal) {
|
|
return ExecuteNoHistory(function (schemeColorId, tintVal) {
|
|
return CreateUniFillSolidFillWidthTintOrShade(CreateUnifillSolidFillSchemeColorByIndex(schemeColorId), tintVal);
|
|
},
|
|
this, [schemeColorId, tintVal]);
|
|
}
|
|
function checkFiniteNumber(num) {
|
|
if (isRealNumber(num) && isFinite(num)) {
|
|
return num;
|
|
}
|
|
return num;
|
|
}
|
|
var G_O_VISITED_HLINK_COLOR = CreateUniFillSolidFillWidthTintOrShade(CreateUnifillSolidFillSchemeColorByIndex(10), 0);
|
|
function CChartSpace() {
|
|
this.chart = null;
|
|
this.clrMapOvr = null;
|
|
this.date1904 = null;
|
|
this.externalData = null;
|
|
this.lang = null;
|
|
this.pivotSource = null;
|
|
this.printSettings = null;
|
|
this.protection = null;
|
|
this.roundedCorners = null;
|
|
this.spPr = null;
|
|
this.style = 2;
|
|
this.txPr = null;
|
|
this.userShapes = null;
|
|
this.themeOverride = null;
|
|
this.calculatedChart = null;
|
|
this.transform = new CMatrix();
|
|
this.bDeleted = true;
|
|
this.snapArrayX = [];
|
|
this.snapArrayY = [];
|
|
this.bbox = null;
|
|
this.selection = {
|
|
title: null,
|
|
legend: null,
|
|
legendEntry: null,
|
|
axisLbls: null,
|
|
dataLbls: null,
|
|
dataLbl: null,
|
|
textSelection: null,
|
|
plotArea: null
|
|
};
|
|
this.bounds = {
|
|
l: 0,
|
|
t: 0,
|
|
r: 0,
|
|
b: 0,
|
|
w: 0,
|
|
h: 0,
|
|
x: 0,
|
|
y: 0
|
|
};
|
|
this.parsedFromulas = [];
|
|
this.setRecalculateInfo();
|
|
this.Lock = new CLock();
|
|
this.Id = g_oIdCounter.Get_NewId();
|
|
g_oTableId.Add(this, this.Id);
|
|
}
|
|
CChartSpace.prototype = {
|
|
Get_Id: function () {
|
|
return this.Id;
|
|
},
|
|
select: CShape.prototype.select,
|
|
checkHitToBounds: CShape.prototype.checkHitToBounds,
|
|
calculateSnapArrays: CShape.prototype.calculateSnapArrays,
|
|
checkDrawingBaseCoords: CShape.prototype.checkDrawingBaseCoords,
|
|
setDrawingBaseCoords: CShape.prototype.setDrawingBaseCoords,
|
|
recalculateTextPr: function () {
|
|
if (this.txPr && this.txPr.content) {
|
|
this.txPr.content.Reset(0, 0, 10, 10);
|
|
this.txPr.content.Recalculate_Page(0, true);
|
|
}
|
|
},
|
|
getSelectionState: function () {
|
|
var content_selection = null;
|
|
if (this.selection.textSelection) {
|
|
var content = this.selection.textSelection.getDocContent();
|
|
if (content) {
|
|
content_selection = content.Get_SelectionState();
|
|
}
|
|
}
|
|
return {
|
|
title: this.selection.title,
|
|
legend: this.selection.legend,
|
|
legendEntry: this.selection.legendEntry,
|
|
axisLbls: this.selection.axisLbls,
|
|
dataLbls: this.selection.dataLbls,
|
|
dataLbl: this.selection.dataLbl,
|
|
textSelection: this.selection.textSelection,
|
|
plotArea: this.selection.plotArea,
|
|
contentSelection: content_selection,
|
|
recalcTitle: this.recalcInfo.recalcTitle,
|
|
bRecalculatedTitle: this.recalcInfo.bRecalculatedTitle
|
|
};
|
|
},
|
|
setSelectionState: function (state) {
|
|
this.selection.title = state.title;
|
|
this.selection.legend = state.legend;
|
|
this.selection.legendEntry = state.legendEntry;
|
|
this.selection.axisLbls = state.axisLbls;
|
|
this.selection.dataLbls = state.dataLbls;
|
|
this.selection.dataLbl = state.dataLbl;
|
|
this.selection.textSelection = state.textSelection;
|
|
this.selection.plotArea = state.plotArea;
|
|
if (isRealObject(state.recalcTitle)) {
|
|
this.recalcInfo.recalcTitle = state.recalcTitle;
|
|
this.recalcInfo.bRecalculatedTitle = state.bRecalculatedTitle;
|
|
}
|
|
if (state.contentSelection) {
|
|
if (this.selection.textSelection) {
|
|
var content = this.selection.textSelection.getDocContent();
|
|
if (content) {
|
|
content.Set_SelectionState(state.contentSelection, state.contentSelection.length - 1);
|
|
}
|
|
}
|
|
}
|
|
},
|
|
resetInternalSelection: function (noResetContentSelect) {
|
|
if (this.selection.textSelection) {
|
|
if (! (noResetContentSelect === true)) {
|
|
var content = this.selection.textSelection.getDocContent();
|
|
content && content.Selection_Remove();
|
|
}
|
|
this.selection.textSelection = null;
|
|
}
|
|
},
|
|
getDocContent: function () {
|
|
return null;
|
|
if (!this.txPr) {
|
|
this.setTxPr(CreateTextBodyFromString("", this.getDrawingDocument(), this));
|
|
}
|
|
return this.txPr.content;
|
|
},
|
|
resetSelection: function (noResetContentSelect) {
|
|
this.resetInternalSelection(noResetContentSelect);
|
|
this.selection.title = null;
|
|
this.selection.legend = null;
|
|
this.selection.legendEntry = null;
|
|
this.selection.axisLbls = null;
|
|
this.selection.dataLbls = null;
|
|
this.selection.dataLbl = null;
|
|
this.selection.textSelection = null;
|
|
this.selection.plotArea = null;
|
|
},
|
|
getStyles: function () {
|
|
return ExecuteNoHistory(function () {
|
|
var styles = new CStyles();
|
|
var style = new CStyle("dataLblStyle", null, null, null);
|
|
var text_pr = new CTextPr();
|
|
text_pr.FontSize = 10;
|
|
text_pr.Unifill = CreateUnfilFromRGB(0, 0, 0);
|
|
var parent_objects = this.getParentObjects();
|
|
var theme = parent_objects.theme;
|
|
var para_pr = new CParaPr();
|
|
para_pr.Jc = align_Center;
|
|
para_pr.Spacing.Before = 0;
|
|
para_pr.Spacing.After = 0;
|
|
para_pr.Spacing.Line = 1;
|
|
para_pr.Spacing.LineRule = linerule_Auto;
|
|
style.ParaPr = para_pr;
|
|
var minor_font = theme.themeElements.fontScheme.minorFont;
|
|
if (minor_font) {
|
|
if (typeof minor_font.latin === "string" && minor_font.latin.length > 0) {
|
|
text_pr.RFonts.Ascii = {
|
|
Name: minor_font.latin,
|
|
Index: -1
|
|
};
|
|
}
|
|
if (typeof minor_font.ea === "string" && minor_font.ea.length > 0) {
|
|
text_pr.RFonts.EastAsia = {
|
|
Name: minor_font.ea,
|
|
Index: -1
|
|
};
|
|
}
|
|
if (typeof minor_font.cs === "string" && minor_font.cs.length > 0) {
|
|
text_pr.RFonts.CS = {
|
|
Name: minor_font.cs,
|
|
Index: -1
|
|
};
|
|
}
|
|
if (typeof minor_font.sym === "string" && minor_font.sym.length > 0) {
|
|
text_pr.RFonts.HAnsi = {
|
|
Name: minor_font.sym,
|
|
Index: -1
|
|
};
|
|
}
|
|
}
|
|
style.TextPr = text_pr;
|
|
var chart_text_pr;
|
|
if (this.txPr && this.txPr.content && this.txPr.content.Content[0] && this.txPr.content.Content[0].Pr) {
|
|
style.ParaPr.Merge(this.txPr.content.Content[0].Pr);
|
|
if (this.txPr.content.Content[0].Pr.DefaultRunPr) {
|
|
chart_text_pr = this.txPr.content.Content[0].Pr.DefaultRunPr;
|
|
style.TextPr.Merge(chart_text_pr);
|
|
}
|
|
}
|
|
if (this.txPr && this.txPr.content && this.txPr.content.Content[0] && this.txPr.content.Content[0].Pr) {
|
|
style.ParaPr.Merge(this.txPr.content.Content[0].Pr);
|
|
if (this.txPr.content.Content[0].Pr.DefaultRunPr) {
|
|
style.TextPr.Merge(this.txPr.content.Content[0].Pr.DefaultRunPr);
|
|
}
|
|
}
|
|
styles.Add(style);
|
|
return {
|
|
lastId: style.Id,
|
|
styles: styles
|
|
};
|
|
},
|
|
this, []);
|
|
},
|
|
paragraphAdd: function (paraItem, bRecalculate) {
|
|
var content;
|
|
if (paraItem.Type === para_TextPr) {
|
|
var _paraItem;
|
|
if (paraItem.Value.Unifill && paraItem.Value.Unifill.checkWordMods()) {
|
|
_paraItem = paraItem.Copy();
|
|
_paraItem.Value.Unifill.convertToPPTXMods();
|
|
} else {
|
|
_paraItem = paraItem;
|
|
}
|
|
if (this.selection.title && !this.selection.textSelection) {
|
|
this.selection.title.checkDocContent();
|
|
content = this.selection.title.getDocContent();
|
|
content.Set_ApplyToAll(true);
|
|
content.Paragraph_Add(_paraItem, bRecalculate);
|
|
content.Set_ApplyToAll(false);
|
|
} else {
|
|
if (this.selection.textSelection) {
|
|
this.selection.textSelection.checkDocContent();
|
|
this.selection.textSelection.paragraphAdd(_paraItem, bRecalculate);
|
|
} else {}
|
|
}
|
|
} else {
|
|
if (this.selection.textSelection) {
|
|
this.selection.textSelection.checkDocContent();
|
|
this.selection.textSelection.paragraphAdd(paraItem, bRecalculate);
|
|
}
|
|
}
|
|
},
|
|
applyTextFunction: function (docContentFunction, tableFunction, args) {
|
|
if (docContentFunction === CDocumentContent.prototype.Paragraph_Add) {
|
|
this.paragraphAdd(args[0], args[1]);
|
|
return;
|
|
}
|
|
if (this.selection.textSelection) {
|
|
this.selection.textSelection.checkDocContent();
|
|
this.selection.textSelection.applyTextFunction(docContentFunction, tableFunction, args);
|
|
}
|
|
},
|
|
selectTitle: function (title, pageIndex) {
|
|
title.select(this, pageIndex);
|
|
this.resetInternalSelection();
|
|
this.selection.legend = null;
|
|
this.selection.legendEntry = null;
|
|
this.selection.axisLbls = null;
|
|
this.selection.dataLbls = null;
|
|
this.selection.dataLbl = null;
|
|
this.selection.textSelection = null;
|
|
this.selection.plotArea = null;
|
|
},
|
|
recalculateCurPos: DrawingObjectsController.prototype.recalculateCurPos,
|
|
documentUpdateSelectionState: function () {
|
|
if (this.selection.textSelection) {
|
|
this.selection.textSelection.updateSelectionState();
|
|
}
|
|
},
|
|
getAllTitles: function () {
|
|
var ret = [];
|
|
if (this.chart) {
|
|
if (this.chart.title) {
|
|
ret.push(this.chart.title);
|
|
}
|
|
if (this.chart.plotArea) {
|
|
if (this.chart.plotArea.catAx && this.chart.plotArea.catAx.title) {
|
|
ret.push(this.chart.plotArea.catAx.title);
|
|
}
|
|
if (this.chart.plotArea.valAx && this.chart.plotArea.valAx.title) {
|
|
ret.push(this.chart.plotArea.valAx.title);
|
|
}
|
|
}
|
|
}
|
|
return ret;
|
|
},
|
|
getMainGroup: function () {
|
|
if (!isRealObject(this.group)) {
|
|
return this;
|
|
}
|
|
return this.group.getMainGroup();
|
|
},
|
|
getFill: CShape.prototype.getFill,
|
|
getStroke: CShape.prototype.getStroke,
|
|
changeSize: CShape.prototype.changeSize,
|
|
changeFill: function (unifill) {
|
|
if (this.recalcInfo.recalculatePenBrush) {
|
|
this.recalculatePenBrush();
|
|
}
|
|
var unifill2 = CorrectUniFill(unifill, this.brush);
|
|
unifill2.convertToPPTXMods();
|
|
this.spPr.setFill(unifill2);
|
|
},
|
|
setFill: function (fill) {
|
|
this.spPr.setFill(fill);
|
|
},
|
|
changeLine: function (line) {
|
|
if (this.recalcInfo.recalculatePenBrush) {
|
|
this.recalculatePenBrush();
|
|
}
|
|
var stroke = CorrectUniStroke(line, this.pen);
|
|
if (stroke.Fill) {
|
|
stroke.Fill.convertToPPTXMods();
|
|
}
|
|
this.spPr.setLn(stroke);
|
|
},
|
|
parseChartFormula: function (sFormula) {
|
|
if (this.worksheet && typeof sFormula === "string" && sFormula.length > 0) {
|
|
var ret = [];
|
|
if (sFormula[0] === "(") {
|
|
sFormula = sFormula.slice(1);
|
|
}
|
|
if (sFormula[sFormula.length - 1] === ")") {
|
|
sFormula = sFormula.slice(0, -1);
|
|
}
|
|
var f1 = sFormula;
|
|
var arr_f = f1.split(",");
|
|
var i, j;
|
|
for (i = 0; i < arr_f.length; ++i) {
|
|
var parsed_ref = parserHelp.parse3DRef(arr_f[i]);
|
|
if (parsed_ref) {
|
|
var source_worksheet = this.worksheet.workbook.getWorksheetByName(parsed_ref.sheet);
|
|
if (source_worksheet) {
|
|
var range1 = source_worksheet.getRange2(parsed_ref.range);
|
|
if (range1) {
|
|
var range = range1.bbox;
|
|
ret.push({
|
|
worksheet: source_worksheet,
|
|
bbox: range
|
|
});
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return ret;
|
|
}
|
|
return null;
|
|
},
|
|
checkBBoxIntersection: function (bbox1, bbox2) {
|
|
return ! (bbox1.r1 > bbox2.r2 || bbox2.r1 > bbox1.r2 || bbox1.c1 > bbox2.c2 || bbox2.c1 > bbox1.c2);
|
|
},
|
|
checkSeriesIntersection: function (val, bbox, worksheet) {
|
|
if (val && bbox && worksheet) {
|
|
var parsed_formulas = val.parsedFormulas;
|
|
for (var i = 0; i < parsed_formulas.length; ++i) {
|
|
if (parsed_formulas[i].worksheet === worksheet && this.checkBBoxIntersection(parsed_formulas[i].bbox, bbox)) {
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
},
|
|
checkVal: function (val) {
|
|
if (val) {
|
|
if (val.numRef) {
|
|
val.numRef.parsedFormulas = this.parseChartFormula(val.numRef.f);
|
|
}
|
|
if (val.strRef) {
|
|
val.strRef.parsedFormulas = this.parseChartFormula(val.strRef.f);
|
|
}
|
|
}
|
|
},
|
|
recalculateSeriesFormulas: function () {
|
|
this.checkSeriesRefs(this.checkVal);
|
|
},
|
|
checkChartIntersection: function (bbox, worksheet) {
|
|
return this.checkSeriesRefs(this.checkSeriesIntersection, bbox, worksheet);
|
|
},
|
|
changeListName: function (val, oldName, newName) {
|
|
if (val) {
|
|
if (val.numRef && typeof val.numRef.f === "string" || val.strRef && typeof val.strRef.f === "string") {
|
|
var checkString = oldName.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
|
|
if (val.numRef && typeof val.numRef.f === "string") {
|
|
val.numRef.setF(val.numRef.f.replace(new RegExp(checkString, "g"), newName));
|
|
}
|
|
if (val.strRef && typeof val.strRef.f === "string") {
|
|
val.strRef.setF(val.strRef.f.replace(new RegExp(checkString, "g"), newName));
|
|
}
|
|
}
|
|
}
|
|
},
|
|
checkListName: function (val, oldName) {
|
|
if (val) {
|
|
if (val.numRef && typeof val.numRef.f === "string") {
|
|
if (val.numRef.f.indexOf(oldName) > -1) {
|
|
return true;
|
|
}
|
|
}
|
|
if (val.strRef && typeof val.strRef.f === "string") {
|
|
if (val.strRef.f.indexOf(oldName) > -1) {
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
},
|
|
changeChartReferences: function (oldWorksheetName, newWorksheetName) {
|
|
this.checkSeriesRefs(this.changeListName, oldWorksheetName, newWorksheetName);
|
|
},
|
|
checkChartReferences: function (oldWorksheetName) {
|
|
return this.checkSeriesRefs(this.checkListName, oldWorksheetName);
|
|
},
|
|
updateChartReferences: function (oldWorksheetName, newWorksheetName, bNoRebuildCache) {
|
|
if (this.checkChartReferences(oldWorksheetName)) {
|
|
if (bNoRebuildCache === true) {
|
|
this.bNoHandleRecalc = true;
|
|
}
|
|
this.changeChartReferences(oldWorksheetName, newWorksheetName);
|
|
if (! (bNoRebuildCache === true)) {
|
|
this.rebuildSeries();
|
|
}
|
|
this.bNoHandleRecalc = false;
|
|
}
|
|
},
|
|
updateChartReferences2: function (oldWorksheetName, newWorksheetName) {
|
|
if (this.checkChartReferences(oldWorksheetName)) {
|
|
this.changeChartReferences(oldWorksheetName, newWorksheetName);
|
|
}
|
|
},
|
|
checkSeriesRefs: function (callback, bbox, worksheet) {
|
|
if (this.chart && this.chart.plotArea) {
|
|
var charts = this.chart.plotArea.charts,
|
|
i, j, series, ser;
|
|
for (i = 0; i < charts.length; ++i) {
|
|
series = charts[i].series;
|
|
if (charts[i].getObjectType() === historyitem_type_ScatterChart) {
|
|
for (j = 0; j < series.length; ++j) {
|
|
ser = series[j];
|
|
if (callback(ser.xVal, bbox, worksheet)) {
|
|
return true;
|
|
}
|
|
if (callback(ser.yVal, bbox, worksheet)) {
|
|
return true;
|
|
}
|
|
if (callback(ser.tx, bbox, worksheet)) {
|
|
return true;
|
|
}
|
|
}
|
|
} else {
|
|
for (j = 0; j < series.length; ++j) {
|
|
ser = series[j];
|
|
if (callback(ser.val, bbox, worksheet)) {
|
|
return true;
|
|
}
|
|
if (callback(ser.cat, bbox, worksheet)) {
|
|
return true;
|
|
}
|
|
if (callback(ser.tx, bbox, worksheet)) {
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
},
|
|
clearCacheVal: function (val) {
|
|
if (!val) {
|
|
return;
|
|
}
|
|
if (val.numRef) {
|
|
if (val.numRef.numCache) {
|
|
removePtsFromLit(val.numRef.numCache);
|
|
}
|
|
}
|
|
if (val.strRef) {
|
|
if (val.strRef.strCache) {
|
|
val.strRef.setStrCache(null);
|
|
}
|
|
}
|
|
},
|
|
checkIntersectionChangedRange: function (data) {
|
|
if (!data) {
|
|
return true;
|
|
}
|
|
var i, j;
|
|
if (this.seriesBBoxes) {
|
|
for (i = 0; i < this.seriesBBoxes.length; ++i) {
|
|
for (j = 0; j < data.length; ++j) {
|
|
if (this.seriesBBoxes[i].checkIntersection(data[j])) {
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (this.seriesTitlesBBoxes) {
|
|
for (i = 0; i < this.seriesTitlesBBoxes.length; ++i) {
|
|
for (j = 0; j < data.length; ++j) {
|
|
if (this.seriesTitlesBBoxes[i].checkIntersection(data[j])) {
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (this.catTitlesBBoxes) {
|
|
for (i = 0; i < this.catTitlesBBoxes.length; ++i) {
|
|
for (j = 0; j < data.length; ++j) {
|
|
if (this.catTitlesBBoxes[i].checkIntersection(data[j])) {
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
},
|
|
rebuildSeries: function (data) {
|
|
if (this.checkIntersectionChangedRange(data)) {
|
|
ExecuteNoHistory(function () {
|
|
this.checkRemoveCache();
|
|
this.recalculateReferences();
|
|
},
|
|
this, []);
|
|
}
|
|
},
|
|
checkRemoveCache: function () {
|
|
this.handleUpdateInternalChart();
|
|
this.recalcInfo.recalculateReferences = true;
|
|
this.checkSeriesRefs(this.clearCacheVal);
|
|
},
|
|
getTypeSubType: function () {
|
|
var type = null,
|
|
subtype = null;
|
|
if (this.chart && this.chart.plotArea && this.chart.plotArea.chart) {
|
|
switch (this.chart.plotArea.chart.getObjectType()) {
|
|
case historyitem_type_LineChart:
|
|
type = c_oAscChartType.line;
|
|
break;
|
|
case historyitem_type_AreaChart:
|
|
type = c_oAscChartType.area;
|
|
break;
|
|
case historyitem_type_DoughnutChart:
|
|
type = c_oAscChartType.doughnut;
|
|
break;
|
|
case historyitem_type_PieChart:
|
|
type = c_oAscChartType.pie;
|
|
break;
|
|
case historyitem_type_ScatterChart:
|
|
type = c_oAscChartType.scatter;
|
|
break;
|
|
case historyitem_type_StockChart:
|
|
type = c_oAscChartType.stock;
|
|
break;
|
|
case historyitem_type_BarChart:
|
|
if (this.chart.plotArea.chart.barDir === BAR_DIR_BAR) {
|
|
type = c_oAscChartType.hbar;
|
|
} else {
|
|
type = c_oAscChartType.bar;
|
|
}
|
|
break;
|
|
}
|
|
if (isRealNumber(this.chart.plotArea.chart.grouping)) {
|
|
if (!this.chart.plotArea.chart.getObjectType() === historyitem_type_BarChart) {
|
|
switch (this.chart.plotArea.chart.grouping) {
|
|
case GROUPING_STANDARD:
|
|
subtype = c_oAscChartSubType.normal;
|
|
break;
|
|
case GROUPING_STACKED:
|
|
subtype = c_oAscChartSubType.stacked;
|
|
break;
|
|
case GROUPING_PERCENT_STACKED:
|
|
subtype = c_oAscChartSubType.stackedPer;
|
|
break;
|
|
}
|
|
} else {
|
|
switch (this.chart.plotArea.chart.grouping) {
|
|
case BAR_GROUPING_CLUSTERED:
|
|
case BAR_GROUPING_STANDARD:
|
|
subtype = c_oAscChartSubType.normal;
|
|
break;
|
|
case BAR_GROUPING_STACKED:
|
|
subtype = c_oAscChartSubType.stacked;
|
|
break;
|
|
case BAR_GROUPING_PERCENT_STACKED:
|
|
subtype = c_oAscChartSubType.stackedPer;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return {
|
|
type: type,
|
|
subtype: subtype
|
|
};
|
|
},
|
|
clearFormatting: function (bNoClearShapeProps) {
|
|
if (this.spPr && !(bNoClearShapeProps === true)) {
|
|
this.spPr.Fill && this.spPr.setFill(null);
|
|
this.spPr.ln && this.spPr.setLn(null);
|
|
}
|
|
if (this.chart) {
|
|
if (this.chart.plotArea) {
|
|
if (this.chart.plotArea.spPr) {
|
|
this.chart.plotArea.spPr.Fill && this.chart.plotArea.spPr.setFill(null);
|
|
this.chart.plotArea.spPr.ln && this.chart.plotArea.spPr.setLn(null);
|
|
}
|
|
var i, j, k, series, pts, chart, ser;
|
|
for (i = this.chart.plotArea.charts.length - 1; i > -1; --i) {
|
|
chart = this.chart.plotArea.charts[i];
|
|
if (chart.upDownBars) {
|
|
if (chart.upDownBars.upBars) {
|
|
if (chart.upDownBars.upBars.Fill) {
|
|
chart.upDownBars.upBars.setFill(null);
|
|
}
|
|
if (chart.upDownBars.upBars.ln) {
|
|
chart.upDownBars.upBars.setLn(null);
|
|
}
|
|
}
|
|
if (chart.upDownBars.downBars) {
|
|
if (chart.upDownBars.downBars.Fill) {
|
|
chart.upDownBars.downBars.setFill(null);
|
|
}
|
|
if (chart.upDownBars.downBars.ln) {
|
|
chart.upDownBars.downBars.setLn(null);
|
|
}
|
|
}
|
|
}
|
|
series = chart.series;
|
|
for (j = series.length - 1; j > -1; --j) {
|
|
ser = series[j];
|
|
if (ser.spPr && chart.getObjectType() !== historyitem_type_StockChart) {
|
|
if (ser.spPr.Fill) {
|
|
ser.spPr.setFill(null);
|
|
}
|
|
if (ser.spPr.ln) {
|
|
ser.spPr.setLn(null);
|
|
}
|
|
}
|
|
removeDPtsFromSeries(ser);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
copy: function (drawingDocument) {
|
|
var copy = new CChartSpace();
|
|
if (this.chart) {
|
|
copy.setChart(this.chart.createDuplicate(drawingDocument));
|
|
}
|
|
if (this.clrMapOvr) {
|
|
copy.setClrMapOvr(this.clrMapOvr.createDuplicate());
|
|
}
|
|
copy.setDate1904(this.date1904);
|
|
if (this.externalData) {
|
|
copy.setExternalData(this.externalData.createDuplicate());
|
|
}
|
|
copy.setLang(this.lang);
|
|
if (this.pivotSource) {
|
|
copy.setPivotSource(this.pivotSource.createDuplicate());
|
|
}
|
|
if (this.printSettings) {
|
|
copy.setPrintSettings(this.printSettings.createDuplicate());
|
|
}
|
|
if (this.protection) {
|
|
copy.setProtection(this.protection.createDuplicate());
|
|
}
|
|
copy.setRoundedCorners(this.roundedCorners);
|
|
if (this.spPr) {
|
|
copy.setSpPr(this.spPr.createDuplicate());
|
|
copy.spPr.setParent(copy);
|
|
}
|
|
copy.setStyle(this.style);
|
|
if (this.txPr) {
|
|
copy.setTxPr(this.txPr.createDuplicate(drawingDocument));
|
|
}
|
|
copy.setUserShapes(this.userShapes);
|
|
copy.setThemeOverride(this.themeOverride);
|
|
copy.setBDeleted(this.bDeleted);
|
|
copy.cachedImage = this.getBase64Img();
|
|
return copy;
|
|
},
|
|
convertToWord: function (document) {
|
|
this.setBDeleted(true);
|
|
var oCopy = this.copy();
|
|
oCopy.setBDeleted(false);
|
|
return oCopy;
|
|
},
|
|
convertToPPTX: function (drawingDocument, worksheet) {
|
|
var copy = this.copy(drawingDocument);
|
|
copy.setBDeleted(false);
|
|
copy.setWorksheet(worksheet);
|
|
copy.setParent(null);
|
|
return copy;
|
|
},
|
|
rebuildSeriesFromAsc: function (asc_chart) {
|
|
if (this.chart && this.chart.plotArea && this.chart.plotArea.charts[0]) {
|
|
var asc_series = asc_chart.series;
|
|
var chart_type = this.chart.plotArea.charts[0];
|
|
var first_series = chart_type.series[0] ? chart_type.series[0] : chart_type.getSeriesConstructor();
|
|
var first_series2 = chart_type.series[0] ? chart_type.series[0] : null;
|
|
removeAllSeriesFromChart(chart_type);
|
|
if (chart_type.getObjectType() !== historyitem_type_ScatterChart) {
|
|
for (var i = 0; i < asc_series.length; ++i) {
|
|
var series = first_series.createDuplicate();
|
|
series.setIdx(i);
|
|
series.setOrder(i);
|
|
series.setVal(new CYVal());
|
|
var val = series.val;
|
|
val.setNumRef(new CNumRef());
|
|
var num_ref = val.numRef;
|
|
num_ref.setF(asc_series[i].Val.Formula);
|
|
num_ref.setNumCache(new CNumLit());
|
|
var num_cache = num_ref.numCache;
|
|
num_cache.setPtCount(asc_series[i].Val.NumCache.length);
|
|
if (asc_series[i].Cat && asc_series[i].Cat.NumCache && typeof asc_series[i].Cat.Formula === "string" && asc_series[i].Cat.Formula.length > 0) {
|
|
series.setCat(new CCat());
|
|
var cat = series.cat;
|
|
cat.setStrRef(new CStrRef());
|
|
var str_ref = cat.strRef;
|
|
str_ref.setF(asc_series[i].Cat.Formula);
|
|
str_ref.setStrCache(new CStrCache());
|
|
var str_cache = str_ref.strCache;
|
|
var cat_num_cache = asc_series[i].Cat.NumCache;
|
|
str_cache.setPtCount(cat_num_cache.length);
|
|
} else {
|
|
series.setCat(null);
|
|
}
|
|
if (asc_series[i].TxCache && typeof asc_series[i].TxCache.Formula === "string" && asc_series[i].TxCache.Formula.length > 0) {
|
|
series.setTx(new CTx());
|
|
var tx = series.tx;
|
|
tx.setStrRef(new CStrRef());
|
|
var str_ref = tx.strRef;
|
|
str_ref.setF(asc_series[i].TxCache.Formula);
|
|
str_ref.setStrCache(new CStrCache());
|
|
var str_cache = str_ref.strCache;
|
|
str_cache.setPtCount(1);
|
|
} else {
|
|
series.setTx(null);
|
|
}
|
|
chart_type.addSer(series);
|
|
}
|
|
} else {
|
|
var first_series = asc_series.length > 1 ? asc_series[0] : null;
|
|
var start_index = asc_series.length > 1 ? 1 : 0;
|
|
var minus = start_index === 1 ? 1 : 0;
|
|
for (var i = start_index; i < asc_series.length; ++i) {
|
|
var series = first_series2.createDuplicate();
|
|
series.setIdx(i - minus);
|
|
series.setOrder(i - minus);
|
|
if (first_series) {
|
|
series.setXVal(new CXVal());
|
|
var x_val = series.xVal;
|
|
x_val.setNumRef(new CNumRef());
|
|
var num_ref = x_val.numRef;
|
|
num_ref.setF(first_series.Val.Formula);
|
|
num_ref.setNumCache(new CNumLit());
|
|
var num_cache = num_ref.numCache;
|
|
num_cache.setPtCount(first_series.Val.NumCache.length);
|
|
}
|
|
series.setYVal(new CYVal());
|
|
var y_val = series.yVal;
|
|
y_val.setNumRef(new CNumRef());
|
|
var num_ref = y_val.numRef;
|
|
num_ref.setF(asc_series[i].Val.Formula);
|
|
num_ref.setNumCache(new CNumLit());
|
|
var num_cache = num_ref.numCache;
|
|
num_cache.setPtCount(asc_series[i].Val.NumCache.length);
|
|
chart_type.addSer(series);
|
|
}
|
|
}
|
|
this.recalculateReferences();
|
|
}
|
|
},
|
|
Write_ToBinary2: function (w) {
|
|
w.WriteLong(this.getObjectType());
|
|
w.WriteString2(this.Id);
|
|
},
|
|
Read_FromBinary2: function (r) {
|
|
this.Id = r.GetString2();
|
|
},
|
|
handleUpdateType: function () {
|
|
if (this.bNoHandleRecalc === true) {
|
|
return;
|
|
}
|
|
this.recalcInfo.recalculateChart = true;
|
|
this.recalcInfo.recalculateSeriesColors = true;
|
|
this.recalcInfo.recalculateMarkers = true;
|
|
this.recalcInfo.recalculateGridLines = true;
|
|
this.recalcInfo.recalculateDLbls = true;
|
|
this.recalcInfo.recalculateAxisLabels = true;
|
|
this.recalcInfo.recalculateAxisVal = true;
|
|
this.recalcInfo.recalculateAxisTickMark = true;
|
|
this.recalcInfo.recalculateHiLowLines = true;
|
|
this.recalcInfo.recalculateUpDownBars = true;
|
|
this.recalcInfo.recalculateLegend = true;
|
|
this.recalcInfo.recalculateReferences = true;
|
|
this.recalcInfo.recalculateBBox = true;
|
|
this.recalcInfo.recalculateFormulas = true;
|
|
this.chartObj = null;
|
|
this.addToRecalculate();
|
|
},
|
|
handleUpdateInternalChart: function () {
|
|
if (this.bNoHandleRecalc === true) {
|
|
return;
|
|
}
|
|
this.recalcInfo.recalculateChart = true;
|
|
this.recalcInfo.recalculateSeriesColors = true;
|
|
this.recalcInfo.recalculateDLbls = true;
|
|
this.recalcInfo.recalculateAxisLabels = true;
|
|
this.recalcInfo.recalculateMarkers = true;
|
|
this.recalcInfo.recalculateAxisVal = true;
|
|
this.recalcInfo.recalculateLegend = true;
|
|
this.recalcInfo.recalculateBBox = true;
|
|
this.chartObj = null;
|
|
this.addToRecalculate();
|
|
},
|
|
handleUpdateGridlines: function () {
|
|
this.recalcInfo.recalculateGridLines = true;
|
|
this.addToRecalculate();
|
|
},
|
|
handleUpdateDataLabels: function () {
|
|
this.recalcInfo.recalculateDLbls = true;
|
|
this.addToRecalculate();
|
|
},
|
|
updateChildLabelsTransform: function (posX, posY) {
|
|
if (this.localTransformText) {
|
|
this.transformText = this.localTransformText.CreateDublicate();
|
|
global_MatrixTransformer.TranslateAppend(this.transformText, posX, posY);
|
|
this.invertTransformText = global_MatrixTransformer.Invert(this.transformText);
|
|
}
|
|
if (this.chart) {
|
|
if (this.chart.plotArea) {
|
|
if (this.chart.plotArea.chart && this.chart.plotArea.chart.series) {
|
|
var series = this.chart.plotArea.chart.series;
|
|
for (var i = 0; i < series.length; ++i) {
|
|
var ser = series[i];
|
|
var pts = getPtsFromSeries(ser);
|
|
for (var j = 0; j < pts.length; ++j) {
|
|
if (pts[j].compiledDlb) {
|
|
pts[j].compiledDlb.updatePosition(posX, posY);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (this.chart.plotArea.catAx) {
|
|
if (this.chart.plotArea.catAx.title) {
|
|
this.chart.plotArea.catAx.title.updatePosition(posX, posY);
|
|
}
|
|
if (this.chart.plotArea.catAx.labels) {
|
|
this.chart.plotArea.catAx.labels.updatePosition(posX, posY);
|
|
}
|
|
}
|
|
if (this.chart.plotArea.valAx) {
|
|
if (this.chart.plotArea.valAx.title) {
|
|
this.chart.plotArea.valAx.title.updatePosition(posX, posY);
|
|
}
|
|
if (this.chart.plotArea.valAx.labels) {
|
|
this.chart.plotArea.valAx.labels.updatePosition(posX, posY);
|
|
}
|
|
}
|
|
}
|
|
if (this.chart.title) {
|
|
this.chart.title.updatePosition(posX, posY);
|
|
}
|
|
if (this.chart.legend) {
|
|
this.chart.legend.updatePosition(posX, posY);
|
|
}
|
|
}
|
|
},
|
|
recalcTitles: function () {
|
|
if (this.chart && this.chart.title) {
|
|
this.chart.title.recalcInfo.recalculateContent = true;
|
|
this.chart.title.recalcInfo.recalcTransform = true;
|
|
this.chart.title.recalcInfo.recalcTransformText = true;
|
|
}
|
|
if (this.chart && this.chart.plotArea) {
|
|
var hor_axis = this.chart.plotArea.getHorizontalAxis();
|
|
if (hor_axis && hor_axis.title) {
|
|
hor_axis.title.recalcInfo.recalculateContent = true;
|
|
hor_axis.title.recalcInfo.recalcTransform = true;
|
|
hor_axis.title.recalcInfo.recalcTransformText = true;
|
|
}
|
|
var vert_axis = this.chart.plotArea.getVerticalAxis();
|
|
if (vert_axis && vert_axis.title) {
|
|
vert_axis.title.recalcInfo.recalculateContent = true;
|
|
vert_axis.title.recalcInfo.recalcTransform = true;
|
|
vert_axis.title.recalcInfo.recalcTransformText = true;
|
|
}
|
|
}
|
|
},
|
|
recalcTitles2: function () {
|
|
if (this.chart && this.chart.title) {
|
|
this.chart.title.recalcInfo.recalculateContent = true;
|
|
this.chart.title.recalcInfo.recalcTransform = true;
|
|
this.chart.title.recalcInfo.recalcTransformText = true;
|
|
this.chart.title.recalcInfo.recalculateTxBody = true;
|
|
}
|
|
if (this.chart && this.chart.plotArea) {
|
|
var hor_axis = this.chart.plotArea.getHorizontalAxis();
|
|
if (hor_axis && hor_axis.title) {
|
|
hor_axis.title.recalcInfo.recalculateContent = true;
|
|
hor_axis.title.recalcInfo.recalcTransform = true;
|
|
hor_axis.title.recalcInfo.recalcTransformText = true;
|
|
hor_axis.title.recalcInfo.recalculateTxBody = true;
|
|
}
|
|
var vert_axis = this.chart.plotArea.getVerticalAxis();
|
|
if (vert_axis && vert_axis.title) {
|
|
vert_axis.title.recalcInfo.recalculateContent = true;
|
|
vert_axis.title.recalcInfo.recalcTransform = true;
|
|
vert_axis.title.recalcInfo.recalcTransformText = true;
|
|
vert_axis.title.recalcInfo.recalculateTxBody = true;
|
|
}
|
|
}
|
|
},
|
|
Refresh_RecalcData2: function (pageIndex, object) {
|
|
if (object && object.getObjectType && object.getObjectType() === historyitem_type_Title && this.selection.title === object) {
|
|
this.recalcInfo.recalcTitle = object;
|
|
} else {
|
|
this.setRecalculateInfo();
|
|
}
|
|
this.addToRecalculate();
|
|
},
|
|
Refresh_RecalcData: function (data) {
|
|
switch (data.Type) {
|
|
case historyitem_ChartSpace_SetStyle:
|
|
this.handleUpdateStyle();
|
|
break;
|
|
case historyitem_ChartSpace_SetTxPr:
|
|
this.recalcInfo.recalculateChart = true;
|
|
this.recalcInfo.recalculateLegend = true;
|
|
this.recalcInfo.recalculateDLbls = true;
|
|
this.recalcInfo.recalculateAxisVal = true;
|
|
this.recalcInfo.recalculateAxisCat = true;
|
|
this.recalcInfo.recalculateAxisLabels = true;
|
|
this.addToRecalculate();
|
|
break;
|
|
}
|
|
},
|
|
getObjectType: function () {
|
|
return historyitem_type_ChartSpace;
|
|
},
|
|
getAllRasterImages: function (images) {
|
|
if (this.spPr) {
|
|
this.spPr.checkBlipFillRasterImage(images);
|
|
}
|
|
var chart = this.chart;
|
|
if (chart) {
|
|
chart.backWall && chart.backWall.spPr && chart.backWall.spPr.checkBlipFillRasterImage(images);
|
|
chart.floor && chart.floor.spPr && chart.floor.spPr.checkBlipFillRasterImage(images);
|
|
chart.legend && chart.legend.spPr && chart.legend.spPr.checkBlipFillRasterImage(images);
|
|
chart.sideWall && chart.sideWall.spPr && chart.sideWall.spPr.checkBlipFillRasterImage(images);
|
|
chart.title && chart.title.spPr && chart.title.spPr.checkBlipFillRasterImage(images);
|
|
var plot_area = this.chart.plotArea;
|
|
if (plot_area) {
|
|
plot_area.spPr && plot_area.spPr.checkBlipFillRasterImage(images);
|
|
var i;
|
|
for (i = 0; i < plot_area.axId.length; ++i) {
|
|
var axis = plot_area.axId[i];
|
|
if (axis) {
|
|
axis.spPr && axis.spPr.checkBlipFillRasterImage(images);
|
|
axis.title && axis.title && axis.title.spPr && axis.title.spPr.checkBlipFillRasterImage(images);
|
|
}
|
|
}
|
|
for (i = 0; i < plot_area.charts.length; ++i) {
|
|
plot_area.charts[i].getAllRasterImages(images);
|
|
}
|
|
}
|
|
}
|
|
},
|
|
getAllContents: function () {},
|
|
documentGetAllFontNames: function (allFonts) {
|
|
allFonts["+mn-lt"] = 1;
|
|
allFonts["+mn-ea"] = 1;
|
|
allFonts["+mn-cs"] = 1;
|
|
checkTxBodyDefFonts(allFonts, this.txPr);
|
|
var chart = this.chart,
|
|
i;
|
|
if (chart) {
|
|
for (i = 0; i < chart.pivotFmts.length; ++i) {
|
|
chart.pivotFmts[i] && checkTxBodyDefFonts(allFonts, chart.pivotFmts[i].txPr);
|
|
}
|
|
if (chart.legend) {
|
|
checkTxBodyDefFonts(chart.legend.txPr);
|
|
for (i = 0; i < chart.legend.legendEntryes.length; ++i) {
|
|
chart.legend.legendEntryes[i] && checkTxBodyDefFonts(allFonts, chart.legend.legendEntryes[i].txPr);
|
|
}
|
|
}
|
|
if (chart.title) {
|
|
checkTxBodyDefFonts(allFonts, chart.title.txPr);
|
|
if (chart.title.tx && chart.title.tx.rich) {
|
|
checkTxBodyDefFonts(allFonts, chart.title.tx.rich);
|
|
chart.title.tx.rich.content && chart.title.tx.rich.content.Document_Get_AllFontNames(allFonts);
|
|
}
|
|
}
|
|
var plot_area = chart.plotArea;
|
|
if (plot_area) {
|
|
for (i = 0; i < plot_area.charts.length; ++i) {
|
|
plot_area.charts[i] && plot_area.charts[i].documentCreateFontMap(allFonts);
|
|
}
|
|
var cur_axis;
|
|
for (i = 0; i < plot_area.axId.length; ++i) {
|
|
cur_axis = plot_area.axId[i];
|
|
checkTxBodyDefFonts(allFonts, cur_axis.txPr);
|
|
if (cur_axis.title) {
|
|
checkTxBodyDefFonts(allFonts, cur_axis.title.txPr);
|
|
if (cur_axis.title.tx && cur_axis.title.tx.rich) {
|
|
checkTxBodyDefFonts(allFonts, cur_axis.title.tx.rich);
|
|
cur_axis.title.tx.rich.content && cur_axis.title.tx.rich.content.Document_Get_AllFontNames(allFonts);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
documentCreateFontMap: function (allFonts) {
|
|
if (this.chart) {
|
|
this.chart.title && this.chart.title.txBody && this.chart.title.txBody.content.Document_CreateFontMap(allFonts);
|
|
var i, j, k;
|
|
if (this.chart.legend) {
|
|
var calc_entryes = this.chart.legend.calcEntryes;
|
|
for (i = 0; i < calc_entryes.length; ++i) {
|
|
calc_entryes[i].txBody.content.Document_CreateFontMap(allFonts);
|
|
}
|
|
}
|
|
var axis = this.chart.plotArea.axId,
|
|
cur_axis;
|
|
for (i = axis.length - 1; i > -1; --i) {
|
|
cur_axis = axis[i];
|
|
if (cur_axis) {
|
|
cur_axis && cur_axis.title && cur_axis.title.txBody && cur_axis.title.txBody.content.Document_CreateFontMap(allFonts);
|
|
if (cur_axis.labels) {
|
|
for (j = cur_axis.labels.arrLabels.length - 1; j > -1; --j) {
|
|
cur_axis.labels.arrLabels[j] && cur_axis.labels.arrLabels[j].txBody && cur_axis.labels.arrLabels[j].txBody.content.Document_CreateFontMap(allFonts);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
var series, pts;
|
|
for (i = this.chart.plotArea.charts.length - 1; i > -1; --i) {
|
|
series = this.chart.plotArea.charts[i].series;
|
|
for (j = series.length - 1; j > -1; --j) {
|
|
pts = getPtsFromSeries(series[i]);
|
|
if (Array.isArray(pts)) {
|
|
for (k = pts.length - 1; k > -1; --k) {
|
|
pts[k].compiledDlb && pts[k].compiledDlb.txBody && pts[k].compiledDlb.txBody.content.Document_CreateFontMap(allFonts);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
setThemeOverride: function (pr) {
|
|
History.Add(this, {
|
|
Type: historyitem_ChartSpace_SetThemeOverride,
|
|
oldPr: this.themeOverride,
|
|
newPr: pr
|
|
});
|
|
this.themeOverride = pr;
|
|
},
|
|
setBDeleted: function (pr) {
|
|
History.Add(this, {
|
|
Type: historyitem_ShapeSetBDeleted,
|
|
oldPr: this.bDeleted,
|
|
newPr: pr
|
|
});
|
|
this.bDeleted = pr;
|
|
},
|
|
setParent: function (parent) {
|
|
History.Add(this, {
|
|
Type: historyitem_ChartSpace_SetParent,
|
|
oldPr: this.parent,
|
|
newPr: parent
|
|
});
|
|
this.parent = parent;
|
|
},
|
|
setChart: function (chart) {
|
|
History.Add(this, {
|
|
Type: historyitem_ChartSpace_SetChart,
|
|
oldChart: this.chart,
|
|
newChart: chart
|
|
});
|
|
this.chart = chart;
|
|
if (chart) {
|
|
chart.setParent(this);
|
|
}
|
|
},
|
|
setClrMapOvr: function (clrMapOvr) {
|
|
History.Add(this, {
|
|
Type: historyitem_ChartSpace_SetClrMapOvr,
|
|
oldClrMapOvr: this.clrMapOvr,
|
|
newClrMapOvr: clrMapOvr
|
|
});
|
|
this.clrMapOvr = clrMapOvr;
|
|
},
|
|
setDate1904: function (date1904) {
|
|
History.Add(this, {
|
|
Type: historyitem_ChartSpace_SetDate1904,
|
|
oldDate1904: this.date1904,
|
|
newDate1904: date1904
|
|
});
|
|
this.date1904 = date1904;
|
|
},
|
|
setExternalData: function (externalData) {
|
|
History.Add(this, {
|
|
Type: historyitem_ChartSpace_SetExternalData,
|
|
oldExternalData: this.externalData,
|
|
newExternalData: externalData
|
|
});
|
|
this.externalData = externalData;
|
|
},
|
|
setLang: function (lang) {
|
|
History.Add(this, {
|
|
Type: historyitem_ChartSpace_SetLang,
|
|
oldLang: this.lang,
|
|
newLang: lang
|
|
});
|
|
this.lang = lang;
|
|
},
|
|
setPivotSource: function (pivotSource) {
|
|
History.Add(this, {
|
|
Type: historyitem_ChartSpace_SetPivotSource,
|
|
oldPivotSource: this.pivotSource,
|
|
newPivotSource: pivotSource
|
|
});
|
|
this.pivotSource = pivotSource;
|
|
},
|
|
setPrintSettings: function (printSettings) {
|
|
History.Add(this, {
|
|
Type: historyitem_ChartSpace_SetPrintSettings,
|
|
oldPrintSettings: this.printSettings,
|
|
newPrintSettings: printSettings
|
|
});
|
|
this.printSettings = printSettings;
|
|
},
|
|
setProtection: function (protection) {
|
|
History.Add(this, {
|
|
Type: historyitem_ChartSpace_SetProtection,
|
|
oldProtection: this.protection,
|
|
newProtection: protection
|
|
});
|
|
this.protection = protection;
|
|
},
|
|
setRoundedCorners: function (roundedCorners) {
|
|
History.Add(this, {
|
|
Type: historyitem_ChartSpace_SetRoundedCorners,
|
|
oldRoundedCorners: this.roundedCorners,
|
|
newRoundedCorners: roundedCorners
|
|
});
|
|
this.roundedCorners = roundedCorners;
|
|
},
|
|
setSpPr: function (spPr) {
|
|
History.Add(this, {
|
|
Type: historyitem_ChartSpace_SetSpPr,
|
|
oldSpPr: this.spPr,
|
|
newSpPr: spPr
|
|
});
|
|
this.spPr = spPr;
|
|
},
|
|
setStyle: function (style) {
|
|
History.Add(this, {
|
|
Type: historyitem_ChartSpace_SetStyle,
|
|
oldStyle: this.style,
|
|
newStyle: style
|
|
});
|
|
this.style = style;
|
|
this.handleUpdateStyle();
|
|
},
|
|
setTxPr: function (txPr) {
|
|
History.Add(this, {
|
|
Type: historyitem_ChartSpace_SetTxPr,
|
|
oldTxPr: this.txPr,
|
|
newTxPr: txPr
|
|
});
|
|
this.txPr = txPr;
|
|
if (txPr) {
|
|
txPr.setParent(this);
|
|
}
|
|
},
|
|
setUserShapes: function (userShapes) {
|
|
History.Add(this, {
|
|
Type: historyitem_ChartSpace_SetUserShapes,
|
|
oldUserShapes: this.userShapes,
|
|
newUserShapes: userShapes
|
|
});
|
|
this.userShapes = userShapes;
|
|
},
|
|
getTransformMatrix: function () {
|
|
return this.transform;
|
|
},
|
|
canRotate: function () {
|
|
return false;
|
|
},
|
|
drawAdjustments: function () {},
|
|
isChart: function () {
|
|
return true;
|
|
},
|
|
isShape: function () {
|
|
return false;
|
|
},
|
|
isImage: function () {
|
|
return false;
|
|
},
|
|
isGroup: function () {
|
|
return false;
|
|
},
|
|
isPlaceholder: CShape.prototype.isPlaceholder,
|
|
getBoundsInGroup: CShape.prototype.getBoundsInGroup,
|
|
setGroup: function (group) {
|
|
History.Add(this, {
|
|
Type: historyitem_ChartSpace_SetGroup,
|
|
oldPr: this.group,
|
|
newPr: group
|
|
});
|
|
this.group = group;
|
|
},
|
|
getBase64Img: CShape.prototype.getBase64Img,
|
|
getRangeObjectStr: function () {
|
|
if (this.recalcInfo.recalculateBBox) {
|
|
this.recalculateBBox();
|
|
this.recalcInfo.recalculateBBox = false;
|
|
}
|
|
var ret = {
|
|
range: null,
|
|
bVert: null
|
|
};
|
|
if (this.bbox && this.bbox.seriesBBox) {
|
|
var r1 = this.bbox.seriesBBox.r1,
|
|
r2 = this.bbox.seriesBBox.r2,
|
|
c1 = this.bbox.seriesBBox.c1,
|
|
c2 = this.bbox.seriesBBox.c2;
|
|
ret.bVert = this.bbox.seriesBBox.bVert;
|
|
if (this.bbox.seriesBBox.bVert) {
|
|
if (this.bbox.catBBox) {
|
|
if (r1 > 0) {
|
|
--r1;
|
|
}
|
|
}
|
|
if (this.bbox.serBBox) {
|
|
if (c1 > 0) {
|
|
--c1;
|
|
}
|
|
}
|
|
} else {
|
|
if (this.bbox.catBBox) {
|
|
if (c1 > 0) {
|
|
--c1;
|
|
}
|
|
}
|
|
if (this.bbox.serBBox) {
|
|
if (r1 > 0) {
|
|
--r1;
|
|
}
|
|
}
|
|
}
|
|
var startCell = new CellAddress(r1, c1, 0);
|
|
var endCell = new CellAddress(r2, c2, 0);
|
|
if (startCell && endCell && this.bbox.worksheet) {
|
|
ret.range = parserHelp.get3DRef(this.bbox.worksheet.sName, startCell.getID() === endCell.getID() ? startCell.getID() : startCell.getID() + ":" + endCell.getID());
|
|
}
|
|
}
|
|
return ret;
|
|
},
|
|
recalculateBBox: function () {
|
|
this.bbox = null;
|
|
this.seriesBBoxes = [];
|
|
this.seriesTitlesBBoxes = [];
|
|
this.catTitlesBBoxes = [];
|
|
var series_bboxes = [],
|
|
cat_bboxes = [],
|
|
ser_titles_bboxes = [];
|
|
var series_sheet, cur_bbox, parsed_formulas;
|
|
if (this.chart && this.chart.plotArea && this.chart.plotArea.charts[0] && this.worksheet) {
|
|
var series = this.chart.plotArea.charts[0].series;
|
|
if (Array.isArray(series) && series.length > 0) {
|
|
var series_title_f = [],
|
|
cat_title_f,
|
|
series_f = [],
|
|
i,
|
|
range1;
|
|
var ref;
|
|
var b_vert, b_titles_vert;
|
|
var first_series_sheet;
|
|
for (i = 0; i < series.length; ++i) {
|
|
var numRef = null;
|
|
if (series[i].val) {
|
|
numRef = series[i].val.numRef;
|
|
} else {
|
|
if (series[i].yVal) {
|
|
numRef = series[i].yVal.numRef;
|
|
}
|
|
}
|
|
if (numRef) {
|
|
parsed_formulas = this.parseChartFormula(numRef.f);
|
|
if (parsed_formulas) {
|
|
series_bboxes = series_bboxes.concat(parsed_formulas);
|
|
if (series_f !== null && parsed_formulas.length === 1) {
|
|
series_sheet = parsed_formulas[0].worksheet;
|
|
if (!first_series_sheet) {
|
|
first_series_sheet = series_sheet;
|
|
}
|
|
if (series_sheet !== first_series_sheet) {
|
|
series_f = null;
|
|
}
|
|
if (parsed_formulas[0].bbox) {
|
|
cur_bbox = parsed_formulas[0].bbox;
|
|
if (cur_bbox.r1 !== cur_bbox.r2 && cur_bbox.c1 !== cur_bbox.c2) {
|
|
series_f = null;
|
|
}
|
|
if (series_f && series_f.length > 0) {
|
|
if (!isRealBool(b_vert)) {
|
|
if (series_f[0].c1 === cur_bbox.c1 && series_f[0].c2 === cur_bbox.c2) {
|
|
b_vert = true;
|
|
} else {
|
|
if (series_f[0].r1 === cur_bbox.r1 && series_f[0].r2 === cur_bbox.r2) {
|
|
b_vert = false;
|
|
} else {
|
|
series_f = null;
|
|
}
|
|
}
|
|
} else {
|
|
if (b_vert) {
|
|
if (! (series_f[0].c1 === cur_bbox.c1 && series_f[0].c2 === cur_bbox.c2)) {
|
|
series_f = null;
|
|
}
|
|
} else {
|
|
if (! (series_f[0].r1 === cur_bbox.r1 && series_f[0].r2 === cur_bbox.r2)) {
|
|
series_f = null;
|
|
}
|
|
}
|
|
}
|
|
if (series_f) {
|
|
if (b_vert) {
|
|
if (cur_bbox.r1 - series_f[series_f.length - 1].r1 !== 1) {
|
|
series_f = null;
|
|
}
|
|
} else {
|
|
if (cur_bbox.c1 - series_f[series_f.length - 1].c1 !== 1) {
|
|
series_f = null;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (series_f !== null) {
|
|
series_f.push(cur_bbox);
|
|
}
|
|
} else {
|
|
series_f = null;
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
series_f = null;
|
|
}
|
|
if (series[i].tx && series[i].tx.strRef) {
|
|
parsed_formulas = this.parseChartFormula(series[i].tx.strRef.f);
|
|
if (parsed_formulas) {
|
|
ser_titles_bboxes = ser_titles_bboxes.concat(parsed_formulas);
|
|
}
|
|
if (series_title_f !== null) {
|
|
if (!parsed_formulas || parsed_formulas.length !== 1) {
|
|
series_title_f = null;
|
|
continue;
|
|
}
|
|
var series_cat_sheet = parsed_formulas[0].worksheet;
|
|
if (series_cat_sheet !== first_series_sheet) {
|
|
series_title_f = null;
|
|
continue;
|
|
}
|
|
cur_bbox = parsed_formulas[0].bbox;
|
|
if (cur_bbox) {
|
|
if (cur_bbox.r1 !== cur_bbox.r2 || cur_bbox.c1 !== cur_bbox.c2) {
|
|
series_title_f = null;
|
|
continue;
|
|
}
|
|
if (!isRealBool(b_titles_vert)) {
|
|
if (series_title_f.length > 0) {
|
|
if (cur_bbox.r1 - series_title_f[0].r1 === 1) {
|
|
b_titles_vert = true;
|
|
} else {
|
|
if (cur_bbox.c1 - series_title_f[0].c1 === 1) {
|
|
b_titles_vert = false;
|
|
} else {
|
|
series_title_f = null;
|
|
continue;
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
if (b_titles_vert) {
|
|
if (cur_bbox.r1 - series_title_f[series_title_f.length - 1].r1 !== 1) {
|
|
series_title_f = null;
|
|
continue;
|
|
}
|
|
} else {
|
|
if (cur_bbox.c1 - series_title_f[series_title_f.length - 1].c1 !== 1) {
|
|
series_title_f = null;
|
|
continue;
|
|
}
|
|
}
|
|
}
|
|
series_title_f.push(cur_bbox);
|
|
} else {
|
|
series_title_f = null;
|
|
continue;
|
|
}
|
|
}
|
|
} else {
|
|
series_title_f = null;
|
|
}
|
|
}
|
|
if (series[0].cat) {
|
|
if (series[0].cat.strRef) {
|
|
ref = series[0].cat.strRef;
|
|
} else {
|
|
if (series[0].cat.numRef) {
|
|
ref = series[0].cat.numRef;
|
|
}
|
|
}
|
|
} else {
|
|
if (series[0].xVal) {
|
|
if (series[0].xVal.strRef) {
|
|
ref = series[0].xVal.strRef;
|
|
} else {
|
|
if (series[0].xVal.numRef) {
|
|
ref = series[0].xVal.numRef;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (ref) {
|
|
parsed_formulas = this.parseChartFormula(ref.f);
|
|
if (parsed_formulas) {
|
|
cat_bboxes = cat_bboxes.concat(parsed_formulas);
|
|
if (parsed_formulas.length === 1) {
|
|
var cat_title_sheet = parsed_formulas[0].worksheet;
|
|
if (cat_title_sheet === first_series_sheet) {
|
|
if (parsed_formulas[0].bbox) {
|
|
cat_title_f = parsed_formulas[0].bbox;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (series_f !== null && series_f.length === 1) {
|
|
if (series_f[0].r1 === series_f[0].r2 && series_f[0].c1 !== series_f[0].c2) {
|
|
b_vert = true;
|
|
} else {
|
|
if (series_f[0].c1 === series_f[0].c2 && series_f[0].r1 !== series_f[0].r2) {
|
|
b_vert = false;
|
|
}
|
|
}
|
|
if (!isRealBool(b_vert) && Array.isArray(series_title_f)) {
|
|
if (series_f[0].r1 === series_f[0].r2 && series_title_f[0].r1 === series_f[0].r1) {
|
|
b_vert = true;
|
|
} else {
|
|
if (series_f[0].c1 === series_f[0].c2 && series_title_f[0].c1 === series_f[0].c1) {
|
|
b_vert = false;
|
|
}
|
|
}
|
|
}
|
|
if (!isRealBool(b_vert)) {
|
|
if (cat_title_f) {
|
|
if (series_f[0].r1 === series_f[0].r2 && cat_title_f.c1 === series_f[0].c1 && cat_title_f.c2 === series_f[0].c2) {
|
|
b_vert = true;
|
|
} else {
|
|
if (series_f[0].c1 === series_f[0].c2 && cat_title_f.r1 === series_f[0].r1 && cat_title_f.r2 === series_f[0].r2) {
|
|
b_vert = false;
|
|
}
|
|
}
|
|
}
|
|
if (!isRealBool(b_vert)) {
|
|
b_vert = true;
|
|
}
|
|
}
|
|
}
|
|
if (series_f !== null && series_f.length > 0) {
|
|
this.bbox = {
|
|
seriesBBox: null,
|
|
catBBox: null,
|
|
serBBox: null,
|
|
worksheet: first_series_sheet
|
|
};
|
|
this.bbox.seriesBBox = {
|
|
r1: series_f[0].r1,
|
|
r2: series_f[series_f.length - 1].r2,
|
|
c1: series_f[0].c1,
|
|
c2: series_f[series_f.length - 1].c2,
|
|
bVert: b_vert
|
|
};
|
|
this.seriesBBoxes.push(new BBoxInfo(first_series_sheet, this.bbox.seriesBBox));
|
|
if (cat_title_f) {
|
|
if (b_vert) {
|
|
if (cat_title_f.c1 !== this.bbox.seriesBBox.c1 || cat_title_f.c2 !== this.bbox.seriesBBox.c2 || cat_title_f.r1 !== cat_title_f.r1) {
|
|
cat_title_f = null;
|
|
}
|
|
} else {
|
|
if (cat_title_f.c1 !== cat_title_f.c2 || cat_title_f.r1 !== this.bbox.seriesBBox.r1 || cat_title_f.r2 !== this.bbox.seriesBBox.r2) {
|
|
cat_title_f = null;
|
|
}
|
|
}
|
|
this.bbox.catBBox = cat_title_f;
|
|
if (cat_title_f) {
|
|
this.catTitlesBBoxes.push(new BBoxInfo(first_series_sheet, cat_title_f));
|
|
}
|
|
}
|
|
if (Array.isArray(series_title_f)) {
|
|
this.bbox.serBBox = {
|
|
r1: series_title_f[0].r1,
|
|
r2: series_title_f[series_title_f.length - 1].r2,
|
|
c1: series_title_f[0].c1,
|
|
c2: series_title_f[series_title_f.length - 1].c2
|
|
};
|
|
this.seriesTitlesBBoxes.push(new BBoxInfo(first_series_sheet, this.bbox.serBBox));
|
|
}
|
|
} else {
|
|
for (i = 0; i < series_bboxes.length; ++i) {
|
|
this.seriesBBoxes.push(new BBoxInfo(series_bboxes[i].worksheet, series_bboxes[i].bbox));
|
|
}
|
|
for (i = 0; i < cat_bboxes.length; ++i) {
|
|
this.catTitlesBBoxes.push(new BBoxInfo(cat_bboxes[i].worksheet, cat_bboxes[i].bbox));
|
|
}
|
|
for (i = 0; i < ser_titles_bboxes.length; ++i) {
|
|
this.seriesTitlesBBoxes.push(new BBoxInfo(ser_titles_bboxes[i].worksheet, ser_titles_bboxes[i].bbox));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
recalculatePointMap: function () {},
|
|
recalculateReferences: function () {
|
|
var worksheet = this.worksheet;
|
|
if (!worksheet) {
|
|
return;
|
|
}
|
|
var checkValByNumRef = function (oThis, ser, val) {
|
|
if (val && val.numRef && typeof val.numRef.f === "string") {
|
|
var first_slice = 0,
|
|
last_slice = 0;
|
|
if (val.numRef.f[0] === "(") {
|
|
first_slice = 1;
|
|
}
|
|
if (val.numRef.f[val.numRef.f.length - 1] === ")") {
|
|
last_slice = -1;
|
|
} else {
|
|
last_slice = val.numRef.f.length;
|
|
}
|
|
var f1 = val.numRef.f.slice(first_slice, last_slice);
|
|
var arr_f = f1.split(",");
|
|
var num_cache;
|
|
if (!val.numRef.numCache) {
|
|
num_cache = new CNumLit();
|
|
num_cache.setFormatCode("General");
|
|
} else {
|
|
num_cache = val.numRef.numCache;
|
|
removePtsFromLit(num_cache);
|
|
}
|
|
var lit_format_code = typeof num_cache.formatCode === "string" && num_cache.formatCode.length > 0 ? num_cache.formatCode : "General";
|
|
var pt_index = 0,
|
|
i, j, cell, pt, worksheet_id, hidden = true,
|
|
row_hidden, col_hidden;
|
|
for (i = 0; i < arr_f.length; ++i) {
|
|
var parsed_ref = parserHelp.parse3DRef(arr_f[i]);
|
|
if (parsed_ref) {
|
|
var source_worksheet = oThis.worksheet.workbook.getWorksheetByName(parsed_ref.sheet);
|
|
if (source_worksheet) {
|
|
worksheet_id = source_worksheet.getId() + "";
|
|
var range1 = source_worksheet.getRange2(parsed_ref.range);
|
|
if (range1) {
|
|
var range = range1.bbox;
|
|
if (range.r1 === range.r2) {
|
|
row_hidden = source_worksheet.getRowHidden(range.r1);
|
|
for (j = range.c1; j <= range.c2; ++j) {
|
|
if (!row_hidden && !source_worksheet.getColHidden(j)) {
|
|
cell = source_worksheet.getCell3(range.r1, j);
|
|
if (typeof cell.getValueWithFormat() === "string" && cell.getValueWithFormat().length > 0) {
|
|
hidden = false;
|
|
pt = new CNumericPoint();
|
|
pt.setIdx(pt_index);
|
|
pt.setVal(parseFloat(cell.getValue()));
|
|
if (cell.getNumFormatStr() !== lit_format_code) {
|
|
pt.setFormatCode(cell.getNumFormatStr());
|
|
}
|
|
num_cache.addPt(pt);
|
|
}
|
|
}
|
|
pt_index++;
|
|
}
|
|
} else {
|
|
col_hidden = source_worksheet.getColHidden(range.c1);
|
|
for (j = range.r1; j <= range.r2; ++j) {
|
|
if (!col_hidden && !source_worksheet.getRowHidden(j)) {
|
|
cell = source_worksheet.getCell3(j, range.c1);
|
|
if (typeof cell.getValueWithFormat() === "string" && cell.getValueWithFormat().length > 0) {
|
|
hidden = false;
|
|
pt = new CNumericPoint();
|
|
pt.setIdx(pt_index);
|
|
pt.setVal(parseFloat(cell.getValue()));
|
|
if (cell.getNumFormatStr() !== lit_format_code) {
|
|
pt.setFormatCode(cell.getNumFormatStr());
|
|
}
|
|
num_cache.addPt(pt);
|
|
}
|
|
}
|
|
pt_index++;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
num_cache.setPtCount(pt_index);
|
|
val.numRef.setNumCache(num_cache);
|
|
if (! (val instanceof CCat)) {
|
|
ser.isHidden = hidden;
|
|
ser.isHiddenForLegend = hidden;
|
|
}
|
|
}
|
|
};
|
|
var checkCatByNumRef = function (oThis, ser, cat) {
|
|
if (cat && cat.strRef && typeof cat.strRef.f === "string") {
|
|
var first_slice = 0,
|
|
last_slice = 0;
|
|
if (cat.strRef.f[0] === "(") {
|
|
first_slice = 1;
|
|
}
|
|
if (cat.strRef.f[cat.strRef.f.length - 1] === ")") {
|
|
last_slice = -1;
|
|
} else {
|
|
last_slice = cat.strRef.f.length;
|
|
}
|
|
var f1 = cat.strRef.f.slice(first_slice, last_slice);
|
|
var arr_f = f1.split(",");
|
|
var str_cache = new CStrCache();
|
|
var pt_index = 0,
|
|
i, j, cell, pt, value_width_format, row_hidden, col_hidden;
|
|
for (i = 0; i < arr_f.length; ++i) {
|
|
var parsed_ref = parserHelp.parse3DRef(arr_f[i]);
|
|
if (parsed_ref) {
|
|
var source_worksheet = oThis.worksheet.workbook.getWorksheetByName(parsed_ref.sheet);
|
|
if (source_worksheet) {
|
|
var range1 = source_worksheet.getRange2(parsed_ref.range);
|
|
if (range1) {
|
|
var range = range1.bbox;
|
|
if (range.r1 === range.r2) {
|
|
row_hidden = source_worksheet.getRowHidden(range.r1);
|
|
for (j = range.c1; j <= range.c2; ++j) {
|
|
if (!row_hidden && !source_worksheet.getColHidden(j)) {
|
|
cell = source_worksheet.getCell3(range.r1, j);
|
|
value_width_format = cell.getValueWithFormat();
|
|
if (typeof value_width_format === "string" && value_width_format.length > 0) {
|
|
pt = new CStringPoint();
|
|
pt.setIdx(pt_index);
|
|
pt.setVal(value_width_format);
|
|
str_cache.addPt(pt);
|
|
}
|
|
}
|
|
pt_index++;
|
|
}
|
|
} else {
|
|
col_hidden = source_worksheet.getColHidden(range.c1);
|
|
for (j = range.r1; j <= range.r2; ++j) {
|
|
if (!col_hidden && !source_worksheet.getRowHidden(j)) {
|
|
cell = source_worksheet.getCell3(j, range.c1);
|
|
value_width_format = cell.getValueWithFormat();
|
|
if (typeof value_width_format === "string" && value_width_format.length > 0) {
|
|
pt = new CStringPoint();
|
|
pt.setIdx(pt_index);
|
|
pt.setVal(cell.getValueWithFormat());
|
|
str_cache.addPt(pt);
|
|
}
|
|
}
|
|
pt_index++;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
str_cache.setPtCount(pt_index);
|
|
cat.strRef.setStrCache(str_cache);
|
|
}
|
|
};
|
|
var charts, series, i, j, ser;
|
|
charts = this.chart.plotArea.charts;
|
|
for (i = 0; i < charts.length; ++i) {
|
|
series = charts[i].series;
|
|
var bHaveHidden = false,
|
|
bHaveNoHidden = false;
|
|
if (charts[i].getObjectType() !== historyitem_type_ScatterChart) {
|
|
for (j = 0; j < series.length; ++j) {
|
|
ser = series[j];
|
|
checkValByNumRef(this, ser, ser.val);
|
|
checkValByNumRef(this, ser, ser.cat);
|
|
checkCatByNumRef(this, ser, ser.cat);
|
|
checkCatByNumRef(this, ser, ser.tx);
|
|
if (ser.isHidden) {
|
|
bHaveHidden = true;
|
|
} else {
|
|
bHaveNoHidden = true;
|
|
}
|
|
}
|
|
} else {
|
|
for (j = 0; j < series.length; ++j) {
|
|
ser = series[j];
|
|
checkValByNumRef(this, ser, ser.xVal);
|
|
checkValByNumRef(this, ser, ser.yVal);
|
|
checkCatByNumRef(this, ser, ser.tx);
|
|
if (ser.isHidden) {
|
|
bHaveHidden = true;
|
|
} else {
|
|
bHaveNoHidden = true;
|
|
}
|
|
}
|
|
}
|
|
if (bHaveHidden && bHaveNoHidden) {
|
|
for (j = 0; j < series.length; ++j) {
|
|
series[j].isHidden = false;
|
|
}
|
|
}
|
|
}
|
|
},
|
|
checkEmptySeries: function () {
|
|
var chart_type = this.chart.plotArea.charts[0];
|
|
var series = chart_type.series;
|
|
var checkEmptyVal = function (val) {
|
|
if (val.numRef) {
|
|
if (!val.numRef.numCache) {
|
|
return true;
|
|
}
|
|
if (val.numRef.numCache.pts.length === 0) {
|
|
return true;
|
|
}
|
|
} else {
|
|
if (val.numLit) {
|
|
if (val.numLit.pts.length === 0) {
|
|
return true;
|
|
}
|
|
} else {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
};
|
|
for (var i = 0; i < series.length; ++i) {
|
|
var ser = series[i];
|
|
if (ser.val) {
|
|
if (!checkEmptyVal(ser.val)) {
|
|
return false;
|
|
}
|
|
}
|
|
if (ser.yVal) {
|
|
if (!checkEmptyVal(ser.yVal)) {
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
return true;
|
|
},
|
|
recalculateAxis: function () {
|
|
if (this.chart && this.chart.plotArea && this.chart.plotArea.chart) {
|
|
var b_checkEmpty = this.checkEmptySeries();
|
|
this.bEmptySeries = b_checkEmpty;
|
|
var plot_area = this.chart.plotArea;
|
|
var chart_object = plot_area.chart;
|
|
var i;
|
|
var chart_type = chart_object.getObjectType();
|
|
if (b_checkEmpty) {
|
|
if (chart_type === historyitem_type_ScatterChart) {
|
|
var x_ax, y_ax;
|
|
y_ax = this.chart.plotArea.valAx;
|
|
x_ax = this.chart.plotArea.catAx;
|
|
y_ax.labels = null;
|
|
x_ax.labels = null;
|
|
y_ax.posX = null;
|
|
x_ax.posY = null;
|
|
y_ax.posY = null;
|
|
x_ax.posX = null;
|
|
y_ax.xPoints = null;
|
|
x_ax.yPoints = null;
|
|
y_ax.yPoints = null;
|
|
x_ax.xPoints = null;
|
|
} else {
|
|
if (chart_type !== historyitem_type_BarChart && (chart_type !== historyitem_type_PieChart && chart_type !== historyitem_type_DoughnutChart) || (chart_type === historyitem_type_BarChart && chart_object.barDir !== BAR_DIR_BAR)) {
|
|
var cat_ax, val_ax;
|
|
val_ax = this.chart.plotArea.valAx;
|
|
cat_ax = this.chart.plotArea.catAx;
|
|
if (val_ax && cat_ax) {
|
|
val_ax.labels = null;
|
|
cat_ax.labels = null;
|
|
val_ax.posX = null;
|
|
cat_ax.posY = null;
|
|
val_ax.posY = null;
|
|
cat_ax.posX = null;
|
|
val_ax.xPoints = null;
|
|
cat_ax.yPoints = null;
|
|
val_ax.yPoints = null;
|
|
cat_ax.xPoints = null;
|
|
}
|
|
} else {
|
|
if (chart_type === historyitem_type_BarChart && chart_object.barDir === BAR_DIR_BAR) {
|
|
var cat_ax, val_ax;
|
|
var axis_by_types = chart_object.getAxisByTypes();
|
|
cat_ax = axis_by_types.catAx[0];
|
|
val_ax = axis_by_types.valAx[0];
|
|
if (cat_ax && val_ax) {
|
|
val_ax.labels = null;
|
|
cat_ax.labels = null;
|
|
val_ax.posX = null;
|
|
cat_ax.posY = null;
|
|
val_ax.posY = null;
|
|
cat_ax.posX = null;
|
|
val_ax.xPoints = null;
|
|
cat_ax.yPoints = null;
|
|
val_ax.yPoints = null;
|
|
cat_ax.xPoints = null;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
if (chart_type === historyitem_type_ScatterChart) {
|
|
var x_ax, y_ax;
|
|
y_ax = this.chart.plotArea.valAx;
|
|
x_ax = this.chart.plotArea.catAx;
|
|
if (x_ax && y_ax) {
|
|
y_ax.labels = null;
|
|
x_ax.labels = null;
|
|
y_ax.posX = null;
|
|
x_ax.posY = null;
|
|
y_ax.posY = null;
|
|
x_ax.posX = null;
|
|
y_ax.xPoints = null;
|
|
x_ax.yPoints = null;
|
|
y_ax.yPoints = null;
|
|
x_ax.xPoints = null;
|
|
var sizes = this.getChartSizes();
|
|
var rect = {
|
|
x: sizes.startX,
|
|
y: sizes.startY,
|
|
w: sizes.w,
|
|
h: sizes.h
|
|
};
|
|
var arr_val = this.getValAxisValues();
|
|
var arr_strings = [];
|
|
var multiplier;
|
|
if (y_ax.dispUnits) {
|
|
multiplier = y_ax.dispUnits.getMultiplier();
|
|
} else {
|
|
multiplier = 1;
|
|
}
|
|
var num_fmt = y_ax.numFmt;
|
|
if (num_fmt && typeof num_fmt.formatCode === "string") {
|
|
var num_format = oNumFormatCache.get(num_fmt.formatCode);
|
|
for (i = 0; i < arr_val.length; ++i) {
|
|
var calc_value = arr_val[i] * multiplier;
|
|
var rich_value = num_format.formatToChart(calc_value);
|
|
arr_strings.push(rich_value);
|
|
}
|
|
} else {
|
|
for (i = 0; i < arr_val.length; ++i) {
|
|
var calc_value = arr_val[i] * multiplier;
|
|
arr_strings.push(calc_value + "");
|
|
}
|
|
}
|
|
var left_align_labels = true;
|
|
y_ax.labels = new CValAxisLabels(this);
|
|
y_ax.yPoints = [];
|
|
var max_width = 0;
|
|
for (i = 0; i < arr_strings.length; ++i) {
|
|
var dlbl = new CDLbl();
|
|
dlbl.parent = y_ax;
|
|
dlbl.chart = this;
|
|
dlbl.spPr = y_ax.spPr;
|
|
dlbl.txPr = y_ax.txPr;
|
|
dlbl.tx = new CChartText();
|
|
dlbl.tx.rich = CreateTextBodyFromString(arr_strings[i], this.getDrawingDocument(), dlbl);
|
|
if (i > 0) {
|
|
dlbl.lastStyleObject = y_ax.labels.arrLabels[0].lastStyleObject;
|
|
}
|
|
var cur_width = dlbl.tx.rich.recalculateByMaxWord().w;
|
|
if (cur_width > max_width) {
|
|
max_width = cur_width;
|
|
}
|
|
y_ax.labels.arrLabels.push(dlbl);
|
|
}
|
|
var hor_gap = y_ax.labels.arrLabels[0].tx.rich.content.Content[0].CompiledPr.Pr.TextPr.FontSize * (25.4 / 72);
|
|
y_ax.labels.extX = max_width + hor_gap;
|
|
var arr_x_val = this.getXValAxisValues();
|
|
var num_fmt = x_ax.numFmt;
|
|
var string_pts = [];
|
|
if (num_fmt && typeof num_fmt.formatCode === "string") {
|
|
var num_format = oNumFormatCache.get(num_fmt.formatCode);
|
|
for (i = 0; i < arr_x_val.length; ++i) {
|
|
var calc_value = arr_x_val[i] * multiplier;
|
|
var rich_value = num_format.formatToChart(calc_value);
|
|
string_pts.push({
|
|
val: rich_value
|
|
});
|
|
}
|
|
} else {
|
|
for (i = 0; i < arr_x_val.length; ++i) {
|
|
var calc_value = arr_x_val[i] * multiplier;
|
|
string_pts.push({
|
|
val: calc_value + ""
|
|
});
|
|
}
|
|
}
|
|
x_ax.labels = new CValAxisLabels(this);
|
|
var bottom_align_labels = true;
|
|
var max_height = 0;
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
var dlbl = new CDLbl();
|
|
dlbl.parent = x_ax;
|
|
dlbl.chart = this;
|
|
dlbl.spPr = x_ax.spPr;
|
|
dlbl.txPr = x_ax.txPr;
|
|
dlbl.tx = new CChartText();
|
|
dlbl.tx.rich = CreateTextBodyFromString(string_pts[i].val, this.getDrawingDocument(), dlbl);
|
|
if (x_ax.labels.arrLabels[0]) {
|
|
dlbl.lastStyleObject = x_ax.labels.arrLabels[0].lastStyleObject;
|
|
}
|
|
var cur_height = dlbl.tx.rich.recalculateByMaxWord().h;
|
|
if (cur_height > max_height) {
|
|
max_height = cur_height;
|
|
}
|
|
x_ax.labels.arrLabels.push(dlbl);
|
|
}
|
|
var vert_gap = x_ax.labels.arrLabels[0].tx.rich.content.Content[0].CompiledPr.Pr.TextPr.FontSize * (25.4 / 72);
|
|
x_ax.labels.extY = max_height + vert_gap;
|
|
var x_ax_orientation = isRealObject(x_ax.scaling) && isRealNumber(x_ax.scaling.orientation) ? x_ax.scaling.orientation : ORIENTATION_MIN_MAX;
|
|
var crosses;
|
|
if (y_ax.crosses === CROSSES_AUTO_ZERO) {
|
|
if (arr_x_val[0] <= 0 && arr_x_val[arr_x_val.length - 1] >= 0) {
|
|
crosses = 0;
|
|
} else {
|
|
if (arr_x_val[0] > 0) {
|
|
crosses = arr_x_val[0];
|
|
} else {
|
|
crosses = arr_x_val[arr_x_val.length - 1];
|
|
}
|
|
}
|
|
} else {
|
|
if (y_ax.crosses === CROSSES_MAX) {
|
|
crosses = arr_x_val[arr_x_val.length - 1];
|
|
} else {
|
|
if (y_ax.crosses === CROSSES_MIN) {
|
|
crosses = arr_x_val[0];
|
|
} else {
|
|
if (isRealNumber(y_ax.crossesAt) && arr_val[0] <= y_ax.crossesAt && arr_val[arr_val.length - 1] >= y_ax.crossesAt) {
|
|
crosses = y_ax.crossesAt;
|
|
} else {
|
|
if (arr_x_val[0] <= 0 && arr_x_val[arr_x_val.length - 1] >= 0) {
|
|
crosses = 0;
|
|
} else {
|
|
if (arr_x_val[0] > 0) {
|
|
crosses = arr_x_val[0];
|
|
} else {
|
|
crosses = arr_x_val[arr_x_val.length - 1];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
var hor_interval_width = checkFiniteNumber(rect.w / (arr_x_val[arr_x_val.length - 1] - arr_x_val[0]));
|
|
var vert_interval_height = checkFiniteNumber(rect.h / (arr_val[arr_val.length - 1] - arr_val[0]));
|
|
var arr_x_points = [],
|
|
arr_y_points = [];
|
|
var labels_pos = y_ax.tickLblPos;
|
|
var first_hor_label_half_width = (x_ax.tickLblPos === TICK_LABEL_POSITION_NONE || x_ax.bDelete) ? 0 : x_ax.labels.arrLabels[0].tx.rich.content.XLimit / 2;
|
|
var last_hor_label_half_width = (x_ax.tickLblPos === TICK_LABEL_POSITION_NONE || x_ax.bDelete) ? 0 : x_ax.labels.arrLabels[x_ax.labels.arrLabels.length - 1].tx.rich.content.XLimit / 2;
|
|
var left_gap = 0,
|
|
right_gap = 0;
|
|
if (x_ax_orientation === ORIENTATION_MIN_MAX) {
|
|
switch (labels_pos) {
|
|
case TICK_LABEL_POSITION_HIGH:
|
|
left_align_labels = false;
|
|
right_gap = Math.max(last_hor_label_half_width, y_ax.labels.extX);
|
|
hor_interval_width = checkFiniteNumber((rect.w - right_gap - first_hor_label_half_width) / (arr_x_val[arr_x_val.length - 1] - arr_x_val[0]));
|
|
for (i = 0; i < arr_x_val.length; ++i) {
|
|
arr_x_points[i] = rect.x + first_hor_label_half_width + hor_interval_width * (arr_x_val[i] - arr_x_val[0]);
|
|
}
|
|
y_ax.labels.x = rect.x + first_hor_label_half_width + hor_interval_width * (arr_x_val[arr_x_val.length - 1] - arr_x_val[0]);
|
|
y_ax.xPos = rect.x + first_hor_label_half_width + (crosses - arr_x_val[0]) * hor_interval_width;
|
|
break;
|
|
case TICK_LABEL_POSITION_LOW:
|
|
left_gap = Math.max(first_hor_label_half_width, y_ax.labels.extX);
|
|
hor_interval_width = checkFiniteNumber((rect.w - left_gap - last_hor_label_half_width) / (arr_x_val[arr_x_val.length - 1] - arr_x_val[0]));
|
|
for (i = 0; i < arr_x_val.length; ++i) {
|
|
arr_x_points[i] = rect.x + left_gap + hor_interval_width * (arr_x_val[i] - arr_x_val[0]);
|
|
}
|
|
y_ax.labels.x = rect.x + left_gap - y_ax.labels.extX;
|
|
y_ax.xPos = rect.x + left_gap + (crosses - arr_x_val[0]) * hor_interval_width;
|
|
break;
|
|
case TICK_LABEL_POSITION_NONE:
|
|
y_ax.labels = null;
|
|
hor_interval_width = checkFiniteNumber((rect.w - first_hor_label_half_width - last_hor_label_half_width) / (arr_x_val[arr_x_val.length - 1] - arr_x_val[0]));
|
|
for (i = 0; i < arr_x_val.length; ++i) {
|
|
arr_x_points[i] = rect.x + first_hor_label_half_width + hor_interval_width * (arr_x_val[i] - arr_x_val[0]);
|
|
}
|
|
y_ax.xPos = rect.x + first_hor_label_half_width + hor_interval_width * (crosses - arr_x_val[0]);
|
|
break;
|
|
default:
|
|
if (y_ax.crosses === CROSSES_MAX) {
|
|
left_align_labels = false;
|
|
right_gap = Math.max(right_gap, y_ax.labels.extX);
|
|
y_ax.labels.x = rect.x + rect.w - right_gap;
|
|
y_ax.xPos = rect.x + rect.w - right_gap;
|
|
hor_interval_width = checkFiniteNumber((rect.w - right_gap - first_hor_label_half_width) / (arr_x_val[arr_x_val.length - 1] - arr_x_val[0]));
|
|
for (i = 0; i < arr_x_val.length; ++i) {
|
|
arr_x_points[i] = rect.x + first_hor_label_half_width + hor_interval_width * (arr_x_val[i] - arr_x_val[0]);
|
|
}
|
|
} else {
|
|
hor_interval_width = checkFiniteNumber((rect.w - first_hor_label_half_width - last_hor_label_half_width) / (arr_x_val[arr_x_val.length - 1] - arr_x_val[0]));
|
|
if (first_hor_label_half_width + (crosses - arr_x_val[0]) * hor_interval_width < y_ax.labels.extX) {
|
|
hor_interval_width = checkFiniteNumber((rect.w - y_ax.labels.extX - last_hor_label_half_width) / (arr_x_val[arr_x_val.length - 1] - crosses));
|
|
}
|
|
y_ax.xPos = rect.x + rect.w - last_hor_label_half_width - (arr_x_val[arr_x_val.length - 1] - crosses) * hor_interval_width;
|
|
for (i = 0; i < arr_x_val.length; ++i) {
|
|
arr_x_points[i] = y_ax.xPos + (arr_x_val[i] - crosses) * hor_interval_width;
|
|
}
|
|
y_ax.labels.x = y_ax.xPos - y_ax.labels.extX;
|
|
}
|
|
break;
|
|
}
|
|
} else {
|
|
switch (labels_pos) {
|
|
case TICK_LABEL_POSITION_HIGH:
|
|
left_gap = Math.max(y_ax.labels.extX, last_hor_label_half_width);
|
|
hor_interval_width = checkFiniteNumber((rect.w - left_gap - first_hor_label_half_width) / (arr_x_val[arr_x_val.length - 1] - arr_x_val[0]));
|
|
y_ax.xPos = rect.x + rect.w - (crosses - arr_x_val[0]) * hor_interval_width - first_hor_label_half_width;
|
|
for (i = 0; i < arr_x_val.length; ++i) {
|
|
arr_x_points[i] = y_ax.xPos - (arr_x_val[i] - crosses) * hor_interval_width;
|
|
}
|
|
y_ax.labels.x = y_ax.xPos - (arr_x_val[arr_x_val.length - 1] - crosses) * hor_interval_width - y_ax.labels.extX;
|
|
break;
|
|
case TICK_LABEL_POSITION_LOW:
|
|
left_align_labels = false;
|
|
right_gap = Math.max(y_ax.labels.extX, first_hor_label_half_width);
|
|
hor_interval_width = checkFiniteNumber((rect.w - right_gap - last_hor_label_half_width) / (arr_x_val[arr_x_val.length - 1] - arr_x_val[0]));
|
|
y_ax.xPos = rect.x + rect.w - right_gap - (crosses - arr_x_val[0]) * hor_interval_width;
|
|
for (i = 0; i < arr_x_val.length; ++i) {
|
|
arr_x_points[i] = y_ax.xPos - (arr_x_val[i] - crosses) * hor_interval_width;
|
|
}
|
|
y_ax.labels.x = rect.x + rect.w - right_gap;
|
|
break;
|
|
case TICK_LABEL_POSITION_NONE:
|
|
y_ax.labels = null;
|
|
hor_interval_width = checkFiniteNumber((rect.w - first_hor_label_half_width - last_hor_label_half_width) / (arr_x_val[arr_x_val.length - 1] - arr_x_val[0]));
|
|
y_ax.xPos = rect.x + rect.w - first_hor_label_half_width - (crosses - arr_x_val[0]) * hor_interval_width;
|
|
for (i = 0; i < arr_x_val.length; ++i) {
|
|
arr_x_points[i] = y_ax.xPos - (arr_x_val[i] - crosses) * hor_interval_width;
|
|
}
|
|
break;
|
|
default:
|
|
if (y_ax.crosses === CROSSES_MAX) {
|
|
left_gap = Math.max(y_ax.labels.extX, last_hor_label_half_width);
|
|
hor_interval_width = checkFiniteNumber((rect.w - left_gap - first_hor_label_half_width) / (arr_x_val[arr_x_val.length - 1] - arr_x_val[0]));
|
|
y_ax.xPos = rect.x + rect.w - first_hor_label_half_width - (crosses - arr_x_val[0]) * hor_interval_width;
|
|
y_ax.labels.x = y_ax.xPos - ((arr_x_val[arr_x_val.length - 1] - crosses) * hor_interval_width) - y_ax.labels.extX;
|
|
} else {
|
|
left_align_labels = false;
|
|
hor_interval_width = checkFiniteNumber((rect.w - first_hor_label_half_width - last_hor_label_half_width) / (arr_x_val[arr_x_val.length - 1] - arr_x_val[0]));
|
|
if (first_hor_label_half_width + (crosses - arr_x_val[0]) * hor_interval_width < y_ax.labels.extX) {
|
|
hor_interval_width = checkFiniteNumber((rect.w - y_ax.labels.extX - last_hor_label_half_width) / (arr_x_val[arr_x_val.length - 1] - crosses));
|
|
}
|
|
left_align_labels = false;
|
|
y_ax.xPos = rect.x + last_hor_label_half_width + hor_interval_width * (arr_x_val[arr_x_val.length - 1] - crosses);
|
|
y_ax.labels.x = y_ax.xPos;
|
|
}
|
|
for (i = 0; i < arr_x_val.length; ++i) {
|
|
arr_x_points[i] = y_ax.xPos - (arr_x_val[i] - crosses) * hor_interval_width;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
x_ax.interval = hor_interval_width;
|
|
var y_ax_orientation = isRealObject(y_ax.scaling) && isRealNumber(y_ax.scaling.orientation) ? y_ax.scaling.orientation : ORIENTATION_MIN_MAX;
|
|
var crosses_x;
|
|
if (x_ax.crosses === CROSSES_AUTO_ZERO) {
|
|
if (arr_val[0] <= 0 && arr_val[arr_val.length - 1] >= 0) {
|
|
crosses_x = 0;
|
|
} else {
|
|
if (arr_val[0] > 0) {
|
|
crosses_x = arr_val[0];
|
|
} else {
|
|
crosses_x = arr_val[arr_val.length - 1];
|
|
}
|
|
}
|
|
} else {
|
|
if (x_ax.crosses === CROSSES_MAX) {
|
|
crosses_x = arr_val[arr_val.length - 1];
|
|
} else {
|
|
if (x_ax.crosses === CROSSES_MIN) {
|
|
crosses_x = arr_val[0];
|
|
} else {
|
|
if (isRealNumber(x_ax.crossesAt) && arr_val[0] <= x_ax.crossesAt && arr_val[arr_val.length - 1] >= x_ax.crossesAt) {
|
|
crosses_x = x_ax.crossesAt;
|
|
} else {
|
|
if (arr_val[0] <= 0 && arr_val[arr_val.length - 1] >= 0) {
|
|
crosses_x = 0;
|
|
} else {
|
|
if (arr_val[0] > 0) {
|
|
crosses_x = arr_val[0];
|
|
} else {
|
|
crosses_x = arr_val[arr_val.length - 1];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
var tick_labels_pos_x = x_ax.tickLblPos;
|
|
var first_vert_label_half_height = 0;
|
|
var last_vert_label_half_height = 0;
|
|
var bottom_gap = 0,
|
|
top_height = 0;
|
|
if (y_ax_orientation === ORIENTATION_MIN_MAX) {
|
|
switch (tick_labels_pos_x) {
|
|
case TICK_LABEL_POSITION_HIGH:
|
|
bottom_align_labels = false;
|
|
var bottom_start_point = rect.y + rect.h - first_vert_label_half_height;
|
|
top_height = Math.max(x_ax.labels.extY, last_vert_label_half_height);
|
|
vert_interval_height = checkFiniteNumber((rect.h - top_height - first_vert_label_half_height) / (arr_val[arr_val.length - 1] - arr_val[0]));
|
|
x_ax.labels.y = bottom_start_point - (arr_val[arr_val.length - 1] - arr_val[0]) * vert_interval_height - x_ax.labels.extY;
|
|
for (i = 0; i < arr_val.length; ++i) {
|
|
arr_y_points[i] = bottom_start_point - (arr_val[i] - arr_val[0]) * vert_interval_height;
|
|
}
|
|
x_ax.yPos = bottom_start_point - (crosses_x - arr_val[0]) * vert_interval_height;
|
|
break;
|
|
case TICK_LABEL_POSITION_LOW:
|
|
bottom_gap = Math.max(x_ax.labels.extY, first_vert_label_half_height);
|
|
x_ax.labels.y = rect.y + rect.h - bottom_gap;
|
|
vert_interval_height = checkFiniteNumber((rect.h - bottom_gap - last_vert_label_half_height) / (arr_val[arr_val.length - 1] - arr_val[0]));
|
|
for (i = 0; i < arr_val.length; ++i) {
|
|
arr_y_points[i] = rect.y + rect.h - bottom_gap - (arr_val[i] - arr_val[0]) * vert_interval_height;
|
|
}
|
|
x_ax.yPos = rect.y + rect.h - bottom_gap - (crosses_x - arr_val[0]) * vert_interval_height;
|
|
break;
|
|
case TICK_LABEL_POSITION_NONE:
|
|
x_ax.labels = null;
|
|
vert_interval_height = checkFiniteNumber((rect.h - first_vert_label_half_height - last_vert_label_half_height) / (arr_val[arr_val.length - 1] - arr_val[0]));
|
|
for (i = 0; i < arr_val.length; ++i) {
|
|
arr_y_points[i] = rect.y + rect.h - first_vert_label_half_height - (arr_val[i] - arr_val[0]) * vert_interval_height;
|
|
}
|
|
x_ax.yPos = rect.y + rect.h - first_vert_label_half_height - (crosses_x - arr_val[0]) * vert_interval_height;
|
|
break;
|
|
default:
|
|
if (x_ax.crosses === CROSSES_MAX) {
|
|
bottom_align_labels = false;
|
|
top_height = Math.max(x_ax.labels.extY, last_vert_label_half_height);
|
|
vert_interval_height = checkFiniteNumber((rect.h - top_height - first_vert_label_half_height) / (arr_val[arr_val.length - 1] - arr_val[0]));
|
|
for (i = 0; i < arr_val.length; ++i) {
|
|
arr_y_points[i] = rect.y + rect.h - first_vert_label_half_height - (arr_val[i] - arr_val[0]) * vert_interval_height;
|
|
}
|
|
x_ax.yPos = rect.y + rect.h - first_vert_label_half_height - (arr_val[arr_val.length - 1] - arr_val[0]) * vert_interval_height;
|
|
x_ax.labels.y = x_ax.yPos - x_ax.labels.extY;
|
|
} else {
|
|
vert_interval_height = checkFiniteNumber((rect.h - first_vert_label_half_height - last_vert_label_half_height) / (arr_val[arr_val.length - 1] - arr_val[0]));
|
|
if (first_vert_label_half_height + (crosses_x - arr_val[0]) * vert_interval_height < x_ax.labels.extY) {
|
|
vert_interval_height = checkFiniteNumber((rect.h - x_ax.labels.extY - last_vert_label_half_height) / (arr_val[arr_val.length - 1] - crosses_x));
|
|
}
|
|
x_ax.yPos = rect.y + last_vert_label_half_height + (arr_val[arr_val.length - 1] - crosses_x) * vert_interval_height;
|
|
x_ax.labels.y = x_ax.yPos;
|
|
for (i = 0; i < arr_val.length; ++i) {
|
|
arr_y_points[i] = x_ax.yPos - (arr_val[i] - crosses_x) * vert_interval_height;
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
} else {
|
|
switch (tick_labels_pos_x) {
|
|
case TICK_LABEL_POSITION_HIGH:
|
|
bottom_gap = Math.max(last_vert_label_half_height, x_ax.labels.extY);
|
|
vert_interval_height = checkFiniteNumber((rect.h - bottom_gap - first_vert_label_half_height) / (arr_val[arr_val.length - 1] - arr_val[0]));
|
|
x_ax.yPos = rect.y + first_vert_label_half_height + (crosses_x - arr_val[0]) * vert_interval_height;
|
|
for (i = 0; i < arr_val.length; ++i) {
|
|
arr_y_points[i] = x_ax.yPos + vert_interval_height * (arr_val[i] - crosses_x);
|
|
}
|
|
x_ax.labels.y = x_ax.yPos + vert_interval_height * (arr_val[arr_val.length - 1] - crosses_x);
|
|
break;
|
|
case TICK_LABEL_POSITION_LOW:
|
|
top_height = Math.max(x_ax.labels.extY, first_vert_label_half_height);
|
|
bottom_align_labels = false;
|
|
vert_interval_height = checkFiniteNumber((rect.h - top_height - last_vert_label_half_height) / (arr_val[arr_val.length - 1] - arr_val[0]));
|
|
x_ax.yPos = rect.y + top_height + (crosses_x - arr_val[0]) * vert_interval_height;
|
|
for (i = 0; i < arr_val.length; ++i) {
|
|
arr_y_points[i] = rect.y + top_height + vert_interval_height * (arr_val[i] - arr_val[0]);
|
|
}
|
|
x_ax.labels.y = rect.y + top_height - x_ax.labels.extY;
|
|
break;
|
|
case TICK_LABEL_POSITION_NONE:
|
|
x_ax.labels = null;
|
|
vert_interval_height = checkFiniteNumber((rect.h - first_vert_label_half_height - last_vert_label_half_height) / (arr_val[arr_val.length - 1] - arr_val[0]));
|
|
x_ax.yPos = rect.y + first_vert_label_half_height + (crosses_x - arr_val[0]) * vert_interval_height;
|
|
for (i = 0; i < arr_val.length; ++i) {
|
|
arr_y_points[i] = rect.y + first_vert_label_half_height + vert_interval_height * (arr_val[i] - arr_val[0]);
|
|
}
|
|
break;
|
|
default:
|
|
if (x_ax.crosses === CROSSES_MAX) {
|
|
bottom_gap = Math.max(x_ax.labels.extY, last_vert_label_half_height);
|
|
vert_interval_height = checkFiniteNumber((rect.h - bottom_gap - first_vert_label_half_height) / (arr_val[arr_val.length - 1] - arr_val[0]));
|
|
x_ax.yPos = rect.y + first_vert_label_half_height + (crosses_x - arr_val[0]) * vert_interval_height;
|
|
for (i = 0; i < arr_val.length; ++i) {
|
|
arr_y_points[i] = rect.y + first_vert_label_half_height + vert_interval_height * (arr_val[i] - arr_val[0]);
|
|
}
|
|
x_ax.labels.y = rect.y + rect.extY - bottom_gap;
|
|
} else {
|
|
bottom_align_labels = false;
|
|
vert_interval_height = checkFiniteNumber((rect.h - last_vert_label_half_height - first_vert_label_half_height) / (arr_val[arr_val.length - 1] - arr_val[0]));
|
|
if (first_vert_label_half_height + (crosses_x - arr_val[0]) * vert_interval_height < x_ax.labels.extY) {
|
|
x_ax.yPos = rect.y + x_ax.labels.extY;
|
|
vert_interval_height = checkFiniteNumber((rect.h - x_ax.labels.extY - last_vert_label_half_height) / (arr_val[arr_val.length - 1] - crosses_x));
|
|
} else {
|
|
x_ax.yPos = rect.y + rect.h - vert_interval_height * (arr_val[arr_val.length - 1] - crosses_x) - last_vert_label_half_height;
|
|
}
|
|
x_ax.labels.y = x_ax.yPos - x_ax.labels.extY;
|
|
for (i = 0; i < arr_val.length; ++i) {
|
|
arr_y_points[i] = x_ax.yPos + vert_interval_height * (arr_val[i] - crosses_x);
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
y_ax.interval = vert_interval_height;
|
|
y_ax.yPoints = [];
|
|
for (i = 0; i < arr_val.length; ++i) {
|
|
y_ax.yPoints.push({
|
|
pos: arr_y_points[i],
|
|
val: arr_val[i]
|
|
});
|
|
}
|
|
x_ax.xPoints = [];
|
|
for (i = 0; i < arr_x_val.length; ++i) {
|
|
x_ax.xPoints.push({
|
|
pos: arr_x_points[i],
|
|
val: arr_x_val[i]
|
|
});
|
|
}
|
|
var arr_labels;
|
|
var text_transform;
|
|
var local_text_transform;
|
|
if (x_ax.bDelete) {
|
|
x_ax.labels = null;
|
|
}
|
|
if (y_ax.bDelete) {
|
|
y_ax.labels = null;
|
|
}
|
|
if (x_ax.labels) {
|
|
arr_labels = x_ax.labels.arrLabels;
|
|
if (bottom_align_labels) {
|
|
var top_line = x_ax.labels.y + vert_gap;
|
|
for (i = 0; i < arr_labels.length; ++i) {
|
|
if (arr_labels[i]) {
|
|
arr_labels[i].txBody = arr_labels[i].tx.rich;
|
|
text_transform = arr_labels[i].transformText;
|
|
text_transform.Reset();
|
|
global_MatrixTransformer.TranslateAppend(text_transform, arr_x_points[i] - arr_labels[i].tx.rich.content.XLimit / 2, top_line);
|
|
local_text_transform = arr_labels[i].localTransformText;
|
|
local_text_transform.Reset();
|
|
global_MatrixTransformer.TranslateAppend(local_text_transform, arr_x_points[i] - arr_labels[i].tx.rich.content.XLimit / 2, top_line);
|
|
}
|
|
}
|
|
} else {
|
|
for (i = 0; i < arr_labels.length; ++i) {
|
|
if (arr_labels[i]) {
|
|
arr_labels[i].txBody = arr_labels[i].tx.rich;
|
|
text_transform = arr_labels[i].transformText;
|
|
text_transform.Reset();
|
|
global_MatrixTransformer.TranslateAppend(text_transform, arr_x_points[i] - arr_labels[i].tx.rich.content.XLimit / 2, x_ax.labels.y + x_ax.labels.extY - vert_gap - arr_labels[i].tx.rich.content.Get_SummaryHeight());
|
|
local_text_transform = arr_labels[i].localTransformText;
|
|
local_text_transform.Reset();
|
|
global_MatrixTransformer.TranslateAppend(local_text_transform, arr_x_points[i] - arr_labels[i].tx.rich.content.XLimit / 2, x_ax.labels.y + x_ax.labels.extY - vert_gap - arr_labels[i].tx.rich.content.Get_SummaryHeight());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (y_ax.labels) {
|
|
arr_labels = y_ax.labels.arrLabels;
|
|
if (left_align_labels) {
|
|
for (i = 0; i < arr_labels.length; ++i) {
|
|
if (arr_labels[i]) {
|
|
arr_labels[i].txBody = arr_labels[i].tx.rich;
|
|
text_transform = arr_labels[i].transformText;
|
|
text_transform.Reset();
|
|
global_MatrixTransformer.TranslateAppend(text_transform, y_ax.labels.x + y_ax.labels.extX - hor_gap - arr_labels[i].tx.rich.content.XLimit, arr_y_points[i] - arr_labels[i].tx.rich.content.Get_SummaryHeight() / 2);
|
|
local_text_transform = arr_labels[i].localTransformText;
|
|
local_text_transform.Reset();
|
|
global_MatrixTransformer.TranslateAppend(local_text_transform, y_ax.labels.x + y_ax.labels.extX - hor_gap - arr_labels[i].tx.rich.content.XLimit, arr_y_points[i] - arr_labels[i].tx.rich.content.Get_SummaryHeight() / 2);
|
|
}
|
|
}
|
|
} else {
|
|
for (i = 0; i < arr_labels.length; ++i) {
|
|
if (arr_labels[i]) {
|
|
arr_labels[i].txBody = arr_labels[i].tx.rich;
|
|
text_transform = arr_labels[i].transformText;
|
|
text_transform.Reset();
|
|
global_MatrixTransformer.TranslateAppend(text_transform, y_ax.labels.x + hor_gap, arr_y_points[i] - arr_labels[i].tx.rich.content.Get_SummaryHeight() / 2);
|
|
local_text_transform = arr_labels[i].transformText;
|
|
local_text_transform.Reset();
|
|
global_MatrixTransformer.TranslateAppend(local_text_transform, y_ax.labels.x + hor_gap, arr_y_points[i] - arr_labels[i].tx.rich.content.Get_SummaryHeight() / 2);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (y_ax.labels) {
|
|
if (y_ax_orientation === ORIENTATION_MIN_MAX) {
|
|
var t = y_ax.labels.arrLabels[y_ax.labels.arrLabels.length - 1].tx.rich.content.Get_SummaryHeight() / 2;
|
|
y_ax.labels.y = arr_y_points[arr_y_points.length - 1] - t;
|
|
y_ax.labels.extY = arr_y_points[0] - arr_y_points[arr_y_points.length - 1] + t + y_ax.labels.arrLabels[0].tx.rich.content.Get_SummaryHeight() / 2;
|
|
} else {
|
|
var t = y_ax.labels.arrLabels[0].tx.rich.content.Get_SummaryHeight() / 2;
|
|
y_ax.labels.y = arr_y_points[0] - t;
|
|
y_ax.labels.extY = arr_y_points[arr_y_points.length - 1] - arr_y_points[0] + t + y_ax.labels.arrLabels[y_ax.labels.arrLabels.length - 1].tx.rich.content.Get_SummaryHeight() / 2;
|
|
}
|
|
}
|
|
if (x_ax.labels) {
|
|
if (x_ax_orientation === ORIENTATION_MIN_MAX) {
|
|
var t = x_ax.labels.arrLabels[0].tx.rich.content.XLimit / 2;
|
|
x_ax.labels.x = arr_x_points[0] - t;
|
|
x_ax.labels.extX = arr_x_points[arr_x_points.length - 1] + x_ax.labels.arrLabels[x_ax.labels.arrLabels.length - 1].tx.rich.content.XLimit / 2 - x_ax.labels.x;
|
|
} else {
|
|
var t = x_ax.labels.arrLabels[x_ax.labels.arrLabels.length - 1].tx.rich.content.XLimit / 2;
|
|
x_ax.labels.x = arr_x_points[arr_x_points.length - 1] - t;
|
|
x_ax.labels.extX = arr_x_points[0] + x_ax.labels.arrLabels[0].tx.rich.content.XLimit / 2 - x_ax.labels.x;
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
if (chart_type !== historyitem_type_BarChart && (chart_type !== historyitem_type_PieChart && chart_type !== historyitem_type_DoughnutChart) || (chart_type === historyitem_type_BarChart && chart_object.barDir !== BAR_DIR_BAR)) {
|
|
var cat_ax, val_ax;
|
|
val_ax = this.chart.plotArea.valAx;
|
|
cat_ax = this.chart.plotArea.catAx;
|
|
if (val_ax && cat_ax) {
|
|
val_ax.labels = null;
|
|
cat_ax.labels = null;
|
|
val_ax.posX = null;
|
|
cat_ax.posY = null;
|
|
val_ax.posY = null;
|
|
cat_ax.posX = null;
|
|
val_ax.xPoints = null;
|
|
cat_ax.yPoints = null;
|
|
val_ax.yPoints = null;
|
|
cat_ax.xPoints = null;
|
|
var sizes = this.getChartSizes();
|
|
var rect = {
|
|
x: sizes.startX,
|
|
y: sizes.startY,
|
|
w: sizes.w,
|
|
h: sizes.h
|
|
};
|
|
var arr_val = this.getValAxisValues();
|
|
var arr_strings = [];
|
|
var multiplier;
|
|
if (val_ax.dispUnits) {
|
|
multiplier = val_ax.dispUnits.getMultiplier();
|
|
} else {
|
|
multiplier = 1;
|
|
}
|
|
var num_fmt = val_ax.numFmt;
|
|
if (num_fmt && typeof num_fmt.formatCode === "string") {
|
|
var num_format = oNumFormatCache.get(num_fmt.formatCode);
|
|
for (i = 0; i < arr_val.length; ++i) {
|
|
var calc_value = arr_val[i] * multiplier;
|
|
var rich_value = num_format.formatToChart(calc_value);
|
|
arr_strings.push(rich_value);
|
|
}
|
|
} else {
|
|
for (i = 0; i < arr_val.length; ++i) {
|
|
var calc_value = arr_val[i] * multiplier;
|
|
arr_strings.push(calc_value + "");
|
|
}
|
|
}
|
|
val_ax.labels = new CValAxisLabels(this);
|
|
var max_width = 0;
|
|
val_ax.yPoints = [];
|
|
var max_val_labels_text_height = 0;
|
|
var lastStyleObject = null;
|
|
for (i = 0; i < arr_strings.length; ++i) {
|
|
var dlbl = new CDLbl();
|
|
if (lastStyleObject) {
|
|
dlbl.lastStyleObject = lastStyleObject;
|
|
}
|
|
dlbl.parent = val_ax;
|
|
dlbl.chart = this;
|
|
dlbl.spPr = val_ax.spPr;
|
|
dlbl.txPr = val_ax.txPr;
|
|
dlbl.tx = new CChartText();
|
|
dlbl.tx.rich = CreateTextBodyFromString(arr_strings[i], this.getDrawingDocument(), dlbl);
|
|
var t = dlbl.tx.rich.recalculateByMaxWord();
|
|
if (!lastStyleObject) {
|
|
lastStyleObject = dlbl.lastStyleObject;
|
|
}
|
|
var cur_width = t.w;
|
|
if (cur_width > max_width) {
|
|
max_width = cur_width;
|
|
}
|
|
if (t.h > max_val_labels_text_height) {
|
|
max_val_labels_text_height = t.h;
|
|
}
|
|
val_ax.labels.arrLabels.push(dlbl);
|
|
val_ax.yPoints.push({
|
|
val: arr_val[i],
|
|
pos: null
|
|
});
|
|
}
|
|
var val_axis_labels_gap = val_ax.labels.arrLabels[0].tx.rich.content.Content[0].CompiledPr.Pr.TextPr.FontSize * 25.4 / 72;
|
|
val_ax.labels.extX = max_width + val_axis_labels_gap;
|
|
var ser = chart_object.series[0];
|
|
var string_pts = [],
|
|
pts_len = 0;
|
|
if (ser && ser.cat) {
|
|
var lit, b_num_lit = true;
|
|
if (ser.cat.strRef && ser.cat.strRef.strCache) {
|
|
lit = ser.cat.strRef.strCache;
|
|
} else {
|
|
if (ser.cat.strLit) {
|
|
lit = ser.cat.strLit;
|
|
} else {
|
|
if (ser.cat.numRef && ser.cat.numRef.numCache) {
|
|
lit = ser.cat.numRef.numCache;
|
|
b_num_lit = true;
|
|
} else {
|
|
if (ser.cat.numLit) {
|
|
lit = ser.cat.numLit;
|
|
b_num_lit = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (lit) {
|
|
var lit_format = null,
|
|
pt_format = null;
|
|
if (b_num_lit && typeof lit.formatCode === "string" && lit.formatCode.length > 0) {
|
|
lit_format = oNumFormatCache.get(lit.formatCode);
|
|
}
|
|
pts_len = lit.ptCount;
|
|
for (i = 0; i < pts_len; ++i) {
|
|
var pt = lit.getPtByIndex(i);
|
|
if (pt) {
|
|
var str_pt;
|
|
if (b_num_lit) {
|
|
if (typeof pt.formatCode === "string" && pt.formatCode.length > 0) {
|
|
pt_format = oNumFormatCache.get(pt.formatCode);
|
|
if (pt_format) {
|
|
str_pt = pt_format.formatToChart(pt.val);
|
|
} else {
|
|
str_pt = pt.val;
|
|
}
|
|
} else {
|
|
if (lit_format) {
|
|
str_pt = lit_format.formatToChart(pt.val);
|
|
} else {
|
|
str_pt = pt.val;
|
|
}
|
|
}
|
|
} else {
|
|
str_pt = pt.val;
|
|
}
|
|
string_pts.push({
|
|
val: str_pt + ""
|
|
});
|
|
} else {
|
|
string_pts.push({
|
|
val: i + ""
|
|
});
|
|
}
|
|
}
|
|
}
|
|
}
|
|
pts_len = 0;
|
|
for (i = 0; i < chart_object.series.length; ++i) {
|
|
var cur_pts = null;
|
|
ser = chart_object.series[i];
|
|
if (ser.val) {
|
|
if (ser.val.numRef && ser.val.numRef.numCache) {
|
|
cur_pts = ser.val.numRef.numCache;
|
|
} else {
|
|
if (ser.val.numLit) {
|
|
cur_pts = ser.val.numLit;
|
|
}
|
|
}
|
|
if (cur_pts) {
|
|
pts_len = Math.max(pts_len, cur_pts.ptCount);
|
|
}
|
|
}
|
|
}
|
|
if (pts_len > string_pts.length) {
|
|
for (i = 0; i < pts_len; ++i) {
|
|
string_pts.push({
|
|
val: i + 1 + ""
|
|
});
|
|
}
|
|
}
|
|
var crosses;
|
|
if (val_ax.crosses === CROSSES_AUTO_ZERO || val_ax.crosses === CROSSES_MIN) {
|
|
crosses = 1;
|
|
} else {
|
|
if (val_ax.crosses === CROSSES_MAX) {
|
|
crosses = string_pts.length;
|
|
} else {
|
|
if (isRealNumber(val_ax.crossesAt)) {
|
|
if (val_ax.crossesAt <= string_pts.length + 1 && val_ax.crossesAt > 0) {
|
|
crosses = val_ax.crossesAt;
|
|
} else {
|
|
if (val_ax.crossesAt <= 0) {
|
|
crosses = 1;
|
|
} else {
|
|
crosses = string_pts.length;
|
|
}
|
|
}
|
|
} else {
|
|
crosses = 1;
|
|
}
|
|
}
|
|
}
|
|
var cat_ax_orientation = cat_ax.scaling && isRealNumber(cat_ax.scaling.orientation) ? cat_ax.scaling.orientation : ORIENTATION_MIN_MAX;
|
|
var point_width = rect.w / string_pts.length;
|
|
var labels_pos = val_ax.tickLblPos;
|
|
if (val_ax.bDelete) {
|
|
labels_pos = TICK_LABEL_POSITION_NONE;
|
|
}
|
|
var cross_between = isRealNumber(val_ax.crossBetween) ? val_ax.crossBetween : (chart_type === historyitem_type_AreaChart ? CROSS_BETWEEN_MID_CAT : CROSS_BETWEEN_BETWEEN);
|
|
var left_val_ax_labels_align = true;
|
|
var intervals_count = cross_between === CROSS_BETWEEN_MID_CAT ? string_pts.length - 1 : string_pts.length;
|
|
var point_interval = rect.w / intervals_count;
|
|
if (cross_between === CROSS_BETWEEN_MID_CAT) {
|
|
point_interval = checkFiniteNumber(rect.w / (string_pts.length - 1));
|
|
} else {
|
|
point_interval = checkFiniteNumber(rect.w / string_pts.length);
|
|
}
|
|
var left_points_width, right_point_width;
|
|
var arr_cat_labels_points = [];
|
|
if (cat_ax_orientation === ORIENTATION_MIN_MAX) {
|
|
if (labels_pos === TICK_LABEL_POSITION_NEXT_TO || !isRealNumber(labels_pos)) {
|
|
if (val_ax.crosses === CROSSES_MAX) {
|
|
left_val_ax_labels_align = false;
|
|
val_ax.labels.x = rect.x + rect.w - val_ax.labels.extX;
|
|
point_interval = (rect.w - val_ax.labels.extX) / intervals_count;
|
|
val_ax.posX = val_ax.labels.x;
|
|
if (cross_between === CROSS_BETWEEN_MID_CAT) {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = rect.x + point_interval * i;
|
|
}
|
|
} else {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = point_interval / 2 + rect.x + point_interval * i;
|
|
}
|
|
}
|
|
} else {
|
|
left_points_width = point_interval * (crosses - 1);
|
|
if (left_points_width < val_ax.labels.extX) {
|
|
var right_intervals_count = intervals_count - (crosses - 1);
|
|
point_interval = (rect.w - val_ax.labels.extX) / right_intervals_count;
|
|
val_ax.labels.x = rect.x;
|
|
var start_point = val_ax.labels.x + val_ax.labels.extX - (crosses - 1) * point_interval;
|
|
if (cross_between === CROSS_BETWEEN_MID_CAT) {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = start_point + point_interval * i;
|
|
}
|
|
} else {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = point_interval / 2 + start_point + point_interval * i;
|
|
}
|
|
}
|
|
} else {
|
|
val_ax.labels.x = rect.x + left_points_width - val_ax.labels.extX;
|
|
if (cross_between === CROSS_BETWEEN_MID_CAT) {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = rect.x + point_interval * i;
|
|
}
|
|
} else {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = point_interval / 2 + rect.x + point_interval * i;
|
|
}
|
|
}
|
|
}
|
|
val_ax.posX = val_ax.labels.x + val_ax.labels.extX;
|
|
}
|
|
} else {
|
|
if (labels_pos === TICK_LABEL_POSITION_LOW) {
|
|
point_interval = (rect.w - val_ax.labels.extX) / intervals_count;
|
|
val_ax.labels.x = rect.x;
|
|
if (cross_between === CROSS_BETWEEN_MID_CAT) {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = rect.x + val_ax.labels.extX + point_interval * i;
|
|
}
|
|
} else {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = rect.x + val_ax.labels.extX + point_interval / 2 + point_interval * i;
|
|
}
|
|
}
|
|
val_ax.posX = val_ax.labels.x + val_ax.labels.extX + point_interval * (crosses - 1);
|
|
} else {
|
|
if (labels_pos === TICK_LABEL_POSITION_HIGH) {
|
|
point_interval = (rect.w - val_ax.labels.extX) / intervals_count;
|
|
val_ax.labels.x = rect.x + rect.w - val_ax.labels.extX;
|
|
left_val_ax_labels_align = false;
|
|
if (cross_between === CROSS_BETWEEN_MID_CAT) {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = rect.x + point_interval * i;
|
|
}
|
|
} else {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = point_interval / 2 + rect.x + point_interval * i;
|
|
}
|
|
}
|
|
val_ax.posX = rect.x + point_interval * (crosses - 1);
|
|
} else {
|
|
val_ax.labels = null;
|
|
if (cross_between === CROSS_BETWEEN_MID_CAT) {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = rect.x + point_interval * i;
|
|
}
|
|
} else {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = point_interval / 2 + rect.x + point_interval * i;
|
|
}
|
|
}
|
|
val_ax.posX = rect.x + point_interval * (crosses - 1);
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
if (labels_pos === TICK_LABEL_POSITION_NEXT_TO || !isRealNumber(labels_pos)) {
|
|
if (val_ax.crosses === CROSSES_MAX) {
|
|
val_ax.labels.x = rect.x;
|
|
point_interval = (rect.w - val_ax.labels.extX) / intervals_count;
|
|
if (cross_between === CROSS_BETWEEN_MID_CAT) {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = rect.x + rect.w - point_interval * i;
|
|
}
|
|
} else {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = rect.x + rect.w - point_interval / 2 - point_interval * i;
|
|
}
|
|
}
|
|
val_ax.posX = val_ax.labels.x + val_ax.labels.extX;
|
|
} else {
|
|
left_val_ax_labels_align = false;
|
|
right_point_width = point_interval * (crosses - 1);
|
|
if (right_point_width < val_ax.labels.extX) {
|
|
val_ax.labels.x = rect.x + rect.w - val_ax.labels.extX;
|
|
var left_points_interval_count = intervals_count - (crosses - 1);
|
|
point_interval = (val_ax.labels.x - rect.x) / left_points_interval_count;
|
|
var start_point_right = rect.x + point_interval * intervals_count;
|
|
if (cross_between === CROSS_BETWEEN_MID_CAT) {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = start_point_right - point_interval * i;
|
|
}
|
|
} else {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = start_point_right - point_interval / 2 - point_interval * i;
|
|
}
|
|
}
|
|
} else {
|
|
val_ax.labels.x = rect.x + rect.w - right_point_width;
|
|
if (cross_between === CROSS_BETWEEN_MID_CAT) {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = rect.x + rect.w - point_interval * i;
|
|
}
|
|
} else {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = rect.x + rect.w - point_interval / 2 - point_interval * i;
|
|
}
|
|
}
|
|
}
|
|
val_ax.posX = val_ax.labels.x;
|
|
}
|
|
} else {
|
|
if (labels_pos === TICK_LABEL_POSITION_LOW) {
|
|
left_val_ax_labels_align = false;
|
|
point_interval = (rect.w - val_ax.labels.extX) / intervals_count;
|
|
val_ax.labels.x = rect.x + rect.w - val_ax.labels.extX;
|
|
if (cross_between === CROSS_BETWEEN_MID_CAT) {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = val_ax.labels.x - point_interval * i;
|
|
}
|
|
} else {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = val_ax.labels.x - point_interval / 2 - point_interval * i;
|
|
}
|
|
}
|
|
val_ax.posX = rect.x + rect.w - point_interval * (crosses - 1) - val_ax.labels.extX;
|
|
} else {
|
|
if (labels_pos === TICK_LABEL_POSITION_HIGH) {
|
|
point_interval = (rect.w - val_ax.labels.extX) / intervals_count;
|
|
val_ax.labels.x = rect.x;
|
|
if (cross_between === CROSS_BETWEEN_MID_CAT) {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = rect.x + rect.w - point_interval * i;
|
|
}
|
|
} else {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = rect.x + rect.w - point_interval / 2 - point_interval * i;
|
|
}
|
|
}
|
|
val_ax.posX = rect.x + rect.w - point_interval * (crosses - 1);
|
|
} else {
|
|
val_ax.labels = null;
|
|
if (cross_between === CROSS_BETWEEN_MID_CAT) {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = rect.x + rect.w - point_interval * i;
|
|
}
|
|
} else {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = rect.x + rect.w - point_interval / 2 - point_interval * i;
|
|
}
|
|
}
|
|
val_ax.posX = rect.x + rect.w - point_interval * (crosses - 1);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
cat_ax.interval = point_interval;
|
|
var diagram_width = point_interval * intervals_count;
|
|
var max_cat_label_width = diagram_width / string_pts.length;
|
|
cat_ax.labels = null;
|
|
var b_rotated = false;
|
|
if (TICK_LABEL_POSITION_NONE !== cat_ax.tickLblPos && !(cat_ax.bDelete === true)) {
|
|
cat_ax.labels = new CValAxisLabels(this);
|
|
var tick_lbl_skip = isRealNumber(cat_ax.tickLblSkip) ? cat_ax.tickLblSkip : (string_pts.length < SKIP_LBL_LIMIT ? 1 : Math.floor(string_pts.length / SKIP_LBL_LIMIT));
|
|
var max_min_width = 0;
|
|
var max_max_width = 0;
|
|
var arr_max_contents = [];
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
var dlbl = null;
|
|
if (i % tick_lbl_skip === 0) {
|
|
dlbl = new CDLbl();
|
|
dlbl.parent = cat_ax;
|
|
dlbl.chart = this;
|
|
dlbl.spPr = cat_ax.spPr;
|
|
dlbl.txPr = cat_ax.txPr;
|
|
dlbl.tx = new CChartText();
|
|
dlbl.tx.rich = CreateTextBodyFromString(string_pts[i].val, this.getDrawingDocument(), dlbl);
|
|
var content = dlbl.tx.rich.content;
|
|
content.Set_ApplyToAll(true);
|
|
content.Set_ParagraphAlign(align_Center);
|
|
content.Set_ApplyToAll(false);
|
|
dlbl.txBody = dlbl.tx.rich;
|
|
if (cat_ax.labels.arrLabels.length > 0) {
|
|
dlbl.lastStyleObject = cat_ax.labels.arrLabels[0].lastStyleObject;
|
|
}
|
|
var min_max = dlbl.tx.rich.content.Recalculate_MinMaxContentWidth();
|
|
var max_min_content_width = min_max.Min;
|
|
if (max_min_content_width > max_min_width) {
|
|
max_min_width = max_min_content_width;
|
|
}
|
|
if (min_max.Max > max_max_width) {
|
|
max_max_width = min_max.Max;
|
|
}
|
|
}
|
|
cat_ax.labels.arrLabels.push(dlbl);
|
|
}
|
|
var stake_offset = isRealNumber(cat_ax.lblOffset) ? cat_ax.lblOffset / 100 : 1;
|
|
var labels_offset = cat_ax.labels.arrLabels[0].tx.rich.content.Content[0].CompiledPr.Pr.TextPr.FontSize * (25.4 / 72) * stake_offset;
|
|
if (max_min_width < max_cat_label_width) {
|
|
var max_height = 0;
|
|
for (i = 0; i < cat_ax.labels.arrLabels.length; ++i) {
|
|
if (cat_ax.labels.arrLabels[i]) {
|
|
var content = cat_ax.labels.arrLabels[i].tx.rich.content;
|
|
content.Reset(0, 0, max_cat_label_width, 20000);
|
|
content.Recalculate_Page(0, true);
|
|
var cur_height = content.Get_SummaryHeight();
|
|
if (cur_height > max_height) {
|
|
max_height = cur_height;
|
|
}
|
|
}
|
|
}
|
|
cat_ax.labels.extY = max_height + labels_offset;
|
|
if (cross_between === CROSS_BETWEEN_MID_CAT) {
|
|
var left_gap_point, right_gap_point;
|
|
if (cat_ax_orientation === ORIENTATION_MIN_MAX) {
|
|
var first_label_left_gap = cat_ax.labels.arrLabels[0].tx.rich.getMaxContentWidth(max_cat_label_width) / 2;
|
|
var last_labels_right_gap = cat_ax.labels.arrLabels[cat_ax.labels.arrLabels.length - 1] ? cat_ax.labels.arrLabels[cat_ax.labels.arrLabels.length - 1].tx.rich.getMaxContentWidth(max_cat_label_width) / 2 : 0;
|
|
left_gap_point = arr_cat_labels_points[0] - first_label_left_gap;
|
|
if (rect.x > left_gap_point) {
|
|
if (val_ax.labels) {
|
|
val_ax.labels.x = rect.x + (val_ax.labels.x - left_gap_point) * checkFiniteNumber((rect.w / (rect.x + rect.w - left_gap_point)));
|
|
}
|
|
point_interval *= checkFiniteNumber((rect.w / (rect.x + rect.w - left_gap_point)));
|
|
for (i = 0; i < arr_cat_labels_points.length; ++i) {
|
|
arr_cat_labels_points[i] = rect.x + (arr_cat_labels_points[i] - left_gap_point) * checkFiniteNumber((rect.w / (rect.x + rect.w - left_gap_point)));
|
|
}
|
|
val_ax.posX = rect.x + (val_ax.posX - left_gap_point) * checkFiniteNumber((rect.w / (rect.x + rect.w - left_gap_point)));
|
|
}
|
|
right_gap_point = arr_cat_labels_points[arr_cat_labels_points.length - 1] + last_labels_right_gap;
|
|
if (right_gap_point > rect.x + rect.w) {
|
|
if (val_ax.labels) {
|
|
val_ax.labels.x = rect.x + (val_ax.labels.x - rect.x) * checkFiniteNumber((rect.w / (right_gap_point - rect.x)));
|
|
}
|
|
point_interval *= checkFiniteNumber((rect.w / (right_gap_point - rect.x)));
|
|
for (i = 0; i < arr_cat_labels_points.length; ++i) {
|
|
arr_cat_labels_points[i] = rect.x + (arr_cat_labels_points[i] - rect.x) * checkFiniteNumber((rect.w / (right_gap_point - rect.x)));
|
|
}
|
|
val_ax.posX = rect.x + (val_ax.posX - rect.x) * checkFiniteNumber((rect.w / (right_gap_point - rect.x)));
|
|
}
|
|
} else {
|
|
var last_label_left_gap = cat_ax.labels.arrLabels[cat_ax.labels.arrLabels.length - 1] ? cat_ax.labels.arrLabels[cat_ax.labels.arrLabels.length - 1].tx.rich.getMaxContentWidth(max_cat_label_width) / 2 : 0;
|
|
var first_label_right_gap = cat_ax.labels.arrLabels[0].tx.rich.getMaxContentWidth(max_cat_label_width) / 2;
|
|
left_gap_point = arr_cat_labels_points[arr_cat_labels_points.length - 1] - last_label_left_gap;
|
|
right_gap_point = arr_cat_labels_points[0] + first_label_right_gap;
|
|
if (rect.x > left_gap_point) {
|
|
if (val_ax.labels) {
|
|
val_ax.labels.x = rect.x + (val_ax.labels.x - left_gap_point) * checkFiniteNumber((rect.w / (rect.x + rect.w - left_gap_point)));
|
|
}
|
|
point_interval *= checkFiniteNumber((rect.w / (rect.x + rect.w - left_gap_point)));
|
|
for (i = 0; i < arr_cat_labels_points.length; ++i) {
|
|
arr_cat_labels_points[i] = rect.x + (arr_cat_labels_points[i] - left_gap_point) * checkFiniteNumber((rect.w / (rect.x + rect.w - left_gap_point)));
|
|
}
|
|
val_ax.posX = rect.x + (val_ax.posX - left_gap_point) * checkFiniteNumber((rect.w / (rect.x + rect.w - left_gap_point)));
|
|
}
|
|
if (right_gap_point > rect.x + rect.w) {
|
|
if (val_ax.labels) {
|
|
val_ax.labels.x = rect.x + (val_ax.labels.x - rect.x) * checkFiniteNumber((rect.w / (right_gap_point - rect.x)));
|
|
}
|
|
point_interval *= checkFiniteNumber((rect.w / (right_gap_point - rect.x)));
|
|
for (i = 0; i < arr_cat_labels_points.length; ++i) {
|
|
arr_cat_labels_points[i] = rect.x + (arr_cat_labels_points[i] - rect.x) * checkFiniteNumber((rect.w / (right_gap_point - rect.x)));
|
|
}
|
|
val_ax.posX = rect.x + (val_ax.posX - rect.x) * checkFiniteNumber((rect.w / (right_gap_point - rect.x)));
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
b_rotated = true;
|
|
var arr_left_points = [];
|
|
var arr_right_points = [];
|
|
var max_rotated_height = 0;
|
|
for (i = 0; i < cat_ax.labels.arrLabels.length; ++i) {
|
|
if (cat_ax.labels.arrLabels[i]) {
|
|
var wh = cat_ax.labels.arrLabels[i].tx.rich.getContentOneStringSizes();
|
|
arr_left_points[i] = arr_cat_labels_points[i] - (wh.w * Math.cos(Math.PI / 4) + wh.h * Math.sin(Math.PI / 4) - wh.h * Math.sin(Math.PI / 4) / 2);
|
|
arr_right_points[i] = arr_cat_labels_points[i] + wh.h * Math.sin(Math.PI / 4) / 2;
|
|
var h2 = wh.w * Math.sin(Math.PI / 4) + wh.h * Math.cos(Math.PI / 4);
|
|
if (h2 > max_rotated_height) {
|
|
max_rotated_height = h2;
|
|
}
|
|
} else {
|
|
arr_left_points[i] = arr_cat_labels_points[i];
|
|
arr_right_points[i] = arr_cat_labels_points[i];
|
|
}
|
|
}
|
|
cat_ax.labels.extY = max_rotated_height + labels_offset;
|
|
left_gap_point = Math.min.apply(Math, arr_left_points);
|
|
right_gap_point = Math.max.apply(Math, arr_right_points);
|
|
if (ORIENTATION_MIN_MAX === cat_ax_orientation) {
|
|
if (rect.x > left_gap_point) {
|
|
if (val_ax.labels) {
|
|
val_ax.labels.x = rect.x + (val_ax.labels.x - left_gap_point) * checkFiniteNumber((rect.w / (rect.x + rect.w - left_gap_point)));
|
|
}
|
|
point_interval *= checkFiniteNumber(rect.w / (rect.x + rect.w - left_gap_point));
|
|
for (i = 0; i < arr_cat_labels_points.length; ++i) {
|
|
arr_cat_labels_points[i] = rect.x + (arr_cat_labels_points[i] - left_gap_point) * checkFiniteNumber((rect.w / (rect.x + rect.w - left_gap_point)));
|
|
}
|
|
val_ax.posX = rect.x + (val_ax.posX - left_gap_point) * checkFiniteNumber((rect.w / (rect.x + rect.w - left_gap_point)));
|
|
}
|
|
if (right_gap_point > rect.x + rect.w) {
|
|
if (val_ax.labels) {
|
|
val_ax.labels.x = rect.x + (val_ax.labels.x - rect.x) * checkFiniteNumber((rect.w / (right_gap_point - rect.x)));
|
|
}
|
|
point_interval *= checkFiniteNumber((right_gap_point - rect.x) / (rect.x + rect.w - rect.x));
|
|
for (i = 0; i < arr_cat_labels_points.length; ++i) {
|
|
arr_cat_labels_points[i] = rect.x + (arr_cat_labels_points[i] - rect.x) * checkFiniteNumber((rect.w / (right_gap_point - rect.x)));
|
|
}
|
|
val_ax.posX = rect.x + (val_ax.posX - rect.x) * checkFiniteNumber((rect.w / (right_gap_point - rect.x)));
|
|
}
|
|
} else {
|
|
if (rect.x > left_gap_point) {
|
|
if (val_ax.labels) {
|
|
val_ax.labels.x = rect.x + (val_ax.labels.x - left_gap_point) * checkFiniteNumber((rect.w / (rect.x + rect.w - left_gap_point)));
|
|
}
|
|
point_interval *= (rect.w) / checkFiniteNumber((rect.x + rect.w - left_gap_point));
|
|
for (i = 0; i < arr_cat_labels_points.length; ++i) {
|
|
arr_cat_labels_points[i] = rect.x + (arr_cat_labels_points[i] - left_gap_point) * checkFiniteNumber((rect.w / (rect.x + rect.w - left_gap_point)));
|
|
}
|
|
val_ax.posX = rect.x + (val_ax.posX - left_gap_point) * checkFiniteNumber((rect.w / (rect.x + rect.w - left_gap_point)));
|
|
}
|
|
if (right_gap_point > rect.x + rect.w) {
|
|
if (val_ax.labels) {
|
|
val_ax.labels.x = rect.x + (val_ax.labels.x - rect.x) * checkFiniteNumber((rect.w / (right_gap_point - rect.x)));
|
|
}
|
|
point_interval *= checkFiniteNumber((right_gap_point - rect.x) / (rect.x + rect.w - rect.x));
|
|
for (i = 0; i < arr_cat_labels_points.length; ++i) {
|
|
arr_cat_labels_points[i] = rect.x + (arr_cat_labels_points[i] - rect.x) * checkFiniteNumber((rect.w / (right_gap_point - rect.x)));
|
|
}
|
|
val_ax.posX = rect.x + (val_ax.posX - rect.x) * checkFiniteNumber((rect.w / (right_gap_point - rect.x)));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
var cat_labels_align_bottom = true;
|
|
var crosses_val_ax;
|
|
if (cat_ax.crosses === CROSSES_AUTO_ZERO) {
|
|
if (arr_val[0] <= 0 && arr_val[arr_val.length - 1] >= 0) {
|
|
crosses_val_ax = 0;
|
|
} else {
|
|
if (arr_val[arr_val.length - 1] < 0) {
|
|
crosses_val_ax = arr_val[arr_val.length - 1];
|
|
} else {
|
|
crosses_val_ax = arr_val[0];
|
|
}
|
|
}
|
|
} else {
|
|
if (cat_ax.crosses === CROSSES_MIN) {
|
|
crosses_val_ax = arr_val[0];
|
|
} else {
|
|
if (cat_ax.crosses === CROSSES_MAX) {
|
|
crosses_val_ax = arr_val[arr_val.length - 1];
|
|
} else {
|
|
if (isRealNumber(cat_ax.crossesAt) && cat_ax.crossesAt >= arr_val[0] && cat_ax.crossesAt <= arr_val[arr_val.length - 1]) {
|
|
if (cat_ax.crossesAt >= arr_val[0] && cat_ax.crossesAt <= arr_val[arr_val.length - 1]) {
|
|
crosses_val_ax = cat_ax.crossesAt;
|
|
}
|
|
} else {
|
|
if (arr_val[0] <= 0 && arr_val[arr_val.length - 1] >= 0) {
|
|
crosses_val_ax = 0;
|
|
} else {
|
|
if (arr_val[arr_val.length - 1] < 0) {
|
|
crosses_val_ax = arr_val[arr_val.length - 1];
|
|
} else {
|
|
crosses_val_ax = arr_val[0];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
var val_ax_orientation = val_ax.scaling && isRealNumber(val_ax.scaling.orientation) ? val_ax.scaling.orientation : ORIENTATION_MIN_MAX;
|
|
var hor_labels_pos = cat_ax.tickLblPos;
|
|
var arr_val_labels_points = [];
|
|
var top_val_axis_gap, bottom_val_axis_gap;
|
|
var first_val_axis_label_half_height = 0;
|
|
var last_val_axis_label_half_height = 0;
|
|
var unit_height = checkFiniteNumber((rect.h - first_val_axis_label_half_height - last_val_axis_label_half_height) / (arr_val[arr_val.length - 1] - arr_val[0]));
|
|
var cat_ax_ext_y = cat_ax.labels ? cat_ax.labels.extY : 0;
|
|
if (val_ax_orientation === ORIENTATION_MIN_MAX) {
|
|
if (hor_labels_pos === TICK_LABEL_POSITION_NEXT_TO || !isRealNumber(hor_labels_pos)) {
|
|
if (cat_ax.crosses === CROSSES_MAX) {
|
|
cat_labels_align_bottom = false;
|
|
top_val_axis_gap = Math.max(last_val_axis_label_half_height, cat_ax_ext_y);
|
|
unit_height = checkFiniteNumber((rect.h - top_val_axis_gap - first_val_axis_label_half_height) / (arr_val[arr_val.length - 1] - arr_val[0]));
|
|
cat_labels_align_bottom = false;
|
|
cat_ax.posY = rect.y + rect.h - first_val_axis_label_half_height - (crosses_val_ax - arr_val[0]) * unit_height;
|
|
if (cat_ax.labels) {
|
|
cat_ax.labels.y = cat_ax.posY - cat_ax_ext_y;
|
|
}
|
|
} else {
|
|
var bottom_points_height = first_val_axis_label_half_height + (crosses_val_ax - arr_val[0]) * unit_height;
|
|
if (bottom_points_height < cat_ax_ext_y) {
|
|
unit_height = checkFiniteNumber((rect.h - last_val_axis_label_half_height - cat_ax_ext_y) / (arr_val[arr_val.length - 1] - crosses_val_ax));
|
|
}
|
|
cat_ax.posY = rect.y + last_val_axis_label_half_height + (arr_val[arr_val.length - 1] - crosses_val_ax) * unit_height;
|
|
if (cat_ax.labels) {
|
|
cat_ax.labels.y = cat_ax.posY;
|
|
}
|
|
}
|
|
for (i = 0; i < arr_val.length; ++i) {
|
|
arr_val_labels_points[i] = cat_ax.posY - (arr_val[i] - crosses_val_ax) * unit_height;
|
|
}
|
|
} else {
|
|
if (hor_labels_pos === TICK_LABEL_POSITION_LOW) {
|
|
bottom_val_axis_gap = Math.max(cat_ax_ext_y, first_val_axis_label_half_height);
|
|
unit_height = checkFiniteNumber((rect.h - bottom_val_axis_gap - last_val_axis_label_half_height) / (arr_val[arr_val.length - 1] - arr_val[0]));
|
|
cat_ax.posY = rect.y + last_val_axis_label_half_height + (arr_val[arr_val.length - 1] - crosses_val_ax) * unit_height;
|
|
if (cat_ax.labels) {
|
|
cat_ax.labels.y = rect.y + rect.h - bottom_val_axis_gap;
|
|
}
|
|
for (i = 0; i < arr_val.length; ++i) {
|
|
arr_val_labels_points[i] = cat_ax.posY - (arr_val[i] - crosses_val_ax) * unit_height;
|
|
}
|
|
} else {
|
|
if (hor_labels_pos === TICK_LABEL_POSITION_HIGH) {
|
|
top_val_axis_gap = Math.max(last_val_axis_label_half_height, cat_ax_ext_y);
|
|
unit_height = checkFiniteNumber((rect.h - top_val_axis_gap - first_val_axis_label_half_height) / (arr_val[arr_val.length - 1] - arr_val[0]));
|
|
cat_labels_align_bottom = false;
|
|
cat_ax.posY = rect.y + rect.h - first_val_axis_label_half_height - (crosses_val_ax - arr_val[0]) * unit_height;
|
|
if (cat_ax.labels) {
|
|
cat_ax.labels.y = rect.y + top_val_axis_gap - cat_ax_ext_y;
|
|
}
|
|
for (i = 0; i < arr_val.length; ++i) {
|
|
arr_val_labels_points[i] = cat_ax.posY - (arr_val[i] - crosses_val_ax) * unit_height;
|
|
}
|
|
} else {
|
|
cat_ax.labels = null;
|
|
for (i = 0; i < arr_val.length; ++i) {
|
|
arr_val_labels_points[i] = rect.y + rect.h - first_val_axis_label_half_height - (arr_val[i] - arr_val[0]) * unit_height;
|
|
}
|
|
cat_ax.posY = rect.y + rect.h - first_val_axis_label_half_height - (crosses_val_ax - arr_val[0]) * unit_height;
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
if (hor_labels_pos === TICK_LABEL_POSITION_NEXT_TO || !isRealNumber(hor_labels_pos)) {
|
|
if (cat_ax.crosses === CROSSES_MAX) {
|
|
bottom_val_axis_gap = Math.max(cat_ax_ext_y, last_val_axis_label_half_height);
|
|
unit_height = checkFiniteNumber((rect.h - bottom_val_axis_gap - first_val_axis_label_half_height) / (arr_val[arr_val.length - 1] - arr_val[0]));
|
|
cat_ax.posY = rect.y + first_val_axis_label_half_height + (crosses_val_ax - arr_val[0]) * unit_height;
|
|
if (cat_ax.labels) {
|
|
cat_ax.labels.y = rect.y + rect.h - bottom_val_axis_gap;
|
|
}
|
|
} else {
|
|
cat_labels_align_bottom = false;
|
|
var top_points_height = first_val_axis_label_half_height + (crosses_val_ax - arr_val[0]) * unit_height;
|
|
if (top_points_height < cat_ax_ext_y) {
|
|
unit_height = checkFiniteNumber((rect.h - cat_ax_ext_y - last_val_axis_label_half_height) / (arr_val[arr_val.length - 1] - crosses_val_ax));
|
|
}
|
|
cat_ax.posY = rect.y + rect.h - last_val_axis_label_half_height - (arr_val[arr_val.length - 1] - crosses_val_ax) * unit_height;
|
|
if (cat_ax.labels) {
|
|
cat_ax.labels.y = cat_ax.posY - cat_ax_ext_y;
|
|
}
|
|
}
|
|
for (i = 0; i < arr_val.length; ++i) {
|
|
arr_val_labels_points[i] = cat_ax.posY + (arr_val[i] - crosses_val_ax) * unit_height;
|
|
}
|
|
} else {
|
|
if (hor_labels_pos === TICK_LABEL_POSITION_LOW) {
|
|
cat_labels_align_bottom = false;
|
|
top_val_axis_gap = Math.max(first_val_axis_label_half_height, cat_ax_ext_y);
|
|
unit_height = checkFiniteNumber((rect.h - top_val_axis_gap - last_val_axis_label_half_height) / (arr_val[arr_val.length - 1] - arr_val[0]));
|
|
cat_ax.yPos = rect.y + rect.h - last_val_axis_label_half_height - (arr_val[arr_val.length - 1] - crosses_val_ax) * unit_height;
|
|
for (i = 0; i < arr_val.length; ++i) {
|
|
arr_val_labels_points[i] = cat_ax.posY + (arr_val[i] - crosses_val_ax) * unit_height;
|
|
}
|
|
if (cat_ax.labels) {
|
|
cat_ax.labels.y = cat_ax.posY + (arr_val[0] - crosses_val_ax) * unit_height - cat_ax_ext_y;
|
|
}
|
|
} else {
|
|
if (hor_labels_pos === TICK_LABEL_POSITION_HIGH) {
|
|
bottom_val_axis_gap = Math.max(cat_ax_ext_y, last_val_axis_label_half_height);
|
|
unit_height = checkFiniteNumber((rect.h - bottom_val_axis_gap - first_val_axis_label_half_height) / (arr_val[arr_val.length - 1] - arr_val[0]));
|
|
cat_ax.yPos = rect.y + first_val_axis_label_half_height + (crosses_val_ax - arr_val[0]) * unit_height;
|
|
for (i = 0; i < arr_val.length; ++i) {
|
|
arr_val_labels_points[i] = cat_ax.posY + (arr_val[i] - crosses_val_ax) * unit_height;
|
|
}
|
|
if (cat_ax.labels) {
|
|
cat_ax.labels.y = rect.y + rect.h - bottom_val_axis_gap;
|
|
}
|
|
} else {
|
|
cat_ax.labels = null;
|
|
unit_height = checkFiniteNumber((rect.h - last_val_axis_label_half_height - first_val_axis_label_half_height) / (arr_val[arr_val.length - 1] - arr_val[0]));
|
|
for (i = 0; i < arr_val.length; ++i) {
|
|
arr_val_labels_points[i] = rect.y + first_val_axis_label_half_height + (arr_val[i] - arr_val[0]) * unit_height;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
cat_ax.interval = unit_height;
|
|
var arr_labels, transform_text, local_text_transform;
|
|
if (val_ax.labels) {
|
|
val_ax.labels.y = Math.min.apply(Math, arr_val_labels_points) - max_val_labels_text_height / 2;
|
|
val_ax.labels.extY = Math.max.apply(Math, arr_val_labels_points) - Math.min.apply(Math, arr_val_labels_points) + max_val_labels_text_height;
|
|
arr_labels = val_ax.labels.arrLabels;
|
|
if (left_val_ax_labels_align) {
|
|
for (i = 0; i < arr_labels.length; ++i) {
|
|
arr_labels[i].txBody = arr_labels[i].tx.rich;
|
|
transform_text = arr_labels[i].transformText;
|
|
transform_text.Reset();
|
|
global_MatrixTransformer.TranslateAppend(transform_text, val_ax.labels.x + val_ax.labels.extX - val_axis_labels_gap - arr_labels[i].tx.rich.content.XLimit, arr_val_labels_points[i] - val_ax.labels.arrLabels[i].tx.rich.content.Get_SummaryHeight() / 2);
|
|
local_text_transform = arr_labels[i].localTransformText;
|
|
local_text_transform.Reset();
|
|
global_MatrixTransformer.TranslateAppend(local_text_transform, val_ax.labels.x + val_ax.labels.extX - val_axis_labels_gap - arr_labels[i].tx.rich.content.XLimit, arr_val_labels_points[i] - val_ax.labels.arrLabels[i].tx.rich.content.Get_SummaryHeight() / 2);
|
|
}
|
|
} else {
|
|
var left_line = val_ax.labels.x + val_axis_labels_gap;
|
|
for (i = 0; i < arr_labels.length; ++i) {
|
|
arr_labels[i].txBody = arr_labels[i].tx.rich;
|
|
transform_text = arr_labels[i].transformText;
|
|
transform_text.Reset();
|
|
global_MatrixTransformer.TranslateAppend(transform_text, left_line, arr_val_labels_points[i] - val_ax.labels.arrLabels[i].tx.rich.content.Get_SummaryHeight() / 2);
|
|
local_text_transform = arr_labels[i].localTransformText;
|
|
local_text_transform.Reset();
|
|
global_MatrixTransformer.TranslateAppend(local_text_transform, left_line, arr_val_labels_points[i] - val_ax.labels.arrLabels[i].tx.rich.content.Get_SummaryHeight() / 2);
|
|
}
|
|
}
|
|
}
|
|
val_ax.yPoints = [];
|
|
for (i = 0; i < arr_val_labels_points.length; ++i) {
|
|
val_ax.yPoints[i] = {
|
|
val: arr_val[i],
|
|
pos: arr_val_labels_points[i]
|
|
};
|
|
}
|
|
cat_ax.xPoints = [];
|
|
for (i = 0; i < arr_cat_labels_points.length; ++i) {
|
|
cat_ax.xPoints[i] = {
|
|
val: i,
|
|
pos: arr_cat_labels_points[i]
|
|
};
|
|
}
|
|
if (cat_ax.labels) {
|
|
if (!b_rotated) {
|
|
if (cat_ax_orientation === ORIENTATION_MIN_MAX) {
|
|
cat_ax.labels.x = arr_cat_labels_points[0] - max_cat_label_width / 2;
|
|
} else {
|
|
cat_ax.labels.x = arr_cat_labels_points[arr_cat_labels_points.length - 1] - max_cat_label_width / 2;
|
|
}
|
|
cat_ax.labels.extX = arr_cat_labels_points[arr_cat_labels_points.length - 1] + max_cat_label_width / 2 - cat_ax.labels.x;
|
|
if (cat_labels_align_bottom) {
|
|
for (i = 0; i < cat_ax.labels.arrLabels.length; ++i) {
|
|
if (cat_ax.labels.arrLabels[i]) {
|
|
var label_text_transform = cat_ax.labels.arrLabels[i].transformText;
|
|
label_text_transform.Reset();
|
|
global_MatrixTransformer.TranslateAppend(label_text_transform, arr_cat_labels_points[i] - max_cat_label_width / 2, cat_ax.labels.y + labels_offset);
|
|
local_text_transform = cat_ax.labels.arrLabels[i].localTransformText;
|
|
local_text_transform.Reset();
|
|
global_MatrixTransformer.TranslateAppend(local_text_transform, arr_cat_labels_points[i] - max_cat_label_width / 2, cat_ax.labels.y + labels_offset);
|
|
}
|
|
}
|
|
} else {
|
|
for (i = 0; i < cat_ax.labels.arrLabels.length; ++i) {
|
|
if (cat_ax.labels.arrLabels[i]) {
|
|
var label_text_transform = cat_ax.labels.arrLabels[i].transformText;
|
|
label_text_transform.Reset();
|
|
global_MatrixTransformer.TranslateAppend(label_text_transform, arr_cat_labels_points[i] - max_cat_label_width / 2, cat_ax.labels.y + cat_ax.labels.extY - labels_offset - cat_ax.labels.arrLabels[i].tx.rich.content.Get_SummaryHeight());
|
|
local_text_transform = cat_ax.labels.arrLabels[i].localTransformText;
|
|
local_text_transform.Reset();
|
|
global_MatrixTransformer.TranslateAppend(local_text_transform, arr_cat_labels_points[i] - max_cat_label_width / 2, cat_ax.labels.y + cat_ax.labels.extY - labels_offset - cat_ax.labels.arrLabels[i].tx.rich.content.Get_SummaryHeight());
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
var left_x, right_x;
|
|
var w2, h2, x1, xc, yc, y0;
|
|
if (cat_labels_align_bottom) {
|
|
for (i = 0; i < cat_ax.labels.arrLabels.length; ++i) {
|
|
if (cat_ax.labels.arrLabels[i]) {
|
|
var label_text_transform = cat_ax.labels.arrLabels[i].transformText;
|
|
cat_ax.labels.arrLabels[i].tx.rich.content.Set_ApplyToAll(true);
|
|
cat_ax.labels.arrLabels[i].tx.rich.content.Set_ParagraphAlign(align_Left);
|
|
cat_ax.labels.arrLabels[i].tx.rich.content.Set_ApplyToAll(false);
|
|
var wh = cat_ax.labels.arrLabels[i].tx.rich.getContentOneStringSizes();
|
|
w2 = wh.w * Math.cos(Math.PI / 4) + wh.h * Math.sin(Math.PI / 4);
|
|
h2 = wh.w * Math.sin(Math.PI / 4) + wh.h * Math.cos(Math.PI / 4);
|
|
x1 = arr_cat_labels_points[i] + wh.h * Math.sin(Math.PI / 4);
|
|
y0 = cat_ax.labels.y + labels_offset;
|
|
xc = x1 - w2 / 2;
|
|
yc = y0 + h2 / 2;
|
|
label_text_transform.Reset();
|
|
global_MatrixTransformer.TranslateAppend(label_text_transform, -wh.w / 2, -wh.h / 2);
|
|
global_MatrixTransformer.RotateRadAppend(label_text_transform, Math.PI / 4);
|
|
global_MatrixTransformer.TranslateAppend(label_text_transform, xc, yc);
|
|
global_MatrixTransformer.MultiplyAppend(label_text_transform, this.transform);
|
|
if (!isRealNumber(left_x)) {
|
|
left_x = xc - w2 / 2;
|
|
right_x = xc + w2 / 2;
|
|
} else {
|
|
if (xc - w2 / 2 < left_x) {
|
|
left_x = xc - w2 / 2;
|
|
}
|
|
if (xc + w2 / 2 > right_x) {
|
|
right_x = xc + w2 / 2;
|
|
}
|
|
}
|
|
local_text_transform = cat_ax.labels.arrLabels[i].localTransformText;
|
|
local_text_transform.Reset();
|
|
global_MatrixTransformer.TranslateAppend(local_text_transform, -wh.w / 2, -wh.h / 2);
|
|
global_MatrixTransformer.RotateRadAppend(local_text_transform, Math.PI / 4);
|
|
global_MatrixTransformer.TranslateAppend(local_text_transform, xc, yc);
|
|
}
|
|
}
|
|
} else {
|
|
for (i = 0; i < cat_ax.labels.arrLabels.length; ++i) {
|
|
if (cat_ax.labels.arrLabels[i]) {
|
|
var label_text_transform = cat_ax.labels.arrLabels[i].transformText;
|
|
cat_ax.labels.arrLabels[i].tx.rich.content.Set_ApplyToAll(true);
|
|
cat_ax.labels.arrLabels[i].tx.rich.content.Set_ParagraphAlign(align_Left);
|
|
cat_ax.labels.arrLabels[i].tx.rich.content.Set_ApplyToAll(false);
|
|
var wh = cat_ax.labels.arrLabels[i].tx.rich.getContentOneStringSizes();
|
|
w2 = wh.w * Math.cos(Math.PI / 4) + wh.h * Math.sin(Math.PI / 4);
|
|
h2 = wh.w * Math.sin(Math.PI / 4) + wh.h * Math.cos(Math.PI / 4);
|
|
x1 = arr_cat_labels_points[i] - wh.h * Math.sin(Math.PI / 4);
|
|
y0 = cat_ax.labels.y + cat_ax.labels.extY - labels_offset;
|
|
xc = x1 + w2 / 2;
|
|
yc = y0 - h2 / 2;
|
|
label_text_transform.Reset();
|
|
global_MatrixTransformer.TranslateAppend(label_text_transform, -wh.w / 2, -wh.h / 2);
|
|
global_MatrixTransformer.RotateRadAppend(label_text_transform, Math.PI / 4);
|
|
global_MatrixTransformer.TranslateAppend(label_text_transform, xc, yc);
|
|
global_MatrixTransformer.MultiplyAppend(label_text_transform, this.transform);
|
|
if (!isRealNumber(left_x)) {
|
|
left_x = xc - w2 / 2;
|
|
right_x = xc + w2 / 2;
|
|
} else {
|
|
if (xc - w2 / 2 < left_x) {
|
|
left_x = xc - w2 / 2;
|
|
}
|
|
if (xc + w2 / 2 > right_x) {
|
|
right_x = xc + w2 / 2;
|
|
}
|
|
}
|
|
local_text_transform = cat_ax.labels.arrLabels[i].localTransformText;
|
|
local_text_transform.Reset();
|
|
global_MatrixTransformer.TranslateAppend(local_text_transform, -wh.w / 2, -wh.h / 2);
|
|
global_MatrixTransformer.RotateRadAppend(local_text_transform, Math.PI / 4);
|
|
global_MatrixTransformer.TranslateAppend(local_text_transform, xc, yc);
|
|
}
|
|
}
|
|
}
|
|
cat_ax.labels.x = left_x;
|
|
cat_ax.labels.extX = right_x - left_x;
|
|
}
|
|
}
|
|
cat_ax.xPoints.sort(function (a, b) {
|
|
return a.val - b.val;
|
|
});
|
|
val_ax.yPoints.sort(function (a, b) {
|
|
return a.val - b.val;
|
|
});
|
|
}
|
|
} else {
|
|
if (chart_type === historyitem_type_BarChart && chart_object.barDir === BAR_DIR_BAR) {
|
|
var cat_ax, val_ax;
|
|
var axis_by_types = chart_object.getAxisByTypes();
|
|
cat_ax = axis_by_types.catAx[0];
|
|
val_ax = axis_by_types.valAx[0];
|
|
if (cat_ax && val_ax) {
|
|
val_ax.labels = null;
|
|
cat_ax.labels = null;
|
|
val_ax.posX = null;
|
|
cat_ax.posY = null;
|
|
val_ax.posY = null;
|
|
cat_ax.posX = null;
|
|
val_ax.xPoints = null;
|
|
cat_ax.yPoints = null;
|
|
val_ax.yPoints = null;
|
|
cat_ax.xPoints = null;
|
|
var sizes = this.getChartSizes();
|
|
var rect = {
|
|
x: sizes.startX,
|
|
y: sizes.startY,
|
|
w: sizes.w,
|
|
h: sizes.h
|
|
};
|
|
var arr_val = this.getValAxisValues();
|
|
var arr_strings = [];
|
|
var multiplier;
|
|
if (val_ax.dispUnits) {
|
|
multiplier = val_ax.dispUnits.getMultiplier();
|
|
} else {
|
|
multiplier = 1;
|
|
}
|
|
var num_fmt = val_ax.numFmt;
|
|
if (num_fmt && typeof num_fmt.formatCode === "string") {
|
|
var num_format = oNumFormatCache.get(num_fmt.formatCode);
|
|
for (i = 0; i < arr_val.length; ++i) {
|
|
var calc_value = arr_val[i] * multiplier;
|
|
var rich_value = num_format.formatToChart(calc_value);
|
|
arr_strings.push(rich_value);
|
|
}
|
|
} else {
|
|
for (i = 0; i < arr_val.length; ++i) {
|
|
var calc_value = arr_val[i] * multiplier;
|
|
arr_strings.push(calc_value + "");
|
|
}
|
|
}
|
|
val_ax.labels = new CValAxisLabels(this);
|
|
var max_height = 0;
|
|
val_ax.xPoints = [];
|
|
var max_val_ax_label_width = 0;
|
|
for (i = 0; i < arr_strings.length; ++i) {
|
|
var dlbl = new CDLbl();
|
|
dlbl.parent = val_ax;
|
|
dlbl.chart = this;
|
|
dlbl.spPr = val_ax.spPr;
|
|
dlbl.txPr = val_ax.txPr;
|
|
dlbl.tx = new CChartText();
|
|
dlbl.tx.rich = CreateTextBodyFromString(arr_strings[i], this.getDrawingDocument(), dlbl);
|
|
dlbl.txBody = dlbl.tx.rich;
|
|
if (val_ax.labels.arrLabels[0]) {
|
|
dlbl.lastStyleObject = val_ax.labels.arrLabels[0].lastStyleObject;
|
|
}
|
|
var t = dlbl.tx.rich.recalculateByMaxWord();
|
|
var h = t.h;
|
|
if (t.w > max_val_ax_label_width) {
|
|
max_val_ax_label_width = t.w;
|
|
}
|
|
if (h > max_height) {
|
|
max_height = h;
|
|
}
|
|
val_ax.labels.arrLabels.push(dlbl);
|
|
val_ax.xPoints.push({
|
|
val: arr_val[i],
|
|
pos: null
|
|
});
|
|
}
|
|
var val_axis_labels_gap = val_ax.labels.arrLabels[0].tx.rich.content.Content[0].CompiledPr.Pr.TextPr.FontSize * 25.4 / 72;
|
|
val_ax.labels.extY = max_height + val_axis_labels_gap;
|
|
var ser = chart_object.series[0];
|
|
var string_pts = [],
|
|
pts_len = 0;
|
|
if (ser && ser.cat) {
|
|
var lit, b_num_lit = true;
|
|
if (ser.cat.strRef && ser.cat.strRef.strCache) {
|
|
lit = ser.cat.strRef.strCache;
|
|
} else {
|
|
if (ser.cat.strLit) {
|
|
lit = ser.cat.strLit;
|
|
} else {
|
|
if (ser.cat.numRef && ser.cat.numRef.numCache) {
|
|
lit = ser.cat.numRef.numCache;
|
|
b_num_lit = true;
|
|
} else {
|
|
if (ser.cat.numLit) {
|
|
lit = ser.cat.numLit;
|
|
b_num_lit = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (lit) {
|
|
var lit_format = null,
|
|
pt_format = null;
|
|
if (b_num_lit && typeof lit.formatCode === "string" && lit.formatCode.length > 0) {
|
|
lit_format = oNumFormatCache.get(lit.formatCode);
|
|
}
|
|
pts_len = lit.ptCount;
|
|
for (i = 0; i < pts_len; ++i) {
|
|
var pt = lit.getPtByIndex(i);
|
|
if (pt) {
|
|
var str_pt;
|
|
if (b_num_lit) {
|
|
if (typeof pt.formatCode === "string" && pt.formatCode.length > 0) {
|
|
pt_format = oNumFormatCache.get(pt.formatCode);
|
|
if (pt_format) {
|
|
str_pt = pt_format.formatToChart(pt.val);
|
|
} else {
|
|
str_pt = pt.val;
|
|
}
|
|
} else {
|
|
if (lit_format) {
|
|
str_pt = lit_format.formatToChart(pt.val);
|
|
} else {
|
|
str_pt = pt.val;
|
|
}
|
|
}
|
|
} else {
|
|
str_pt = pt.val;
|
|
}
|
|
string_pts.push({
|
|
val: str_pt + ""
|
|
});
|
|
} else {
|
|
string_pts.push({
|
|
val: i + ""
|
|
});
|
|
}
|
|
}
|
|
}
|
|
}
|
|
pts_len = 0;
|
|
for (i = 0; i < chart_object.series.length; ++i) {
|
|
var cur_pts = null;
|
|
ser = chart_object.series[i];
|
|
if (ser.val) {
|
|
if (ser.val.numRef && ser.val.numRef.numCache) {
|
|
cur_pts = ser.val.numRef.numCache;
|
|
} else {
|
|
if (ser.val.numLit) {
|
|
cur_pts = ser.val.numLit;
|
|
}
|
|
}
|
|
if (cur_pts) {
|
|
pts_len = Math.max(pts_len, cur_pts.ptCount);
|
|
}
|
|
}
|
|
}
|
|
if (pts_len > string_pts.length) {
|
|
for (i = 0; i < pts_len; ++i) {
|
|
string_pts.push({
|
|
val: i + 1 + ""
|
|
});
|
|
}
|
|
}
|
|
var crosses;
|
|
if (val_ax.crosses === CROSSES_AUTO_ZERO || val_ax.crosses === CROSSES_MIN) {
|
|
crosses = 1;
|
|
} else {
|
|
if (val_ax.crosses === CROSSES_MAX) {
|
|
crosses = string_pts.length;
|
|
} else {
|
|
if (isRealNumber(val_ax.crossesAt)) {
|
|
if (val_ax.crossesAt <= string_pts.length + 1 && val_ax.crossesAt > 0) {
|
|
crosses = val_ax.crossesAt;
|
|
} else {
|
|
if (val_ax.crossesAt <= 0) {
|
|
crosses = 1;
|
|
} else {
|
|
crosses = string_pts.length;
|
|
}
|
|
}
|
|
} else {
|
|
crosses = 1;
|
|
}
|
|
}
|
|
}
|
|
var cat_ax_orientation = cat_ax.scaling && isRealNumber(cat_ax.scaling.orientation) ? cat_ax.scaling.orientation : ORIENTATION_MIN_MAX;
|
|
var labels_pos = val_ax.tickLblPos;
|
|
var cross_between = isRealNumber(val_ax.crossBetween) ? val_ax.crossBetween : CROSS_BETWEEN_BETWEEN;
|
|
var bottom_val_ax_labels_align = true;
|
|
var intervals_count = cross_between === CROSS_BETWEEN_MID_CAT ? string_pts.length - 1 : string_pts.length;
|
|
var point_interval = rect.h / intervals_count;
|
|
var bottom_points_height, top_point_height;
|
|
var arr_cat_labels_points = [];
|
|
if (cat_ax_orientation === ORIENTATION_MIN_MAX) {
|
|
if (labels_pos === TICK_LABEL_POSITION_NONE || val_ax.bDelete === true) {
|
|
val_ax.labels = null;
|
|
if (cross_between === CROSS_BETWEEN_MID_CAT) {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = rect.y + rect.h - point_interval * i;
|
|
}
|
|
} else {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = rect.y + rect.h - (point_interval / 2 + point_interval * i);
|
|
}
|
|
}
|
|
val_ax.posY = rect.y + rect.h - point_interval * (crosses - 1);
|
|
} else {
|
|
if (labels_pos === TICK_LABEL_POSITION_NEXT_TO || !isRealNumber(labels_pos)) {
|
|
if (val_ax.crosses === CROSSES_MAX) {
|
|
bottom_val_ax_labels_align = false;
|
|
val_ax.labels.y = rect.y;
|
|
point_interval = (rect.h - val_ax.labels.extY) / intervals_count;
|
|
val_ax.posY = val_ax.labels.y + val_ax.labels.extY;
|
|
if (cross_between === CROSS_BETWEEN_MID_CAT) {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = rect.y + rect.h - point_interval * i;
|
|
}
|
|
} else {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = point_interval / 2 + rect.y + rect.h - point_interval * i;
|
|
}
|
|
}
|
|
} else {
|
|
bottom_points_height = point_interval * (crosses - 1);
|
|
if (bottom_points_height < val_ax.labels.extY) {
|
|
var top_intervals_count = intervals_count - (crosses - 1);
|
|
point_interval = (rect.h - val_ax.labels.extY) / top_intervals_count;
|
|
val_ax.labels.y = rect.y + rect.h - val_ax.labels.extY;
|
|
var start_point = val_ax.labels.y + (crosses - 1) * point_interval;
|
|
if (cross_between === CROSS_BETWEEN_MID_CAT) {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = start_point - point_interval * i;
|
|
}
|
|
} else {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = start_point - point_interval / 2 - point_interval * i;
|
|
}
|
|
}
|
|
} else {
|
|
val_ax.labels.y = rect.y + rect.h - bottom_points_height;
|
|
if (cross_between === CROSS_BETWEEN_MID_CAT) {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = rect.y + rect.h - point_interval * i;
|
|
}
|
|
} else {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = rect.y + rect.h - (point_interval / 2 + point_interval * i);
|
|
}
|
|
}
|
|
}
|
|
val_ax.posY = val_ax.labels.y;
|
|
}
|
|
} else {
|
|
if (labels_pos === TICK_LABEL_POSITION_LOW) {
|
|
point_interval = (rect.h - val_ax.labels.extY) / intervals_count;
|
|
val_ax.labels.y = rect.y + rect.h - val_ax.labels.extY;
|
|
if (cross_between === CROSS_BETWEEN_MID_CAT) {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = val_ax.labels.y - point_interval * i;
|
|
}
|
|
} else {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = rect.y + rect.h - val_ax.labels.extY - point_interval / 2 - point_interval * i;
|
|
}
|
|
}
|
|
val_ax.posY = val_ax.labels.y - point_interval * (crosses - 1);
|
|
} else {
|
|
if (labels_pos === TICK_LABEL_POSITION_HIGH) {
|
|
point_interval = (rect.h - val_ax.labels.extY) / intervals_count;
|
|
val_ax.labels.y = rect.y;
|
|
bottom_val_ax_labels_align = false;
|
|
if (cross_between === CROSS_BETWEEN_MID_CAT) {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = rect.y + rect.h - point_interval * i;
|
|
}
|
|
} else {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = rect.y + rect.h - (point_interval / 2 + point_interval * i);
|
|
}
|
|
}
|
|
val_ax.posY = rect.y + rect.h - point_interval * (crosses - 1);
|
|
} else {
|
|
val_ax.labels = null;
|
|
if (cross_between === CROSS_BETWEEN_MID_CAT) {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = rect.y + rect.h - point_interval * i;
|
|
}
|
|
} else {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = rect.y + rect.h - (point_interval / 2 + point_interval * i);
|
|
}
|
|
}
|
|
val_ax.posY = rect.y + rect.h - point_interval * (crosses - 1);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
if (labels_pos === TICK_LABEL_POSITION_NONE || val_ax.bDelete === true) {
|
|
val_ax.labels = null;
|
|
if (cross_between === CROSS_BETWEEN_MID_CAT) {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = rect.y + point_interval * i;
|
|
}
|
|
} else {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = rect.y + point_interval / 2 + point_interval * i;
|
|
}
|
|
}
|
|
val_ax.posY = rect.y + point_interval * (crosses - 1);
|
|
} else {
|
|
if (labels_pos === TICK_LABEL_POSITION_NEXT_TO || !isRealNumber(labels_pos)) {
|
|
if (val_ax.crosses === CROSSES_MAX) {
|
|
val_ax.labels.y = rect.y + rect.h - val_ax.labels.extY;
|
|
point_interval = (rect.h - val_ax.labels.extY) / intervals_count;
|
|
if (cross_between === CROSS_BETWEEN_MID_CAT) {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = rect.y + point_interval * i;
|
|
}
|
|
} else {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = rect.y + point_interval / 2 + point_interval * i;
|
|
}
|
|
}
|
|
val_ax.posY = val_ax.labels.y;
|
|
} else {
|
|
bottom_val_ax_labels_align = false;
|
|
top_point_height = point_interval * (crosses - 1);
|
|
if (top_point_height < val_ax.labels.extY) {
|
|
val_ax.labels.y = rect.y;
|
|
var bottom_points_interval_count = intervals_count - (crosses - 1);
|
|
point_interval = (rect.h - val_ax.labels.extY) / bottom_points_interval_count;
|
|
var start_point_bottom = rect.y + rect.h - point_interval * intervals_count;
|
|
if (cross_between === CROSS_BETWEEN_MID_CAT) {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = start_point_bottom + point_interval * i;
|
|
}
|
|
} else {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = start_point_bottom + point_interval / 2 + point_interval * i;
|
|
}
|
|
}
|
|
} else {
|
|
val_ax.labels.y = rect.y + point_interval * (crosses - 1) - val_ax.labels.extY;
|
|
if (cross_between === CROSS_BETWEEN_MID_CAT) {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = rect.y + point_interval * i;
|
|
}
|
|
} else {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = rect.y + point_interval / 2 + point_interval * i;
|
|
}
|
|
}
|
|
}
|
|
val_ax.posY = val_ax.labels.y + val_ax.labels.extY;
|
|
}
|
|
} else {
|
|
if (labels_pos === TICK_LABEL_POSITION_LOW) {
|
|
bottom_val_ax_labels_align = false;
|
|
point_interval = (rect.h - val_ax.labels.extY) / intervals_count;
|
|
val_ax.labels.y = rect.y;
|
|
if (cross_between === CROSS_BETWEEN_MID_CAT) {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = val_ax.labels.y + val_ax.labels.extY + point_interval * i;
|
|
}
|
|
} else {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = val_ax.labels.y + val_ax.labels.extY + point_interval / 2 + point_interval * i;
|
|
}
|
|
}
|
|
val_ax.posY = rect.y + val_ax.labels.extY + point_interval * (crosses - 1);
|
|
} else {
|
|
if (labels_pos === TICK_LABEL_POSITION_HIGH) {
|
|
point_interval = (rect.h - val_ax.labels.extY) / intervals_count;
|
|
val_ax.labels.y = rect.y + rect.h - val_ax.labels.extY;
|
|
if (cross_between === CROSS_BETWEEN_MID_CAT) {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = rect.y + point_interval * i;
|
|
}
|
|
} else {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = rect.y + point_interval / 2 + point_interval * i;
|
|
}
|
|
}
|
|
val_ax.posY = rect.y + point_interval * (crosses - 1);
|
|
} else {
|
|
val_ax.labels = null;
|
|
if (cross_between === CROSS_BETWEEN_MID_CAT) {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = rect.y + point_interval * i;
|
|
}
|
|
} else {
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
arr_cat_labels_points[i] = rect.y + point_interval / 2 + point_interval * i;
|
|
}
|
|
}
|
|
val_ax.posY = rect.y + point_interval * (crosses - 1);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
cat_ax.interval = point_interval;
|
|
var diagram_height = point_interval * intervals_count;
|
|
var max_cat_label_height = diagram_height / string_pts.length;
|
|
cat_ax.labels = null;
|
|
var max_cat_labels_block_width = rect.w / 2;
|
|
if (TICK_LABEL_POSITION_NONE !== cat_ax.tickLblPos && !(cat_ax.bDelete === true)) {
|
|
cat_ax.labels = new CValAxisLabels(this);
|
|
var tick_lbl_skip = isRealNumber(cat_ax.tickLblSkip) ? cat_ax.tickLblSkip : (string_pts.length < SKIP_LBL_LIMIT ? 1 : Math.floor(string_pts.length / SKIP_LBL_LIMIT));
|
|
var max_min_width = 0;
|
|
var max_max_width = 0;
|
|
var max_content_width = 0;
|
|
var arr_min_max_min = [];
|
|
for (i = 0; i < string_pts.length; ++i) {
|
|
var dlbl = null;
|
|
if (i % tick_lbl_skip === 0) {
|
|
dlbl = new CDLbl();
|
|
dlbl.parent = cat_ax;
|
|
dlbl.chart = this;
|
|
dlbl.spPr = cat_ax.spPr;
|
|
dlbl.txPr = cat_ax.txPr;
|
|
dlbl.tx = new CChartText();
|
|
dlbl.tx.rich = CreateTextBodyFromString(string_pts[i].val, this.getDrawingDocument(), dlbl);
|
|
if (cat_ax.labels.arrLabels[0]) {
|
|
dlbl.lastStyleObject = cat_ax.labels.arrLabels[0].lastStyleObject;
|
|
}
|
|
dlbl.tx.rich.content.Set_ApplyToAll(true);
|
|
dlbl.tx.rich.content.Set_ParagraphAlign(align_Center);
|
|
dlbl.tx.rich.content.Set_ApplyToAll(false);
|
|
var min_max = dlbl.tx.rich.content.Recalculate_MinMaxContentWidth();
|
|
var max_min_content_width = min_max.Min;
|
|
if (min_max.Max > max_max_width) {
|
|
max_max_width = min_max.Max;
|
|
}
|
|
if (min_max.Min > max_min_width) {
|
|
max_min_width = min_max.Min;
|
|
}
|
|
arr_min_max_min[i] = min_max.Min;
|
|
dlbl.getMaxWidth = function () {
|
|
return 20000;
|
|
};
|
|
dlbl.recalcInfo.recalculatePen = false;
|
|
dlbl.recalcInfo.recalculateBrush = false;
|
|
dlbl.recalculate();
|
|
delete dlbl.getMaxWidth;
|
|
if (dlbl.tx.rich.content.XLimit > max_content_width) {
|
|
max_content_width = dlbl.tx.rich.content.XLimit;
|
|
}
|
|
}
|
|
cat_ax.labels.arrLabels.push(dlbl);
|
|
}
|
|
var stake_offset = isRealNumber(cat_ax.lblOffset) ? cat_ax.lblOffset / 100 : 1;
|
|
var labels_offset = cat_ax.labels.arrLabels[0].tx.rich.content.Content[0].CompiledPr.Pr.TextPr.FontSize * (25.4 / 72) * stake_offset;
|
|
var width_flag;
|
|
if (max_content_width + labels_offset < max_cat_labels_block_width) {
|
|
width_flag = 0;
|
|
cat_ax.labels.extX = max_content_width + labels_offset;
|
|
} else {
|
|
if (max_min_width + labels_offset < max_cat_labels_block_width) {
|
|
width_flag = 1;
|
|
cat_ax.labels.extX = max_min_width + labels_offset;
|
|
} else {
|
|
width_flag = 2;
|
|
cat_ax.labels.extX = max_cat_labels_block_width;
|
|
}
|
|
}
|
|
}
|
|
var cat_labels_align_left = true;
|
|
var crosses_val_ax;
|
|
if (cat_ax.crosses === CROSSES_AUTO_ZERO) {
|
|
if (arr_val[0] <= 0 && arr_val[arr_val.length - 1] >= 0) {
|
|
crosses_val_ax = 0;
|
|
} else {
|
|
if (arr_val[arr_val.length - 1] < 0) {
|
|
crosses_val_ax = arr_val[arr_val.length - 1];
|
|
} else {
|
|
crosses_val_ax = arr_val[0];
|
|
}
|
|
}
|
|
} else {
|
|
if (cat_ax.crosses === CROSSES_MIN) {
|
|
crosses_val_ax = arr_val[0];
|
|
} else {
|
|
if (cat_ax.crosses === CROSSES_MAX) {
|
|
crosses_val_ax = arr_val[arr_val.length - 1];
|
|
} else {
|
|
if (isRealNumber(cat_ax.crossesAt) && cat_ax.crossesAt >= arr_val[0] && cat_ax.crossesAt <= arr_val[arr_val.length - 1]) {
|
|
if (cat_ax.crossesAt >= arr_val[0] && cat_ax.crossesAt <= arr_val[arr_val.length - 1]) {
|
|
crosses_val_ax = cat_ax.crossesAt;
|
|
}
|
|
} else {
|
|
if (arr_val[0] <= 0 && arr_val[arr_val.length - 1] >= 0) {
|
|
crosses_val_ax = 0;
|
|
} else {
|
|
if (arr_val[arr_val.length - 1] < 0) {
|
|
crosses_val_ax = arr_val[arr_val.length - 1];
|
|
} else {
|
|
crosses_val_ax = arr_val[0];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
var val_ax_orientation = val_ax.scaling && isRealNumber(val_ax.scaling.orientation) ? val_ax.scaling.orientation : ORIENTATION_MIN_MAX;
|
|
var hor_labels_pos = cat_ax.tickLblPos;
|
|
var first_val_lbl_half_width = (val_ax.tickLblPos === TICK_LABEL_POSITION_NONE || val_ax.bDelete) ? 0 : val_ax.labels.arrLabels[0].tx.rich.content.XLimit / 2;
|
|
var last_val_lbl_half_width = (val_ax.tickLblPos === TICK_LABEL_POSITION_NONE || val_ax.bDelete) ? 0 : val_ax.labels.arrLabels[val_ax.labels.arrLabels.length - 1].tx.rich.content.XLimit / 2;
|
|
var right_gap, left_gap;
|
|
var arr_val_labels_points = [];
|
|
var unit_width = checkFiniteNumber((rect.w - first_val_lbl_half_width - last_val_lbl_half_width) / (arr_val[arr_val.length - 1] - arr_val[0]));
|
|
var cat_ax_ext_x = cat_ax.labels ? cat_ax.labels.extX : 0;
|
|
if (val_ax_orientation === ORIENTATION_MIN_MAX) {
|
|
if (hor_labels_pos === TICK_LABEL_POSITION_NEXT_TO || !isRealNumber(hor_labels_pos)) {
|
|
if (cat_ax.crosses === CROSSES_MAX) {
|
|
right_gap = Math.max(last_val_lbl_half_width, cat_ax_ext_x);
|
|
cat_labels_align_left = false;
|
|
if (cat_ax.labels) {
|
|
cat_ax.labels.x = rect.x + rect.w - right_gap;
|
|
}
|
|
unit_width = checkFiniteNumber((rect.w - right_gap - first_val_lbl_half_width) / (arr_val[arr_val.length - 1] - arr_val[0]));
|
|
cat_ax.posX = rect.x + first_val_lbl_half_width + (crosses_val_ax - arr_val[0]) * unit_width;
|
|
} else {
|
|
if ((crosses_val_ax - arr_val[0]) * unit_width + first_val_lbl_half_width < cat_ax_ext_x) {
|
|
unit_width = checkFiniteNumber((rect.w - cat_ax_ext_x - last_val_lbl_half_width) / (arr_val[arr_val.length - 1] - crosses_val_ax));
|
|
}
|
|
cat_ax.posX = rect.x + rect.w - last_val_lbl_half_width - (arr_val[arr_val.length - 1] - crosses_val_ax) * unit_width;
|
|
if (cat_ax.labels) {
|
|
cat_ax.labels.x = cat_ax.posX - cat_ax_ext_x;
|
|
}
|
|
}
|
|
for (i = 0; i < arr_val.length; ++i) {
|
|
arr_val_labels_points[i] = cat_ax.posX + (arr_val[i] - crosses_val_ax) * unit_width;
|
|
}
|
|
} else {
|
|
if (hor_labels_pos === TICK_LABEL_POSITION_LOW) {
|
|
left_gap = Math.max(first_val_lbl_half_width, cat_ax_ext_x);
|
|
unit_width = checkFiniteNumber((rect.w - left_gap - last_val_lbl_half_width) / (arr_val[arr_val.length - 1] - arr_val[0]));
|
|
cat_ax.posX = rect.x + rect.w - (arr_val[arr_val.length - 1] - crosses_val_ax) * unit_width - last_val_lbl_half_width;
|
|
for (i = 0; i < arr_val.length; ++i) {
|
|
arr_val_labels_points[i] = cat_ax.posX + (arr_val[i] - crosses_val_ax) * unit_width;
|
|
}
|
|
if (cat_ax.labels) {
|
|
cat_ax.labels.x = cat_ax.posX + (arr_val[i] - crosses_val_ax) * unit_width - cat_ax_ext_x;
|
|
}
|
|
} else {
|
|
if (hor_labels_pos === TICK_LABEL_POSITION_HIGH) {
|
|
cat_labels_align_left = false;
|
|
right_gap = Math.max(last_val_lbl_half_width, cat_ax_ext_x);
|
|
unit_width = checkFiniteNumber((rect.w - right_gap - first_val_lbl_half_width) / (arr_val[arr_val.length - 1] - arr_val[0]));
|
|
cat_ax.posX = rect.x + first_val_lbl_half_width + (crosses_val_ax - arr_val[0]) * unit_width;
|
|
for (i = 0; i < arr_val.length; ++i) {
|
|
arr_val_labels_points[i] = cat_ax.posX + (arr_val[i] - crosses_val_ax) * unit_width;
|
|
}
|
|
} else {
|
|
cat_ax.labels = null;
|
|
unit_width = checkFiniteNumber((rect.w - last_val_lbl_half_width - first_val_lbl_half_width) / (arr_val[arr_val.length - 1] - arr_val[0]));
|
|
cat_ax.posX = rect.x + first_val_lbl_half_width + (crosses_val_ax - arr_val[0]) * unit_width;
|
|
for (i = 0; i < arr_val.length; ++i) {
|
|
arr_val_labels_points[i] = cat_ax.posX + (arr_val[i] - crosses_val_ax) * unit_width;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
if (hor_labels_pos === TICK_LABEL_POSITION_NEXT_TO || !isRealNumber(hor_labels_pos)) {
|
|
if (cat_ax.crosses === CROSSES_MAX) {
|
|
left_gap = Math.max(cat_ax_ext_x, last_val_lbl_half_width);
|
|
unit_width = checkFiniteNumber((rect.w - left_gap - first_val_lbl_half_width) / (arr_val[arr_val.length - 1] - arr_val[0]));
|
|
cat_ax.xPos = rect.x + rect.w - first_val_lbl_half_width - (crosses_val_ax - arr_val[0]) * unit_width;
|
|
if (cat_ax.labels) {
|
|
cat_ax.labels.x = cat_ax.xPos - cat_ax_ext_x;
|
|
}
|
|
} else {
|
|
cat_labels_align_left = false;
|
|
if (first_val_lbl_half_width < cat_ax_ext_x) {
|
|
unit_width = checkFiniteNumber((rect.w - cat_ax_ext_x - last_val_lbl_half_width) / (arr_val[arr_val.length - 1] - arr_val[0]));
|
|
}
|
|
cat_ax.xPos = rect.x + last_val_lbl_half_width + (arr_val[arr_val.length - 1] - crosses_val_ax) * unit_width;
|
|
if (cat_ax.labels) {
|
|
cat_ax.labels.x = cat_ax.xPos;
|
|
}
|
|
}
|
|
for (i = 0; i < arr_val.length; ++i) {
|
|
arr_val_labels_points[i] = cat_ax.xPos - (arr_val[i] - crosses_val_ax) * unit_width;
|
|
}
|
|
} else {
|
|
if (hor_labels_pos === TICK_LABEL_POSITION_LOW) {
|
|
cat_labels_align_left = false;
|
|
right_gap = Math.max(first_val_lbl_half_width, cat_ax_ext_x);
|
|
unit_width = checkFiniteNumber((rect.w - last_val_lbl_half_width - right_gap) / (arr_val[arr_val.length - 1] - arr_val[0]));
|
|
cat_ax.xPos = rect.x + last_val_lbl_half_width + (arr_val[arr_val.length - 1] - crosses_val_ax) * crosses_val_ax;
|
|
if (cat_ax.labels) {
|
|
cat_ax.labels.x = cat_ax.xPos - (arr_val[0] - crosses_val_ax) * unit_width;
|
|
}
|
|
for (i = 0; i < arr_val.length; ++i) {
|
|
arr_val_labels_points[i] = cat_ax.xPos - (arr_val[i] - crosses_val_ax) * unit_width;
|
|
}
|
|
} else {
|
|
if (hor_labels_pos === TICK_LABEL_POSITION_HIGH) {
|
|
left_gap = Math.max(cat_ax_ext_x, last_val_lbl_half_width);
|
|
unit_width = checkFiniteNumber((rect.w - left_gap - first_val_lbl_half_width) / (arr_val[arr_val.length - 1] - arr_val[0]));
|
|
cat_ax.xPos = rect.x + rect.w - first_val_lbl_half_width - (crosses_val_ax - arr_val[0]) * unit_width;
|
|
if (cat_ax.labels) {
|
|
cat_ax.labels.x = cat_ax.xPos - (arr_val[arr_val.length - 1] - crosses_val_ax) * unit_width - cat_ax_ext_x;
|
|
}
|
|
for (i = 0; i < arr_val.length; ++i) {
|
|
arr_val_labels_points[i] = cat_ax.xPos - (arr_val[i] - crosses_val_ax) * unit_width;
|
|
}
|
|
} else {
|
|
cat_ax.labels = null;
|
|
unit_width = checkFiniteNumber((rect.w - last_val_lbl_half_width - first_val_lbl_half_width) / (arr_val[arr_val.length - 1] - arr_val[0]));
|
|
cat_ax.xPos = rect.x + rect.w - first_val_lbl_half_width - (crosses_val_ax - arr_val[0]) * unit_width;
|
|
for (i = 0; i < arr_val.length; ++i) {
|
|
arr_val_labels_points[i] = cat_ax.xPos - (arr_val[i] - crosses_val_ax) * unit_width;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
val_ax.interval = unit_width;
|
|
var local_transform_text;
|
|
if (val_ax.labels) {
|
|
val_ax.labels.x = Math.min.apply(Math, arr_val_labels_points) - max_val_ax_label_width / 2;
|
|
val_ax.labels.extX = Math.max.apply(Math, arr_val_labels_points) - Math.min.apply(Math, arr_val_labels_points) + max_val_ax_label_width;
|
|
if (bottom_val_ax_labels_align) {
|
|
var y_pos = val_ax.labels.y + val_axis_labels_gap;
|
|
for (i = 0; i < val_ax.labels.arrLabels.length; ++i) {
|
|
var text_transform = val_ax.labels.arrLabels[i].transformText;
|
|
text_transform.Reset();
|
|
global_MatrixTransformer.TranslateAppend(text_transform, arr_val_labels_points[i] - val_ax.labels.arrLabels[i].tx.rich.content.XLimit / 2, y_pos);
|
|
var local_transform_text = val_ax.labels.arrLabels[i].localTransformText;
|
|
local_transform_text.Reset();
|
|
global_MatrixTransformer.TranslateAppend(local_transform_text, arr_val_labels_points[i] - val_ax.labels.arrLabels[i].tx.rich.content.XLimit / 2, y_pos);
|
|
}
|
|
} else {
|
|
for (i = 0; i < val_ax.labels.arrLabels.length; ++i) {
|
|
var text_transform = val_ax.labels.arrLabels[i].transformText;
|
|
text_transform.Reset();
|
|
global_MatrixTransformer.TranslateAppend(text_transform, arr_val_labels_points[i] - val_ax.labels.arrLabels[i].tx.rich.content.XLimit / 2, val_ax.labels.y + val_ax.labels.extY - val_axis_labels_gap - val_ax.labels.arrLabels[i].tx.rich.content.Get_SummaryHeight());
|
|
var local_transform_text = val_ax.labels.arrLabels[i].localTransformText;
|
|
local_transform_text.Reset();
|
|
global_MatrixTransformer.TranslateAppend(local_transform_text, arr_val_labels_points[i] - val_ax.labels.arrLabels[i].tx.rich.content.XLimit / 2, val_ax.labels.y + val_ax.labels.extY - val_axis_labels_gap - val_ax.labels.arrLabels[i].tx.rich.content.Get_SummaryHeight());
|
|
}
|
|
}
|
|
}
|
|
val_ax.xPoints = [];
|
|
for (i = 0; i < arr_val_labels_points.length; ++i) {
|
|
val_ax.xPoints[i] = {
|
|
val: arr_val[i],
|
|
pos: arr_val_labels_points[i]
|
|
};
|
|
}
|
|
cat_ax.yPoints = [];
|
|
for (i = 0; i < arr_cat_labels_points.length; ++i) {
|
|
cat_ax.yPoints[i] = {
|
|
val: i,
|
|
pos: arr_cat_labels_points[i]
|
|
};
|
|
}
|
|
if (cat_ax.labels) {
|
|
cat_ax.labels.y = rect.y;
|
|
cat_ax.labels.extY = point_interval * intervals_count;
|
|
if (cat_labels_align_left) {
|
|
if (width_flag === 0) {
|
|
for (i = 0; i < cat_ax.labels.arrLabels.length; ++i) {
|
|
if (cat_ax.labels.arrLabels[i]) {
|
|
var transform_text = cat_ax.labels.arrLabels[i].transformText;
|
|
transform_text.Reset();
|
|
global_MatrixTransformer.TranslateAppend(transform_text, cat_ax.labels.x + cat_ax.labels.extX - cat_ax.labels.arrLabels[i].tx.rich.content.XLimit - labels_offset, arr_cat_labels_points[i] - cat_ax.labels.arrLabels[i].tx.rich.content.Get_SummaryHeight() / 2);
|
|
local_transform_text = cat_ax.labels.arrLabels[i].localTransformText;
|
|
local_transform_text.Reset();
|
|
global_MatrixTransformer.TranslateAppend(local_transform_text, cat_ax.labels.x + cat_ax.labels.extX - cat_ax.labels.arrLabels[i].tx.rich.content.XLimit - labels_offset, arr_cat_labels_points[i] - cat_ax.labels.arrLabels[i].tx.rich.content.Get_SummaryHeight() / 2);
|
|
}
|
|
}
|
|
} else {
|
|
if (width_flag === 1) {
|
|
for (i = 0; i < cat_ax.labels.arrLabels.length; ++i) {
|
|
if (cat_ax.labels.arrLabels[i]) {
|
|
cat_ax.labels.arrLabels[i].tx.rich.content.Reset(0, 0, arr_min_max_min[i], 20000);
|
|
cat_ax.labels.arrLabels[i].tx.rich.content.Recalculate_Page(0, true);
|
|
var transform_text = cat_ax.labels.arrLabels[i].transformText;
|
|
transform_text.Reset();
|
|
global_MatrixTransformer.TranslateAppend(transform_text, cat_ax.labels.x + cat_ax.labels.extX - cat_ax.labels.arrLabels[i].tx.rich.content.XLimit - labels_offset, arr_cat_labels_points[i] - cat_ax.labels.arrLabels[i].tx.rich.content.Get_SummaryHeight() / 2);
|
|
local_transform_text = cat_ax.labels.arrLabels[i].localTransformText;
|
|
local_transform_text.Reset();
|
|
global_MatrixTransformer.TranslateAppend(local_transform_text, cat_ax.labels.x + cat_ax.labels.extX - cat_ax.labels.arrLabels[i].tx.rich.content.XLimit - labels_offset, arr_cat_labels_points[i] - cat_ax.labels.arrLabels[i].tx.rich.content.Get_SummaryHeight() / 2);
|
|
}
|
|
}
|
|
} else {
|
|
for (i = 0; i < cat_ax.labels.arrLabels.length; ++i) {
|
|
if (cat_ax.labels.arrLabels[i]) {
|
|
cat_ax.labels.arrLabels[i].tx.rich.content.Reset(0, 0, cat_ax.labels.extX - labels_offset, 20000);
|
|
cat_ax.labels.arrLabels[i].tx.rich.content.Recalculate_Page(0, true);
|
|
var transform_text = cat_ax.labels.arrLabels[i].transformText;
|
|
transform_text.Reset();
|
|
global_MatrixTransformer.TranslateAppend(transform_text, cat_ax.labels.x + cat_ax.labels.extX - cat_ax.labels.arrLabels[i].tx.rich.content.XLimit - labels_offset, arr_cat_labels_points[i] - cat_ax.labels.arrLabels[i].tx.rich.content.Get_SummaryHeight() / 2);
|
|
local_text_transform = cat_ax.labels.arrLabels[i].localTransformText;
|
|
local_text_transform.Reset();
|
|
global_MatrixTransformer.TranslateAppend(local_text_transform, cat_ax.labels.x + cat_ax.labels.extX - cat_ax.labels.arrLabels[i].tx.rich.content.XLimit - labels_offset, arr_cat_labels_points[i] - cat_ax.labels.arrLabels[i].tx.rich.content.Get_SummaryHeight() / 2);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
if (width_flag === 0) {
|
|
for (i = 0; i < cat_ax.labels.arrLabels.length; ++i) {
|
|
if (cat_ax.labels.arrLabels[i]) {
|
|
var transform_text = cat_ax.labels.arrLabels[i].transformText;
|
|
transform_text.Reset();
|
|
global_MatrixTransformer.TranslateAppend(transform_text, cat_ax.labels.x + labels_offset, arr_cat_labels_points[i] - cat_ax.labels.arrLabels[i].tx.rich.content.Get_SummaryHeight() / 2);
|
|
local_text_transform = cat_ax.labels.arrLabels[i].localTransformText;
|
|
local_text_transform.Reset();
|
|
global_MatrixTransformer.TranslateAppend(local_text_transform, cat_ax.labels.x + labels_offset, arr_cat_labels_points[i] - cat_ax.labels.arrLabels[i].tx.rich.content.Get_SummaryHeight() / 2);
|
|
}
|
|
}
|
|
} else {
|
|
if (width_flag === 1) {
|
|
for (i = 0; i < cat_ax.labels.arrLabels.length; ++i) {
|
|
if (cat_ax.labels.arrLabels[i]) {
|
|
cat_ax.labels.arrLabels[i].tx.rich.content.Reset(0, 0, arr_min_max_min[i], 20000);
|
|
cat_ax.labels.arrLabels[i].tx.rich.content.Recalculate_Page(0, true);
|
|
var transform_text = cat_ax.labels.arrLabels[i].transformText;
|
|
transform_text.Reset();
|
|
global_MatrixTransformer.TranslateAppend(transform_text, cat_ax.labels.x + labels_offset, arr_cat_labels_points[i] - cat_ax.labels.arrLabels[i].tx.rich.content.Get_SummaryHeight() / 2);
|
|
local_text_transform = cat_ax.labels.arrLabels[i].localTransformText;
|
|
local_text_transform.Reset();
|
|
global_MatrixTransformer.TranslateAppend(local_text_transform, cat_ax.labels.x + labels_offset, arr_cat_labels_points[i] - cat_ax.labels.arrLabels[i].tx.rich.content.Get_SummaryHeight() / 2);
|
|
}
|
|
}
|
|
} else {
|
|
for (i = 0; i < cat_ax.labels.arrLabels.length; ++i) {
|
|
if (cat_ax.labels.arrLabels[i]) {
|
|
cat_ax.labels.arrLabels[i].tx.rich.content.Reset(0, 0, cat_ax.labels.extX - labels_offset, 20000);
|
|
cat_ax.labels.arrLabels[i].tx.rich.content.Recalculate_Page(0, true);
|
|
var transform_text = cat_ax.labels.arrLabels[i].transformText;
|
|
transform_text.Reset();
|
|
global_MatrixTransformer.TranslateAppend(transform_text, cat_ax.labels.x + labels_offset, arr_cat_labels_points[i] - cat_ax.labels.arrLabels[i].tx.rich.content.Get_SummaryHeight() / 2);
|
|
local_text_transform = cat_ax.labels.arrLabels[i].localTransformText;
|
|
local_text_transform.Reset();
|
|
global_MatrixTransformer.TranslateAppend(local_text_transform, cat_ax.labels.x + labels_offset, arr_cat_labels_points[i] - cat_ax.labels.arrLabels[i].tx.rich.content.Get_SummaryHeight() / 2);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
cat_ax.yPoints.sort(function (a, b) {
|
|
return a.val - b.val;
|
|
});
|
|
val_ax.xPoints.sort(function (a, b) {
|
|
return a.val - b.val;
|
|
});
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
recalculateLegend: function () {
|
|
if (this.chart && this.chart.legend) {
|
|
var parents = this.getParentObjects();
|
|
var RGBA = {
|
|
R: 0,
|
|
G: 0,
|
|
B: 0,
|
|
A: 255
|
|
};
|
|
var legend = this.chart.legend;
|
|
var arr_str_labels = [],
|
|
i;
|
|
var calc_entryes = legend.calcEntryes;
|
|
calc_entryes.length = 0;
|
|
var series = this.getAllSeries();
|
|
var calc_entry, union_marker, entry;
|
|
var max_width = 0,
|
|
cur_width, max_font_size = 0,
|
|
cur_font_size, ser, b_line_series;
|
|
var max_word_width = 0;
|
|
this.chart.legend.chart = this;
|
|
var b_scatter_no_line = false;
|
|
if (!this.chart.plotArea.chart.varyColors || (this.chart.plotArea.chart.getObjectType() !== historyitem_type_PieChart && this.chart.plotArea.chart.getObjectType() !== historyitem_type_DoughnutChart) && series.length !== 1) {
|
|
for (i = 0; i < series.length; ++i) {
|
|
ser = series[i];
|
|
arr_str_labels.push(ser.getSeriesName());
|
|
if (ser.isHiddenForLegend) {
|
|
continue;
|
|
}
|
|
calc_entry = new CalcLegendEntry(legend, this);
|
|
calc_entry.txBody = CreateTextBodyFromString(arr_str_labels[i], this.getDrawingDocument(), calc_entry);
|
|
entry = legend.findLegendEntryByIndex(i);
|
|
if (entry) {
|
|
calc_entry.txPr = entry.txPr;
|
|
}
|
|
if (calc_entryes[0]) {
|
|
calc_entry.lastStyleObject = calc_entryes[0].lastStyleObject;
|
|
}
|
|
calc_entryes.push(calc_entry);
|
|
cur_width = calc_entry.txBody.getRectWidth(2000);
|
|
if (cur_width > max_width) {
|
|
max_width = cur_width;
|
|
}
|
|
cur_font_size = calc_entry.txBody.content.Content[0].CompiledPr.Pr.TextPr.FontSize;
|
|
if (cur_font_size > max_font_size) {
|
|
max_font_size = cur_font_size;
|
|
}
|
|
calc_entry.calcMarkerUnion = new CUnionMarker();
|
|
union_marker = calc_entry.calcMarkerUnion;
|
|
var pts = getPtsFromSeries(ser);
|
|
switch (ser.getObjectType()) {
|
|
case historyitem_type_BarSeries:
|
|
case historyitem_type_BubbleSeries:
|
|
case historyitem_type_AreaSeries:
|
|
case historyitem_type_PieSeries:
|
|
union_marker.marker = CreateMarkerGeometryByType(SYMBOL_SQUARE, null);
|
|
union_marker.marker.pen = ser.compiledSeriesPen;
|
|
union_marker.marker.brush = ser.compiledSeriesBrush;
|
|
break;
|
|
case historyitem_type_LineSeries:
|
|
case historyitem_type_ScatterSer:
|
|
case historyitem_type_SurfaceSeries:
|
|
if (ser.compiledSeriesMarker) {
|
|
union_marker.marker = CreateMarkerGeometryByType(ser.compiledSeriesMarker.symbol, null);
|
|
if (pts[0] && pts[0].compiledMarker) {
|
|
union_marker.marker.brush = pts[0].compiledMarker.brush;
|
|
union_marker.marker.pen = pts[0].compiledMarker.pen;
|
|
}
|
|
}
|
|
if (ser.compiledSeriesPen && !b_scatter_no_line) {
|
|
union_marker.lineMarker = CreateMarkerGeometryByType(SYMBOL_DASH, null);
|
|
union_marker.lineMarker.pen = ser.compiledSeriesPen.createDuplicate();
|
|
}
|
|
if (!b_scatter_no_line) {
|
|
b_line_series = true;
|
|
}
|
|
break;
|
|
}
|
|
if (union_marker.marker) {
|
|
union_marker.marker.pen && union_marker.marker.pen.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
union_marker.marker.brush && union_marker.marker.brush.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
}
|
|
union_marker.lineMarker && union_marker.lineMarker.pen && union_marker.lineMarker.pen.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
}
|
|
} else {
|
|
ser = series[0];
|
|
i = 1;
|
|
while (ser && ser.isHiddenForLegend) {
|
|
ser = series[i];
|
|
++i;
|
|
}
|
|
var pts = getPtsFromSeries(ser),
|
|
pt;
|
|
var cat_str_lit = getCatStringPointsFromSeries(ser);
|
|
for (i = 0; i < pts.length; ++i) {
|
|
pt = pts[i];
|
|
var str_pt = cat_str_lit ? cat_str_lit.getPtByIndex(pt.idx) : null;
|
|
if (str_pt) {
|
|
arr_str_labels.push(str_pt.val);
|
|
} else {
|
|
arr_str_labels.push(pt.idx + "");
|
|
}
|
|
calc_entry = new CalcLegendEntry(legend, this);
|
|
calc_entry.txBody = CreateTextBodyFromString(arr_str_labels[i], this.getDrawingDocument(), calc_entry);
|
|
entry = legend.findLegendEntryByIndex(i);
|
|
if (entry) {
|
|
calc_entry.txPr = entry.txPr;
|
|
}
|
|
if (calc_entryes[0]) {
|
|
calc_entry.lastStyleObject = calc_entryes[0].lastStyleObject;
|
|
}
|
|
calc_entryes.push(calc_entry);
|
|
cur_width = calc_entry.txBody.getRectWidth(2000);
|
|
if (cur_width > max_width) {
|
|
max_width = cur_width;
|
|
}
|
|
cur_font_size = calc_entry.txBody.content.Content[0].CompiledPr.Pr.TextPr.FontSize;
|
|
if (cur_font_size > max_font_size) {
|
|
max_font_size = cur_font_size;
|
|
}
|
|
calc_entry.calcMarkerUnion = new CUnionMarker();
|
|
union_marker = calc_entry.calcMarkerUnion;
|
|
if (ser.getObjectType() === historyitem_type_LineSeries || ser.getObjectType() === historyitem_type_ScatterSer) {
|
|
if (pt.compiledMarker) {
|
|
union_marker.marker = CreateMarkerGeometryByType(pt.compiledMarker.symbol, null);
|
|
union_marker.marker.brush = pt.compiledMarker.pen.Fill;
|
|
union_marker.marker.pen = pt.compiledMarker.pen;
|
|
}
|
|
if (pt.pen) {
|
|
union_marker.lineMarker = CreateMarkerGeometryByType(SYMBOL_DASH, null);
|
|
union_marker.lineMarker.pen = pt.pen;
|
|
}
|
|
if (!b_scatter_no_line) {
|
|
b_line_series = true;
|
|
}
|
|
} else {
|
|
union_marker.marker = CreateMarkerGeometryByType(SYMBOL_SQUARE, null);
|
|
union_marker.marker.pen = pt.pen;
|
|
union_marker.marker.brush = pt.brush;
|
|
}
|
|
if (union_marker.marker) {
|
|
union_marker.marker.pen && union_marker.marker.pen.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
union_marker.marker.brush && union_marker.marker.brush.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
}
|
|
union_marker.lineMarker && union_marker.lineMarker.pen && union_marker.lineMarker.pen.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
}
|
|
}
|
|
var marker_size;
|
|
var distance_to_text;
|
|
var line_marker_width;
|
|
if (b_line_series) {
|
|
marker_size = 2.5;
|
|
line_marker_width = 7.7;
|
|
for (i = 0; i < calc_entryes.length; ++i) {
|
|
calc_entry = calc_entryes[i];
|
|
if (calc_entry.calcMarkerUnion.lineMarker) {
|
|
calc_entry.calcMarkerUnion.lineMarker.spPr.geometry.Recalculate(line_marker_width, 1);
|
|
if (calc_entry.calcMarkerUnion.lineMarker.pen && isRealNumber(calc_entry.calcMarkerUnion.lineMarker.pen.w) && calc_entry.calcMarkerUnion.lineMarker.pen.w > 133000) {
|
|
calc_entry.calcMarkerUnion.lineMarker.pen.w = 133000;
|
|
}
|
|
calc_entry.calcMarkerUnion.lineMarker.penWidth = calc_entry.calcMarkerUnion.lineMarker.pen && isRealNumber(calc_entry.calcMarkerUnion.lineMarker.pen.w) ? calc_entry.calcMarkerUnion.lineMarker.pen.w / 36000 : 0;
|
|
}
|
|
if (calc_entryes[i].calcMarkerUnion.marker) {
|
|
calc_entryes[i].calcMarkerUnion.marker.spPr.geometry.Recalculate(marker_size, marker_size);
|
|
calc_entryes[i].calcMarkerUnion.marker.extX = marker_size;
|
|
calc_entryes[i].calcMarkerUnion.marker.extY = marker_size;
|
|
}
|
|
}
|
|
distance_to_text = marker_size;
|
|
} else {
|
|
marker_size = 0.2 * max_font_size;
|
|
for (i = 0; i < calc_entryes.length; ++i) {
|
|
calc_entryes[i].calcMarkerUnion.marker.spPr.geometry.Recalculate(marker_size, marker_size);
|
|
}
|
|
distance_to_text = marker_size;
|
|
}
|
|
var left_inset = marker_size + 3 * distance_to_text;
|
|
var legend_pos;
|
|
if (isRealNumber(legend.legendPos)) {
|
|
legend_pos = legend.legendPos;
|
|
} else {
|
|
if (!isRealObject(legend.layout) || !isRealObject(legend.layout.manualLayout)) {
|
|
legend_pos = LEGEND_POS_L;
|
|
}
|
|
}
|
|
var legend_width, legend_height;
|
|
if (isRealNumber(legend_pos) && (!legend.layout || !legend.layout.manualLayout || !isRealNumber(legend.layout.manualLayout.w) || !isRealNumber(legend.layout.manualLayout.h) || !isRealNumber(legend.layout.manualLayout.x) || !isRealNumber(legend.layout.manualLayout.y) || !isRealNumber(legend.layout.manualLayout.wMode) || !isRealNumber(legend.layout.manualLayout.hMode) || !isRealNumber(legend.layout.manualLayout.xMode) || !isRealNumber(legend.layout.manualLayout.yMode))) {
|
|
var max_legend_width, max_legend_height;
|
|
var cut_index;
|
|
if (legend_pos === LEGEND_POS_L || legend_pos === LEGEND_POS_R || legend_pos === LEGEND_POS_TR) {
|
|
max_legend_width = this.extX / 3;
|
|
var sizes = this.getChartSizes();
|
|
max_legend_height = sizes.h;
|
|
if (b_line_series) {
|
|
left_inset = line_marker_width + 3 * distance_to_text;
|
|
var content_width = max_legend_width - left_inset;
|
|
if (content_width <= 0) {
|
|
content_width = 0.01;
|
|
}
|
|
var cur_content_width, max_content_width = 0;
|
|
var arr_heights = [];
|
|
for (i = 0; i < calc_entryes.length; ++i) {
|
|
calc_entry = calc_entryes[i];
|
|
cur_content_width = calc_entry.txBody.getMaxContentWidth(content_width, true);
|
|
if (cur_content_width > max_content_width) {
|
|
max_content_width = cur_content_width;
|
|
}
|
|
arr_heights.push(calc_entry.txBody.getSummaryHeight());
|
|
}
|
|
if (max_content_width < max_legend_width - left_inset) {
|
|
legend_width = max_content_width + left_inset;
|
|
} else {
|
|
legend_width = max_legend_width;
|
|
}
|
|
var max_entry_height2 = Math.max.apply(Math, arr_heights);
|
|
for (i = 0; i < arr_heights.length; ++i) {
|
|
arr_heights[i] = max_entry_height2;
|
|
}
|
|
var height_summ = 0;
|
|
for (i = 0; i < arr_heights.length; ++i) {
|
|
height_summ += arr_heights[i];
|
|
if (height_summ > max_legend_height) {
|
|
cut_index = i;
|
|
break;
|
|
}
|
|
}
|
|
if (isRealNumber(cut_index)) {
|
|
if (cut_index > 0) {
|
|
legend_height = height_summ - arr_heights[cut_index];
|
|
} else {
|
|
legend_height = max_legend_height;
|
|
}
|
|
} else {
|
|
cut_index = arr_heights.length;
|
|
legend_height = height_summ;
|
|
}
|
|
legend.x = 0;
|
|
legend.y = 0;
|
|
legend.extX = legend_width;
|
|
legend.extY = legend_height;
|
|
var summ_h = 0;
|
|
calc_entryes.splice(cut_index, calc_entryes.length - cut_index);
|
|
for (i = 0; i < cut_index && i < calc_entryes.length; ++i) {
|
|
calc_entry = calc_entryes[i];
|
|
if (calc_entry.calcMarkerUnion.marker) {
|
|
calc_entry.calcMarkerUnion.marker.localX = distance_to_text + line_marker_width / 2 - calc_entry.calcMarkerUnion.marker.extX / 2;
|
|
calc_entry.calcMarkerUnion.marker.localY = summ_h + (calc_entry.txBody.content.Content[0].Lines[0].Bottom - calc_entry.txBody.content.Content[0].Lines[0].Top) / 2 - marker_size / 2;
|
|
}
|
|
if (calc_entry.calcMarkerUnion.lineMarker) {
|
|
calc_entry.calcMarkerUnion.lineMarker.localX = distance_to_text;
|
|
calc_entry.calcMarkerUnion.lineMarker.localY = summ_h + (calc_entry.txBody.content.Content[0].Lines[0].Bottom - calc_entry.txBody.content.Content[0].Lines[0].Top) / 2;
|
|
calc_entry.localX = calc_entry.calcMarkerUnion.lineMarker.localX + line_marker_width + distance_to_text;
|
|
calc_entry.localY = summ_h;
|
|
}
|
|
summ_h += arr_heights[i];
|
|
}
|
|
legend.setPosition(0, 0);
|
|
} else {
|
|
var content_width = max_legend_width - left_inset;
|
|
if (content_width <= 0) {
|
|
content_width = 0.01;
|
|
}
|
|
var cur_content_width, max_content_width = 0;
|
|
var arr_heights = [];
|
|
for (i = 0; i < calc_entryes.length; ++i) {
|
|
calc_entry = calc_entryes[i];
|
|
cur_content_width = calc_entry.txBody.getMaxContentWidth(content_width, true);
|
|
if (cur_content_width > max_content_width) {
|
|
max_content_width = cur_content_width;
|
|
}
|
|
arr_heights.push(calc_entry.txBody.getSummaryHeight());
|
|
}
|
|
var max_entry_height2 = Math.max.apply(Math, arr_heights);
|
|
for (i = 0; i < arr_heights.length; ++i) {
|
|
arr_heights[i] = max_entry_height2;
|
|
}
|
|
if (max_content_width < max_legend_width - left_inset) {
|
|
legend_width = max_content_width + left_inset;
|
|
} else {
|
|
legend_width = max_legend_width;
|
|
}
|
|
var height_summ = 0;
|
|
for (i = 0; i < arr_heights.length; ++i) {
|
|
height_summ += arr_heights[i];
|
|
if (height_summ > max_legend_height) {
|
|
cut_index = i;
|
|
break;
|
|
}
|
|
}
|
|
if (isRealNumber(cut_index)) {
|
|
if (cut_index > 0) {
|
|
legend_height = height_summ - arr_heights[cut_index];
|
|
} else {
|
|
legend_height = max_legend_height;
|
|
}
|
|
} else {
|
|
cut_index = arr_heights.length;
|
|
legend_height = height_summ;
|
|
}
|
|
legend.x = 0;
|
|
legend.y = 0;
|
|
legend.extX = legend_width;
|
|
legend.extY = legend_height;
|
|
var summ_h = 0;
|
|
var b_reverse_order = false;
|
|
var chart_object, cat_ax, start_index, end_index;
|
|
if (this.chart && this.chart.plotArea && this.chart.plotArea.charts[0]) {
|
|
chart_object = this.chart.plotArea.charts[0];
|
|
if (chart_object && chart_object.getAxisByTypes) {
|
|
var axis_by_types = chart_object.getAxisByTypes();
|
|
cat_ax = axis_by_types.catAx[0];
|
|
}
|
|
}
|
|
if (chart_object && chart_object.getObjectType() === historyitem_type_BarChart && chart_object.barDir === BAR_DIR_BAR && (cat_ax && cat_ax.scaling && isRealNumber(cat_ax.scaling.orientation) ? cat_ax.scaling.orientation : ORIENTATION_MIN_MAX) === ORIENTATION_MIN_MAX) {
|
|
b_reverse_order = true;
|
|
}
|
|
if (!b_reverse_order) {
|
|
calc_entryes.splice(cut_index, calc_entryes.length - cut_index);
|
|
for (i = 0; i < cut_index && i < calc_entryes.length; ++i) {
|
|
calc_entry = calc_entryes[i];
|
|
if (calc_entry.calcMarkerUnion.marker) {
|
|
calc_entry.calcMarkerUnion.marker.localX = distance_to_text;
|
|
calc_entry.calcMarkerUnion.marker.localY = summ_h + (calc_entry.txBody.content.Content[0].Lines[0].Bottom - calc_entry.txBody.content.Content[0].Lines[0].Top) / 2 - marker_size / 2;
|
|
}
|
|
calc_entry.localX = 2 * distance_to_text + marker_size;
|
|
calc_entry.localY = summ_h;
|
|
summ_h += arr_heights[i];
|
|
}
|
|
} else {
|
|
calc_entryes.splice(0, calc_entryes.length - cut_index);
|
|
for (i = calc_entryes.length - 1; i > -1; --i) {
|
|
calc_entry = calc_entryes[i];
|
|
if (calc_entry.calcMarkerUnion.marker) {
|
|
calc_entry.calcMarkerUnion.marker.localX = distance_to_text;
|
|
calc_entry.calcMarkerUnion.marker.localY = summ_h + (calc_entry.txBody.content.Content[0].Lines[0].Bottom - calc_entry.txBody.content.Content[0].Lines[0].Top) / 2 - marker_size / 2;
|
|
}
|
|
calc_entry.localX = 2 * distance_to_text + marker_size;
|
|
calc_entry.localY = summ_h;
|
|
summ_h += arr_heights[i];
|
|
}
|
|
}
|
|
legend.setPosition(0, 0);
|
|
}
|
|
} else {
|
|
max_legend_width = 0.9 * this.extX;
|
|
max_legend_height = (this.extY - (this.chart.title ? this.chart.title.extY : 0)) * 0.6;
|
|
if (b_line_series) {
|
|
var max_entry_width = 0,
|
|
cur_entry_width, cur_entry_height;
|
|
var left_width = line_marker_width + 3 * distance_to_text;
|
|
var arr_width = [],
|
|
arr_height = [];
|
|
var summ_width = 0;
|
|
for (i = 0; i < calc_entryes.length; ++i) {
|
|
calc_entry = calc_entryes[i];
|
|
cur_entry_width = calc_entry.txBody.getMaxContentWidth(20000, true);
|
|
if (cur_entry_width > max_entry_width) {
|
|
max_entry_width = cur_entry_width;
|
|
}
|
|
arr_height.push(calc_entry.txBody.getSummaryHeight());
|
|
arr_width.push(cur_entry_width + left_width);
|
|
summ_width += arr_width[arr_width.length - 1];
|
|
}
|
|
var max_entry_height = Math.max.apply(Math, arr_height);
|
|
var cur_left_x = 0;
|
|
if (summ_width < max_legend_width) {
|
|
if (summ_width + distance_to_text < max_legend_width) {
|
|
legend_width = summ_width + distance_to_text;
|
|
} else {
|
|
legend_width = max_legend_width;
|
|
}
|
|
legend_height = max_entry_height;
|
|
for (i = 0; i < calc_entryes.length; ++i) {
|
|
calc_entry = calc_entryes[i];
|
|
if (calc_entry.calcMarkerUnion.marker) {
|
|
calc_entry.calcMarkerUnion.marker.localX = cur_left_x + distance_to_text + line_marker_width / 2 - marker_size / 2;
|
|
}
|
|
calc_entry.calcMarkerUnion.lineMarker.localX = cur_left_x + distance_to_text;
|
|
calc_entry.calcMarkerUnion.lineMarker.localY = legend_height / 2;
|
|
cur_left_x += arr_width[i];
|
|
if (calc_entry.calcMarkerUnion.marker) {
|
|
calc_entry.calcMarkerUnion.marker.localY = legend_height / 2 - marker_size / 2;
|
|
}
|
|
calc_entry.localX = calc_entry.calcMarkerUnion.lineMarker.localX + line_marker_width + distance_to_text;
|
|
calc_entry.localY = 0;
|
|
}
|
|
legend.extX = legend_width;
|
|
legend.extY = legend_height;
|
|
legend.setPosition(0, 0);
|
|
} else {
|
|
if (max_legend_width >= max_entry_width + left_width) {
|
|
var hor_count = (max_legend_width / (max_entry_width + left_width)) >> 0;
|
|
var vert_count;
|
|
var t = calc_entryes.length / hor_count;
|
|
if (t - (t >> 0) > 0) {
|
|
vert_count = t + 1;
|
|
} else {
|
|
vert_count = t;
|
|
}
|
|
legend_width = hor_count * (max_legend_width + left_width);
|
|
if (legend_width + distance_to_text <= max_legend_width) {
|
|
legend_width += distance_to_text;
|
|
} else {
|
|
legend_width = max_legend_width;
|
|
}
|
|
var max_line_count = (max_legend_height / max_entry_height) >> 0;
|
|
if (vert_count <= max_line_count) {
|
|
cut_index = calc_entryes.length;
|
|
legend_height = vert_count * max_entry_height;
|
|
} else {
|
|
if (max_line_count === 0) {
|
|
cut_index = hor_count + 1;
|
|
legend_height = max_entry_height;
|
|
} else {
|
|
cut_index = max_line_count * hor_count + 1;
|
|
legend_height = max_entry_height * max_line_count;
|
|
}
|
|
}
|
|
legend.extX = legend_width;
|
|
legend.extY = legend_height;
|
|
calc_entryes.splice(cut_index, calc_entryes.length - cut_index);
|
|
for (i = 0; i < cut_index && i < calc_entryes.length; ++i) {
|
|
calc_entry = calc_entryes[i];
|
|
calc_entry.calcMarkerUnion.lineMarker.localX = (i - hor_count * ((i / hor_count) >> 0)) * (max_entry_width + line_marker_width + 2 * distance_to_text) + distance_to_text;
|
|
calc_entry.calcMarkerUnion.lineMarker.localY = ((i / hor_count) >> 0) * (max_entry_height) + max_entry_height / 2;
|
|
if (calc_entry.calcMarkerUnion.marker) {
|
|
calc_entry.calcMarkerUnion.marker.localX = calc_entry.calcMarkerUnion.lineMarker.localX + line_marker_width / 2 - marker_size / 2;
|
|
calc_entry.calcMarkerUnion.marker.localY = calc_entry.calcMarkerUnion.lineMarker.localY - marker_size / 2;
|
|
}
|
|
calc_entry.localX = calc_entry.calcMarkerUnion.lineMarker.localX + line_marker_width + distance_to_text;
|
|
calc_entry.localY = ((i / hor_count) >> 0) * (max_entry_height);
|
|
}
|
|
legend.setPosition(0, 0);
|
|
} else {
|
|
var content_width = max_legend_width - 2 * distance_to_text - marker_size;
|
|
if (content_width <= 0) {
|
|
content_width = 0.01;
|
|
}
|
|
var cur_content_width, max_content_width = 0;
|
|
var arr_heights = [];
|
|
for (i = 0; i < calc_entryes.length; ++i) {
|
|
calc_entry = calc_entryes[i];
|
|
cur_content_width = calc_entry.txBody.getMaxContentWidth(content_width, true);
|
|
if (cur_content_width > max_content_width) {
|
|
max_content_width = cur_content_width;
|
|
}
|
|
arr_heights.push(calc_entry.txBody.getSummaryHeight());
|
|
}
|
|
if (max_content_width < max_legend_width - left_inset) {
|
|
legend_width = max_content_width + left_inset;
|
|
} else {
|
|
legend_width = max_legend_width;
|
|
}
|
|
var height_summ = 0;
|
|
for (i = 0; i < arr_heights.length; ++i) {
|
|
height_summ += arr_heights[i];
|
|
if (height_summ > max_legend_height) {
|
|
cut_index = i;
|
|
break;
|
|
}
|
|
}
|
|
if (isRealNumber(cut_index)) {
|
|
if (cut_index > 0) {
|
|
legend_height = height_summ - arr_heights[cut_index];
|
|
} else {
|
|
legend_height = max_legend_height;
|
|
}
|
|
} else {
|
|
cut_index = arr_heights.length;
|
|
legend_height = height_summ;
|
|
}
|
|
legend.x = 0;
|
|
legend.y = 0;
|
|
legend.extX = legend_width;
|
|
legend.extY = legend_height;
|
|
var summ_h = 0;
|
|
calc_entryes.splice(cut_index, calc_entryes.length - cut_index);
|
|
for (i = 0; i < cut_index && i < calc_entryes.length; ++i) {
|
|
calc_entry = calc_entryes[i];
|
|
if (calc_entry.calcMarkerUnion.marker) {
|
|
calc_entry.calcMarkerUnion.marker.localX = distance_to_text;
|
|
calc_entry.calcMarkerUnion.marker.localY = summ_h + (calc_entry.txBody.content.Content[0].Lines[0].Bottom - calc_entry.txBody.content.Content[0].Lines[0].Top) / 2 - marker_size / 2;
|
|
}
|
|
calc_entry.localX = 2 * distance_to_text + marker_size;
|
|
calc_entry.localY = summ_h;
|
|
summ_h += arr_heights[i];
|
|
}
|
|
legend.setPosition(0, 0);
|
|
}
|
|
}
|
|
} else {
|
|
var max_entry_width = 0,
|
|
cur_entry_width, cur_entry_height;
|
|
var left_width = marker_size + 3 * distance_to_text;
|
|
var arr_width = [],
|
|
arr_height = [];
|
|
var summ_width = 0;
|
|
for (i = 0; i < calc_entryes.length; ++i) {
|
|
calc_entry = calc_entryes[i];
|
|
cur_entry_width = calc_entry.txBody.getMaxContentWidth(20000, true);
|
|
if (cur_entry_width > max_entry_width) {
|
|
max_entry_width = cur_entry_width;
|
|
}
|
|
arr_height.push(calc_entry.txBody.getSummaryHeight());
|
|
arr_width.push(cur_entry_width + left_width);
|
|
summ_width += arr_width[arr_width.length - 1];
|
|
}
|
|
var max_entry_height = Math.max.apply(Math, arr_height);
|
|
var cur_left_x = 0;
|
|
if (summ_width < max_legend_width) {
|
|
if (summ_width + distance_to_text < max_legend_width) {
|
|
legend_width = summ_width + distance_to_text;
|
|
} else {
|
|
legend_width = max_legend_width;
|
|
}
|
|
legend_height = max_entry_height;
|
|
for (i = 0; i < calc_entryes.length; ++i) {
|
|
calc_entry = calc_entryes[i];
|
|
calc_entry.calcMarkerUnion.marker.localX = cur_left_x + distance_to_text;
|
|
cur_left_x += arr_width[i];
|
|
calc_entry.calcMarkerUnion.marker.localY = legend_height / 2 - marker_size / 2;
|
|
calc_entry.localX = calc_entry.calcMarkerUnion.marker.localX + marker_size + distance_to_text;
|
|
calc_entry.localY = 0;
|
|
}
|
|
legend.extX = legend_width;
|
|
legend.extY = legend_height;
|
|
legend.setPosition(0, 0);
|
|
} else {
|
|
if (max_legend_width >= max_entry_width + left_width) {
|
|
var hor_count = (max_legend_width / (max_entry_width + left_width)) >> 0;
|
|
var vert_count;
|
|
var t = calc_entryes.length / hor_count;
|
|
if (t - (t >> 0) > 0) {
|
|
vert_count = t + 1;
|
|
} else {
|
|
vert_count = t;
|
|
}
|
|
legend_width = hor_count * (max_entry_width + left_width);
|
|
if (legend_width + distance_to_text <= max_legend_width) {
|
|
legend_width += distance_to_text;
|
|
} else {
|
|
legend_width = max_legend_width;
|
|
}
|
|
var max_line_count = (max_legend_height / max_entry_height) >> 0;
|
|
if (vert_count <= max_line_count) {
|
|
cut_index = calc_entryes.length;
|
|
legend_height = vert_count * max_entry_height;
|
|
} else {
|
|
if (max_line_count === 0) {
|
|
cut_index = hor_count + 1;
|
|
legend_height = max_entry_height;
|
|
} else {
|
|
cut_index = max_line_count * hor_count + 1;
|
|
legend_height = max_entry_height * max_line_count;
|
|
}
|
|
}
|
|
legend.extX = legend_width;
|
|
legend.extY = legend_height;
|
|
calc_entryes.splice(cut_index, calc_entryes.length - cut_index);
|
|
for (i = 0; i < cut_index && i < calc_entryes.length; ++i) {
|
|
calc_entry = calc_entryes[i];
|
|
calc_entry.calcMarkerUnion.marker.localX = (i - hor_count * ((i / hor_count) >> 0)) * (max_entry_width + marker_size + 2 * distance_to_text) + distance_to_text;
|
|
calc_entry.calcMarkerUnion.marker.localY = ((i / hor_count) >> 0) * (max_entry_height) + max_entry_height / 2 - marker_size / 2;
|
|
calc_entry.localX = calc_entry.calcMarkerUnion.marker.localX + marker_size + distance_to_text;
|
|
calc_entry.localY = ((i / hor_count) >> 0) * (max_entry_height);
|
|
}
|
|
legend.setPosition(0, 0);
|
|
} else {
|
|
var content_width = max_legend_width - 2 * distance_to_text - marker_size;
|
|
if (content_width <= 0) {
|
|
content_width = 0.01;
|
|
}
|
|
var cur_content_width, max_content_width = 0;
|
|
var arr_heights = [];
|
|
for (i = 0; i < calc_entryes.length; ++i) {
|
|
calc_entry = calc_entryes[i];
|
|
cur_content_width = calc_entry.txBody.getMaxContentWidth(content_width, true);
|
|
if (cur_content_width > max_content_width) {
|
|
max_content_width = cur_content_width;
|
|
}
|
|
arr_heights.push(calc_entry.txBody.getSummaryHeight());
|
|
}
|
|
if (max_content_width < max_legend_width - left_inset) {
|
|
legend_width = max_content_width + left_inset;
|
|
} else {
|
|
legend_width = max_legend_width;
|
|
}
|
|
var height_summ = 0;
|
|
for (i = 0; i < arr_heights.length; ++i) {
|
|
height_summ += arr_heights[i];
|
|
if (height_summ > max_legend_height) {
|
|
cut_index = i;
|
|
break;
|
|
}
|
|
}
|
|
if (isRealNumber(cut_index)) {
|
|
if (cut_index > 0) {
|
|
legend_height = height_summ - arr_heights[cut_index];
|
|
} else {
|
|
legend_height = max_legend_height;
|
|
}
|
|
} else {
|
|
cut_index = arr_heights.length;
|
|
legend_height = height_summ;
|
|
}
|
|
legend.x = 0;
|
|
legend.y = 0;
|
|
legend.extX = legend_width;
|
|
legend.extY = legend_height;
|
|
var summ_h = 0;
|
|
calc_entryes.splice(cut_index, calc_entryes.length - cut_index);
|
|
for (i = 0; i < cut_index && i < calc_entryes.length; ++i) {
|
|
calc_entry = calc_entryes[i];
|
|
calc_entry.calcMarkerUnion.marker.localX = distance_to_text;
|
|
calc_entry.calcMarkerUnion.marker.localY = summ_h + (calc_entry.txBody.content.Content[0].Lines[0].Bottom - calc_entry.txBody.content.Content[0].Lines[0].Top) / 2 - marker_size / 2;
|
|
calc_entry.localX = 2 * distance_to_text + marker_size;
|
|
calc_entry.localY = summ_h;
|
|
summ_h += arr_heights[i];
|
|
}
|
|
legend.setPosition(0, 0);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else {}
|
|
legend.recalcInfo = {
|
|
recalculateLine: true,
|
|
recalculateFill: true,
|
|
recalculateTransparent: true
|
|
};
|
|
legend.recalculatePen();
|
|
legend.recalculateBrush();
|
|
}
|
|
},
|
|
recalculateUpDownBars: function () {
|
|
if (this.chart && this.chart.plotArea && this.chart.plotArea.chart && this.chart.plotArea.chart.upDownBars) {
|
|
var bars = this.chart.plotArea.chart.upDownBars;
|
|
var up_bars = bars.upBars;
|
|
var down_bars = bars.downBars;
|
|
var parents = this.getParentObjects();
|
|
bars.upBarsBrush = null;
|
|
bars.upBarsPen = null;
|
|
bars.downBarsBrush = null;
|
|
bars.downBarsPen = null;
|
|
if (up_bars || down_bars) {
|
|
var default_bar_line = new CLn();
|
|
if (parents.theme && parents.theme.themeElements && parents.theme.themeElements.fmtScheme && parents.theme.themeElements.fmtScheme.lnStyleLst) {
|
|
default_bar_line.merge(parents.theme.themeElements.fmtScheme.lnStyleLst[0]);
|
|
}
|
|
if (this.style >= 1 && this.style <= 16) {
|
|
default_bar_line.setFill(CreateUnifillSolidFillSchemeColor(15, 0));
|
|
} else {
|
|
if (this.style >= 17 && this.style <= 32 || this.style >= 41 && this.style <= 48) {
|
|
default_bar_line = CreateNoFillLine();
|
|
} else {
|
|
if (this.style === 33 || this.style === 34) {
|
|
default_bar_line.setFill(CreateUnifillSolidFillSchemeColor(8, 0));
|
|
} else {
|
|
if (this.style >= 35 && this.style <= 40) {
|
|
default_bar_line.setFill(CreateUnifillSolidFillSchemeColor(this.style - 35, -0.25));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (up_bars) {
|
|
var default_up_bars_fill;
|
|
if (this.style === 1 || this.style === 9 || this.style === 17 || this.style === 25 || this.style === 41) {
|
|
default_up_bars_fill = CreateUnifillSolidFillSchemeColor(8, 0.25);
|
|
} else {
|
|
if (this.style === 2 || this.style === 10 || this.style === 18 || this.style === 26) {
|
|
default_up_bars_fill = CreateUnifillSolidFillSchemeColor(8, 0.05);
|
|
} else {
|
|
if (this.style >= 3 && this.style <= 8) {
|
|
default_up_bars_fill = CreateUnifillSolidFillSchemeColor(this.style - 3, 0.25);
|
|
} else {
|
|
if (this.style >= 11 && this.style <= 16) {
|
|
default_up_bars_fill = CreateUnifillSolidFillSchemeColor(this.style - 11, 0.25);
|
|
} else {
|
|
if (this.style >= 19 && this.style <= 24) {
|
|
default_up_bars_fill = CreateUnifillSolidFillSchemeColor(this.style - 19, 0.25);
|
|
} else {
|
|
if (this.style >= 27 && this.style <= 32) {
|
|
default_up_bars_fill = CreateUnifillSolidFillSchemeColor(this.style - 27, 0.25);
|
|
} else {
|
|
if (this.style >= 33 && this.style <= 40 || this.style === 42) {
|
|
default_up_bars_fill = CreateUnifillSolidFillSchemeColor(12, 0);
|
|
} else {
|
|
default_up_bars_fill = CreateUnifillSolidFillSchemeColor(this.style - 43, 0.25);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (up_bars.Fill) {
|
|
default_up_bars_fill.merge(up_bars.Fill);
|
|
}
|
|
default_up_bars_fill.calculate(parents.theme, parents.slide, parents.layout, parents.master, {
|
|
R: 0,
|
|
G: 0,
|
|
B: 0,
|
|
A: 255
|
|
});
|
|
this.chart.plotArea.chart.upDownBars.upBarsBrush = default_up_bars_fill;
|
|
var up_bars_line = default_bar_line.createDuplicate();
|
|
if (up_bars.ln) {
|
|
up_bars_line.merge(up_bars.ln);
|
|
}
|
|
up_bars_line.calculate(parents.theme, parents.slide, parents.layout, parents.master, {
|
|
R: 0,
|
|
G: 0,
|
|
B: 0,
|
|
A: 255
|
|
});
|
|
this.chart.plotArea.chart.upDownBars.upBarsPen = up_bars_line;
|
|
}
|
|
if (down_bars) {
|
|
var default_down_bars_fill;
|
|
if (this.style === 1 || this.style === 9 || this.style === 17 || this.style === 25 || this.style === 41 || this.style === 33) {
|
|
default_down_bars_fill = CreateUnifillSolidFillSchemeColor(8, 0.85);
|
|
} else {
|
|
if (this.style === 2 || this.style === 10 || this.style === 18 || this.style === 26 || this.style === 34) {
|
|
default_down_bars_fill = CreateUnifillSolidFillSchemeColor(8, 0.95);
|
|
} else {
|
|
if (this.style >= 3 && this.style <= 8) {
|
|
default_down_bars_fill = CreateUnifillSolidFillSchemeColor(this.style - 3, -0.25);
|
|
} else {
|
|
if (this.style >= 11 && this.style <= 16) {
|
|
default_down_bars_fill = CreateUnifillSolidFillSchemeColor(this.style - 11, -0.25);
|
|
} else {
|
|
if (this.style >= 19 && this.style <= 24) {
|
|
default_down_bars_fill = CreateUnifillSolidFillSchemeColor(this.style - 19, -0.25);
|
|
} else {
|
|
if (this.style >= 27 && this.style <= 32) {
|
|
default_down_bars_fill = CreateUnifillSolidFillSchemeColor(this.style - 27, -0.25);
|
|
} else {
|
|
if (this.style >= 35 && this.style <= 40) {
|
|
default_down_bars_fill = CreateUnifillSolidFillSchemeColor(this.style - 35, -0.25);
|
|
} else {
|
|
if (this.style === 42) {
|
|
default_down_bars_fill = CreateUnifillSolidFillSchemeColor(8, 0);
|
|
} else {
|
|
default_down_bars_fill = CreateUnifillSolidFillSchemeColor(this.style - 43, -0.25);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (down_bars.Fill) {
|
|
default_down_bars_fill.merge(down_bars.Fill);
|
|
}
|
|
default_down_bars_fill.calculate(parents.theme, parents.slide, parents.layout, parents.master, {
|
|
R: 0,
|
|
G: 0,
|
|
B: 0,
|
|
A: 255
|
|
});
|
|
this.chart.plotArea.chart.upDownBars.downBarsBrush = default_down_bars_fill;
|
|
var down_bars_line = default_bar_line.createDuplicate();
|
|
if (down_bars.ln) {
|
|
down_bars_line.merge(down_bars.ln);
|
|
}
|
|
down_bars_line.calculate(parents.theme, parents.slide, parents.layout, parents.master, {
|
|
R: 0,
|
|
G: 0,
|
|
B: 0,
|
|
A: 255
|
|
});
|
|
this.chart.plotArea.chart.upDownBars.downBarsPen = down_bars_line;
|
|
}
|
|
}
|
|
},
|
|
recalculatePlotAreaChartPen: function () {
|
|
if (this.chart && this.chart.plotArea) {
|
|
if (this.chart.plotArea.spPr && this.chart.plotArea.spPr.ln) {
|
|
this.chart.plotArea.pen = this.chart.plotArea.spPr.ln;
|
|
var parents = this.getParentObjects();
|
|
this.chart.plotArea.pen.calculate(parents.theme, parents.slide, parents.layout, parents.master, {
|
|
R: 0,
|
|
G: 0,
|
|
B: 0,
|
|
A: 255
|
|
});
|
|
} else {
|
|
this.chart.plotArea.pen = null;
|
|
}
|
|
}
|
|
},
|
|
recalculatePenBrush: function () {
|
|
var parents = this.getParentObjects(),
|
|
RGBA = {
|
|
R: 0,
|
|
G: 0,
|
|
B: 0,
|
|
A: 255
|
|
};
|
|
if (this.brush) {
|
|
this.brush.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
}
|
|
if (this.pen) {
|
|
this.pen.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
checkBlackUnifill(this.pen.Fill, true);
|
|
}
|
|
if (this.chart) {
|
|
if (this.chart.title) {
|
|
if (this.chart.title.brush) {
|
|
this.chart.title.brush.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
}
|
|
if (this.chart.title.pen) {
|
|
this.chart.title.pen.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
}
|
|
}
|
|
if (this.chart.plotArea) {
|
|
if (this.chart.plotArea.brush) {
|
|
this.chart.plotArea.brush.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
}
|
|
if (this.chart.plotArea.pen) {
|
|
this.chart.plotArea.pen.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
}
|
|
if (this.chart.plotArea.valAx) {
|
|
if (this.chart.plotArea.valAx.compiledTickMarkLn) {
|
|
this.chart.plotArea.valAx.compiledTickMarkLn.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
checkBlackUnifill(this.chart.plotArea.valAx.compiledTickMarkLn.Fill, true);
|
|
}
|
|
if (this.chart.plotArea.valAx.compiledMajorGridLines) {
|
|
this.chart.plotArea.valAx.compiledMajorGridLines.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
checkBlackUnifill(this.chart.plotArea.valAx.compiledMajorGridLines.Fill, true);
|
|
}
|
|
if (this.chart.plotArea.valAx.compiledMinorGridLines) {
|
|
this.chart.plotArea.valAx.compiledMinorGridLines.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
checkBlackUnifill(this.chart.plotArea.valAx.compiledMinorGridLines.Fill, true);
|
|
}
|
|
if (this.chart.plotArea.valAx.title) {
|
|
if (this.chart.plotArea.valAx.title.brush) {
|
|
this.chart.plotArea.valAx.title.brush.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
}
|
|
if (this.chart.plotArea.valAx.title.pen) {
|
|
this.chart.plotArea.valAx.title.pen.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
}
|
|
}
|
|
}
|
|
if (this.chart.plotArea.catAx) {
|
|
if (this.chart.plotArea.catAx.compiledTickMarkLn) {
|
|
this.chart.plotArea.catAx.compiledTickMarkLn.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
checkBlackUnifill(this.chart.plotArea.catAx.compiledTickMarkLn.Fill, true);
|
|
}
|
|
if (this.chart.plotArea.catAx.compiledMajorGridLines) {
|
|
this.chart.plotArea.catAx.compiledMajorGridLines.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
checkBlackUnifill(this.chart.plotArea.catAx.compiledMajorGridLines.Fill, true);
|
|
}
|
|
if (this.chart.plotArea.catAx.compiledMinorGridLines) {
|
|
this.chart.plotArea.catAx.compiledMinorGridLines.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
checkBlackUnifill(this.chart.plotArea.catAx.compiledMinorGridLines.Fill, true);
|
|
}
|
|
if (this.chart.plotArea.catAx.title) {
|
|
if (this.chart.plotArea.catAx.title.brush) {
|
|
this.chart.plotArea.catAx.title.brush.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
}
|
|
if (this.chart.plotArea.catAx.title.pen) {
|
|
this.chart.plotArea.catAx.title.pen.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
}
|
|
}
|
|
}
|
|
if (this.chart.plotArea.chart) {
|
|
var series = this.chart.plotArea.chart.series;
|
|
for (var i = 0; i < series.length; ++i) {
|
|
var pts = getPtsFromSeries(series[i]);
|
|
for (var j = 0; j < pts.length; ++j) {
|
|
var pt = pts[j];
|
|
if (pt.brush) {
|
|
pt.brush.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
}
|
|
if (pt.pen) {
|
|
pt.pen.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
}
|
|
if (pt.compiledMarker) {
|
|
if (pt.compiledMarker.brush) {
|
|
pt.compiledMarker.brush.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
}
|
|
if (pt.compiledMarker.pen) {
|
|
pt.compiledMarker.pen.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
}
|
|
}
|
|
if (pt.compiledDlb) {
|
|
if (pt.compiledDlb.brush) {
|
|
pt.compiledDlb.brush.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
}
|
|
if (pt.compiledDlb.pen) {
|
|
pt.compiledDlb.pen.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (this.chart.plotArea.chart.calculatedHiLowLines) {
|
|
this.chart.plotArea.chart.calculatedHiLowLines.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
}
|
|
if (this.chart.plotArea.chart.upDownBars) {
|
|
if (this.chart.plotArea.chart.upDownBars.upBarsBrush) {
|
|
this.chart.plotArea.chart.upDownBars.upBarsBrush.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
}
|
|
if (this.chart.plotArea.chart.upDownBars.upBarsPen) {
|
|
this.chart.plotArea.chart.upDownBars.upBarsPen.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
}
|
|
if (this.chart.plotArea.chart.upDownBars.downBarsBrush) {
|
|
this.chart.plotArea.chart.upDownBars.downBarsBrush.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
}
|
|
if (this.chart.plotArea.chart.upDownBars.downBarsPen) {
|
|
this.chart.plotArea.chart.upDownBars.downBarsPen.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (this.chart.legend) {
|
|
if (this.chart.legend.brush) {
|
|
this.chart.legend.brush.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
}
|
|
if (this.chart.legend.pen) {
|
|
this.chart.legend.pen.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
}
|
|
var legend = this.chart.legend;
|
|
for (var i = 0; i < legend.calcEntryes.length; ++i) {
|
|
var union_marker = legend.calcEntryes[i].calcMarkerUnion;
|
|
if (union_marker) {
|
|
if (union_marker.marker) {
|
|
if (union_marker.marker.pen) {
|
|
union_marker.marker.pen.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
}
|
|
if (union_marker.marker.brush) {
|
|
union_marker.marker.brush.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
}
|
|
}
|
|
if (union_marker.lineMarker) {
|
|
if (union_marker.lineMarker.pen) {
|
|
union_marker.lineMarker.pen.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
}
|
|
if (union_marker.lineMarker.brush) {
|
|
union_marker.lineMarker.brush.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
getChartSizes: function () {
|
|
if (!this.chartObj) {
|
|
this.chartObj = new CChartsDrawer();
|
|
}
|
|
return this.chartObj.calculateSizePlotArea(this);
|
|
},
|
|
getAllSeries: function () {
|
|
return this.chart.plotArea.chart.series;
|
|
},
|
|
recalculatePlotAreaChartBrush: function () {
|
|
if (this.chart && this.chart.plotArea) {
|
|
var plot_area = this.chart.plotArea;
|
|
var default_brush;
|
|
var tint = 0.2;
|
|
if (this.style >= 1 && this.style <= 32) {
|
|
default_brush = CreateUnifillSolidFillSchemeColor(6, tint);
|
|
} else {
|
|
if (this.style >= 33 && this.style <= 34) {
|
|
default_brush = CreateUnifillSolidFillSchemeColor(8, 0.2);
|
|
} else {
|
|
if (this.style >= 35 && this.style <= 40) {
|
|
default_brush = CreateUnifillSolidFillSchemeColor(this.style - 35, 0 + tint);
|
|
} else {
|
|
default_brush = CreateUnifillSolidFillSchemeColor(8, 0.95);
|
|
}
|
|
}
|
|
}
|
|
if (plot_area.spPr && plot_area.spPr.Fill) {
|
|
default_brush.merge(plot_area.spPr.Fill);
|
|
}
|
|
var parents = this.getParentObjects();
|
|
default_brush.calculate(parents.theme, parents.slide, parents.layout, parents.master, {
|
|
R: 0,
|
|
G: 0,
|
|
B: 0,
|
|
A: 255
|
|
});
|
|
plot_area.brush = default_brush;
|
|
}
|
|
},
|
|
recalculateChartPen: function () {
|
|
var parent_objects = this.getParentObjects();
|
|
var default_line = new CLn();
|
|
if (parent_objects.theme && parent_objects.theme.themeElements && parent_objects.theme.themeElements.fmtScheme && parent_objects.theme.themeElements.fmtScheme.lnStyleLst) {
|
|
default_line.merge(parent_objects.theme.themeElements.fmtScheme.lnStyleLst[0]);
|
|
}
|
|
var fill;
|
|
if (this.style >= 1 && this.style <= 32) {
|
|
fill = CreateUnifillSolidFillSchemeColor(15, 0.75);
|
|
} else {
|
|
if (this.style >= 33 && this.style <= 40) {
|
|
fill = CreateUnifillSolidFillSchemeColor(8, 0.75);
|
|
} else {
|
|
fill = CreateUnifillSolidFillSchemeColor(12, 0);
|
|
}
|
|
}
|
|
default_line.setFill(fill);
|
|
if (this.spPr && this.spPr.ln) {
|
|
default_line.merge(this.spPr.ln);
|
|
}
|
|
var parents = this.getParentObjects();
|
|
default_line.calculate(parents.theme, parents.slide, parents.layout, parents.master, {
|
|
R: 0,
|
|
G: 0,
|
|
B: 0,
|
|
A: 255
|
|
});
|
|
this.pen = default_line;
|
|
checkBlackUnifill(this.pen.Fill, true);
|
|
},
|
|
recalculateChartBrush: function () {
|
|
var default_brush;
|
|
if (this.style >= 1 && this.style <= 32) {
|
|
default_brush = CreateUnifillSolidFillSchemeColor(6, 0);
|
|
} else {
|
|
if (this.style >= 33 && this.style <= 40) {
|
|
default_brush = CreateUnifillSolidFillSchemeColor(12, 0);
|
|
} else {
|
|
default_brush = CreateUnifillSolidFillSchemeColor(8, 0);
|
|
}
|
|
}
|
|
if (this.spPr && this.spPr.Fill) {
|
|
default_brush.merge(this.spPr.Fill);
|
|
}
|
|
var parents = this.getParentObjects();
|
|
default_brush.calculate(parents.theme, parents.slide, parents.layout, parents.master, {
|
|
R: 0,
|
|
G: 0,
|
|
B: 0,
|
|
A: 255
|
|
});
|
|
this.brush = default_brush;
|
|
},
|
|
recalculateAxisTickMark: function () {
|
|
if (this.chart && this.chart.plotArea) {
|
|
var calcMajorMinorGridLines = function (axis, defaultStyle, subtleLine, parents) {
|
|
function calcGridLine(defaultStyle, spPr, subtleLine, parents) {
|
|
var compiled_grid_lines = new CLn();
|
|
compiled_grid_lines.merge(subtleLine);
|
|
if (!compiled_grid_lines.Fill) {
|
|
compiled_grid_lines.setFill(new CUniFill());
|
|
}
|
|
compiled_grid_lines.Fill.merge(defaultStyle);
|
|
if (subtleLine.Fill && subtleLine.Fill.fill && subtleLine.Fill.fill.color && subtleLine.Fill.fill.color.Mods && compiled_grid_lines.Fill && compiled_grid_lines.Fill.fill && compiled_grid_lines.Fill.fill.color) {
|
|
compiled_grid_lines.Fill.fill.color.Mods = subtleLine.Fill.fill.color.Mods.createDuplicate();
|
|
}
|
|
compiled_grid_lines.calculate(parents.theme, parents.slide, parents.layout, parents.master, {
|
|
R: 0,
|
|
G: 0,
|
|
B: 0,
|
|
A: 255
|
|
});
|
|
checkBlackUnifill(compiled_grid_lines.Fill, true);
|
|
return compiled_grid_lines;
|
|
}
|
|
axis.compiledLn = calcGridLine(defaultStyle.axisAndMajorGridLines, axis.spPr, subtleLine, parents);
|
|
axis.compiledTickMarkLn = axis.compiledLn.createDuplicate();
|
|
if (isRealNumber(axis.compiledTickMarkLn.w)) {
|
|
axis.compiledTickMarkLn.w /= 2;
|
|
}
|
|
axis.compiledTickMarkLn.calculate(parents.theme, parents.slide, parents.layout, parents.master, {
|
|
R: 0,
|
|
G: 0,
|
|
B: 0,
|
|
A: 255
|
|
});
|
|
};
|
|
var default_style = CHART_STYLE_MANAGER.getDefaultLineStyleByIndex(this.style);
|
|
var parent_objects = this.getParentObjects();
|
|
var subtle_line;
|
|
if (parent_objects.theme && parent_objects.theme.themeElements && parent_objects.theme.themeElements.fmtScheme && parent_objects.theme.themeElements.fmtScheme.lnStyleLst) {
|
|
subtle_line = parent_objects.theme.themeElements.fmtScheme.lnStyleLst[0];
|
|
}
|
|
if (this.chart.plotArea.valAx) {
|
|
calcMajorMinorGridLines(this.chart.plotArea.valAx, default_style, subtle_line, parent_objects);
|
|
}
|
|
if (this.chart.plotArea.catAx) {
|
|
calcMajorMinorGridLines(this.chart.plotArea.catAx, default_style, subtle_line, parent_objects);
|
|
}
|
|
}
|
|
},
|
|
getXValAxisValues: function () {
|
|
if (!this.chartObj) {
|
|
this.chartObj = new CChartsDrawer();
|
|
}
|
|
this.chartObj.preCalculateData(this);
|
|
return [].concat(this.chartObj.calcProp.xScale);
|
|
},
|
|
getValAxisValues: function () {
|
|
if (!this.chartObj) {
|
|
this.chartObj = new CChartsDrawer();
|
|
}
|
|
this.chartObj.preCalculateData(this);
|
|
return [].concat(this.chartObj.calcProp.scale);
|
|
},
|
|
getCalcProps: function () {
|
|
if (!this.chartObj) {
|
|
this.chartObj = new CChartsDrawer();
|
|
}
|
|
this.chartObj.preCalculateData(this);
|
|
return this.chartObj.calcProp;
|
|
},
|
|
recalculateDLbls: function () {
|
|
if (this.chart && this.chart.plotArea && this.chart.plotArea.chart && this.chart.plotArea.chart.series) {
|
|
var default_lbl = new CDLbl();
|
|
default_lbl.initDefault();
|
|
var series = this.chart.plotArea.chart.series;
|
|
for (var i = 0; i < series.length; ++i) {
|
|
var ser = series[i];
|
|
var pts = getPtsFromSeries(ser);
|
|
for (var j = 0; j < pts.length; ++j) {
|
|
var pt = pts[j];
|
|
var compiled_dlb = new CDLbl();
|
|
compiled_dlb.merge(default_lbl);
|
|
compiled_dlb.merge(this.chart.plotArea.chart.dLbls);
|
|
if (this.chart.plotArea.chart.dLbls) {
|
|
compiled_dlb.merge(this.chart.plotArea.chart.dLbls.findDLblByIdx(pt.idx), false);
|
|
}
|
|
compiled_dlb.merge(ser.dLbls);
|
|
if (ser.dLbls) {
|
|
compiled_dlb.merge(ser.dLbls.findDLblByIdx(pt.idx), true);
|
|
}
|
|
if (compiled_dlb.checkNoLbl()) {
|
|
pt.compiledDlb = null;
|
|
} else {
|
|
pt.compiledDlb = compiled_dlb;
|
|
pt.compiledDlb.chart = this;
|
|
pt.compiledDlb.series = ser;
|
|
pt.compiledDlb.pt = pt;
|
|
pt.compiledDlb.recalculate();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
recalculateHiLowLines: function () {
|
|
if (this.chart && this.chart.plotArea && (this.chart.plotArea.chart instanceof CStockChart || this.chart.plotArea.chart instanceof CLineChart) && this.chart.plotArea.chart.hiLowLines) {
|
|
var parents = this.getParentObjects();
|
|
var default_line = parents.theme.themeElements.fmtScheme.lnStyleLst[0].createDuplicate();
|
|
if (this.style >= 1 && this.style <= 32) {
|
|
default_line.setFill(CreateUnifillSolidFillSchemeColor(15, 0));
|
|
} else {
|
|
if (this.style >= 33 && this.style <= 34) {
|
|
default_line.setFill(CreateUnifillSolidFillSchemeColor(8, 0));
|
|
} else {
|
|
if (this.style >= 35 && this.style <= 40) {
|
|
default_line.setFill(CreateUnifillSolidFillSchemeColor(8, -0.25));
|
|
} else {
|
|
default_line.setFill(CreateUnifillSolidFillSchemeColor(12, 0));
|
|
}
|
|
}
|
|
}
|
|
default_line.merge(this.chart.plotArea.chart.hiLowLines.ln);
|
|
this.chart.plotArea.chart.calculatedHiLowLines = default_line;
|
|
default_line.calculate(parents.theme, parents.slide, parents.layout, parents.master, {
|
|
R: 0,
|
|
G: 0,
|
|
B: 0,
|
|
A: 255
|
|
});
|
|
} else {
|
|
this.chart.plotArea.chart.calculatedHiLowLines = null;
|
|
}
|
|
},
|
|
recalculateSeriesColors: function () {
|
|
if (this.chart && this.chart.plotArea && this.chart.plotArea.chart && this.chart.plotArea.chart.series) {
|
|
var style = CHART_STYLE_MANAGER.getStyleByIndex(this.style);
|
|
var series = this.chart.plotArea.chart.series;
|
|
var parents = this.getParentObjects();
|
|
var RGBA = {
|
|
R: 0,
|
|
G: 0,
|
|
B: 0,
|
|
A: 255
|
|
};
|
|
if (this.chart.plotArea.chart.varyColors && (series.length === 1 || this.chart.plotArea.chart.getObjectType() === historyitem_type_PieChart || this.chart.plotArea.chart.getObjectType() === historyitem_type_DoughnutChart)) {
|
|
for (var ii = 0; ii < series.length; ++ii) {
|
|
var ser = series[ii];
|
|
var pts = getPtsFromSeries(ser);
|
|
if (! (this.chart.plotArea.chart.getObjectType() === historyitem_type_LineChart || this.chart.plotArea.chart.getObjectType() === historyitem_type_ScatterChart)) {
|
|
var base_fills = getArrayFillsFromBase(style.fill2, getMaxIdx(pts));
|
|
for (var i = 0; i < pts.length; ++i) {
|
|
var compiled_brush = new CUniFill();
|
|
compiled_brush.merge(base_fills[pts[i].idx]);
|
|
if (ser.spPr && ser.spPr.Fill) {
|
|
compiled_brush.merge(ser.spPr.Fill);
|
|
}
|
|
if (Array.isArray(ser.dPt)) {
|
|
for (var j = 0; j < ser.dPt.length; ++j) {
|
|
if (ser.dPt[j].idx === pts[i].idx) {
|
|
if (ser.dPt[j].spPr) {
|
|
compiled_brush.merge(ser.dPt[j].spPr.Fill);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
pts[i].brush = compiled_brush;
|
|
pts[i].brush.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
}
|
|
default_line = new CLn();
|
|
if (style.line1 === EFFECT_NONE) {
|
|
default_line.w = 0;
|
|
} else {
|
|
if (style.line1 === EFFECT_SUBTLE) {
|
|
default_line.merge(parents.theme.themeElements.fmtScheme.lnStyleLst[0]);
|
|
} else {
|
|
if (style.line1 === EFFECT_MODERATE) {
|
|
default_line.merge(parents.theme.themeElements.fmtScheme.lnStyleLst[1]);
|
|
} else {
|
|
if (style.line1 === EFFECT_INTENSE) {
|
|
default_line.merge(parents.theme.themeElements.fmtScheme.lnStyleLst[2]);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
var base_line_fills;
|
|
if (this.style === 34) {
|
|
base_line_fills = getArrayFillsFromBase(style.line2, getMaxIdx(pts));
|
|
}
|
|
for (i = 0; i < pts.length; ++i) {
|
|
var compiled_line = new CLn();
|
|
compiled_line.merge(default_line);
|
|
compiled_line.Fill = new CUniFill();
|
|
if (this.style !== 34) {
|
|
compiled_line.Fill.merge(style.line2[0]);
|
|
} else {
|
|
compiled_line.Fill.merge(base_line_fills[pts[i].idx]);
|
|
}
|
|
if (ser.spPr && ser.spPr.ln) {
|
|
compiled_line.merge(ser.spPr.ln);
|
|
}
|
|
if (Array.isArray(ser.dPt)) {
|
|
for (var j = 0; j < ser.dPt.length; ++j) {
|
|
if (ser.dPt[j].idx === pts[i].idx) {
|
|
if (ser.dPt[j].spPr) {
|
|
compiled_line.merge(ser.dPt[j].spPr.ln);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
pts[i].pen = compiled_line;
|
|
pts[i].pen.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
}
|
|
} else {
|
|
var default_line;
|
|
if (this.chart.plotArea.chart.getObjectType() === historyitem_type_ScatterChart && this.chart.plotArea.chart.scatterStyle === SCATTER_STYLE_MARKER || this.chart.plotArea.chart.scatterStyle === SCATTER_STYLE_NONE) {
|
|
default_line = new CLn();
|
|
default_line.setFill(new CUniFill());
|
|
default_line.Fill.setFill(new CNoFill());
|
|
} else {
|
|
default_line = parents.theme.themeElements.fmtScheme.lnStyleLst[0];
|
|
}
|
|
var base_line_fills = getArrayFillsFromBase(style.line4, getMaxIdx(pts));
|
|
for (var i = 0; i < pts.length; ++i) {
|
|
var compiled_line = new CLn();
|
|
compiled_line.merge(default_line);
|
|
if (! (this.chart.plotArea.chart.getObjectType() === historyitem_type_ScatterChart && this.chart.plotArea.chart.scatterStyle === SCATTER_STYLE_MARKER || this.chart.plotArea.chart.scatterStyle === SCATTER_STYLE_NONE)) {
|
|
compiled_line.Fill.merge(base_line_fills[pts[i].idx]);
|
|
}
|
|
compiled_line.w *= style.line3;
|
|
if (ser.spPr && ser.spPr.ln) {
|
|
compiled_line.merge(ser.spPr.ln);
|
|
}
|
|
if (Array.isArray(ser.dPt)) {
|
|
for (var j = 0; j < ser.dPt.length; ++j) {
|
|
if (ser.dPt[j].idx === pts[i].idx) {
|
|
if (ser.dPt[j].spPr) {
|
|
compiled_line.merge(ser.dPt[j].spPr.ln);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
pts[i].brush = null;
|
|
pts[i].pen = compiled_line;
|
|
pts[i].pen.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
}
|
|
}
|
|
for (var j = 0; j < pts.length; ++j) {
|
|
if (pts[j].compiledMarker) {
|
|
pts[j].compiledMarker.pen && pts[j].compiledMarker.pen.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
pts[j].compiledMarker.brush && pts[j].compiledMarker.brush.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
switch (this.chart.plotArea.chart.getObjectType()) {
|
|
case historyitem_type_LineChart:
|
|
case historyitem_type_RadarChart:
|
|
var base_line_fills = getArrayFillsFromBase(style.line4, getMaxIdx(series));
|
|
for (var i = 0; i < series.length; ++i) {
|
|
var default_line = parents.theme.themeElements.fmtScheme.lnStyleLst[0];
|
|
var ser = series[i];
|
|
var pts = getPtsFromSeries(ser);
|
|
var compiled_line = new CLn();
|
|
compiled_line.merge(default_line);
|
|
compiled_line.Fill.merge(base_line_fills[ser.idx]);
|
|
compiled_line.w *= style.line3;
|
|
if (ser.spPr && ser.spPr.ln) {
|
|
compiled_line.merge(ser.spPr.ln);
|
|
}
|
|
ser.compiledSeriesPen = compiled_line.createDuplicate();
|
|
for (var j = 0; j < pts.length; ++j) {
|
|
var compiled_line = new CLn();
|
|
compiled_line.merge(default_line);
|
|
compiled_line.Fill.merge(base_line_fills[ser.idx]);
|
|
compiled_line.w *= style.line3;
|
|
if (ser.spPr && ser.spPr.ln) {
|
|
compiled_line.merge(ser.spPr.ln);
|
|
}
|
|
if (Array.isArray(ser.dPt)) {
|
|
for (var k = 0; k < ser.dPt.length; ++k) {
|
|
if (ser.dPt[k].idx === pts[j].idx) {
|
|
if (ser.dPt[k].spPr) {
|
|
compiled_line.merge(ser.dPt[k].spPr.ln);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
pts[j].brush = null;
|
|
pts[j].pen = compiled_line;
|
|
pts[j].pen.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
if (pts[j].compiledMarker) {
|
|
pts[j].compiledMarker.pen && pts[j].compiledMarker.pen.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
pts[j].compiledMarker.brush && pts[j].compiledMarker.brush.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
case historyitem_type_ScatterChart:
|
|
var base_line_fills = getArrayFillsFromBase(style.line4, getMaxIdx(series));
|
|
for (var i = 0; i < series.length; ++i) {
|
|
var default_line = parents.theme.themeElements.fmtScheme.lnStyleLst[0];
|
|
var ser = series[i];
|
|
var pts = getPtsFromSeries(ser);
|
|
if (this.chart.plotArea.chart.scatterStyle === SCATTER_STYLE_SMOOTH || this.chart.plotArea.chart.scatterStyle === SCATTER_STYLE_SMOOTH_MARKER) {
|
|
if (!isRealBool(ser.smooth)) {
|
|
ser.smooth = true;
|
|
}
|
|
}
|
|
if (this.chart.plotArea.chart.scatterStyle === SCATTER_STYLE_MARKER || this.chart.plotArea.chart.scatterStyle === SCATTER_STYLE_NONE) {
|
|
default_line = new CLn();
|
|
default_line.setFill(new CUniFill());
|
|
default_line.Fill.setFill(new CNoFill());
|
|
}
|
|
var compiled_line = new CLn();
|
|
compiled_line.merge(default_line);
|
|
if (! (this.chart.plotArea.chart.scatterStyle === SCATTER_STYLE_MARKER || this.chart.plotArea.chart.scatterStyle === SCATTER_STYLE_NONE)) {
|
|
compiled_line.Fill.merge(base_line_fills[ser.idx]);
|
|
}
|
|
compiled_line.w *= style.line3;
|
|
if (ser.spPr && ser.spPr.ln) {
|
|
compiled_line.merge(ser.spPr.ln);
|
|
}
|
|
ser.compiledSeriesPen = compiled_line.createDuplicate();
|
|
for (var j = 0; j < pts.length; ++j) {
|
|
var compiled_line = new CLn();
|
|
compiled_line.merge(default_line);
|
|
if (! (this.chart.plotArea.chart.scatterStyle === SCATTER_STYLE_MARKER || this.chart.plotArea.chart.scatterStyle === SCATTER_STYLE_NONE)) {
|
|
compiled_line.Fill.merge(base_line_fills[ser.idx]);
|
|
}
|
|
compiled_line.w *= style.line3;
|
|
if (ser.spPr && ser.spPr.ln) {
|
|
compiled_line.merge(ser.spPr.ln);
|
|
}
|
|
if (Array.isArray(ser.dPt)) {
|
|
for (var k = 0; k < ser.dPt.length; ++k) {
|
|
if (ser.dPt[k].idx === pts[j].idx) {
|
|
if (ser.dPt[k].spPr) {
|
|
compiled_line.merge(ser.dPt[k].spPr.ln);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
pts[j].brush = null;
|
|
pts[j].pen = compiled_line;
|
|
pts[j].pen.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
if (pts[j].compiledMarker) {
|
|
pts[j].compiledMarker.pen && pts[j].compiledMarker.pen.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
pts[j].compiledMarker.brush && pts[j].compiledMarker.brush.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
default:
|
|
var base_fills = getArrayFillsFromBase(style.fill2, getMaxIdx(series));
|
|
var base_line_fills = null;
|
|
if (style.line1 === EFFECT_SUBTLE && this.style === 34) {
|
|
base_line_fills = getArrayFillsFromBase(style.line2, getMaxIdx(series));
|
|
}
|
|
for (var i = 0; i < series.length; ++i) {
|
|
var ser = series[i];
|
|
var compiled_brush = new CUniFill();
|
|
compiled_brush.merge(base_fills[ser.idx]);
|
|
if (ser.spPr && ser.spPr.Fill) {
|
|
compiled_brush.merge(ser.spPr.Fill);
|
|
}
|
|
ser.compiledSeriesBrush = compiled_brush.createDuplicate();
|
|
var pts = getPtsFromSeries(ser);
|
|
for (var j = 0; j < pts.length; ++j) {
|
|
var compiled_brush = new CUniFill();
|
|
compiled_brush.merge(base_fills[ser.idx]);
|
|
if (ser.spPr && ser.spPr.Fill) {
|
|
compiled_brush.merge(ser.spPr.Fill);
|
|
}
|
|
if (Array.isArray(ser.dPt)) {
|
|
for (var k = 0; k < ser.dPt.length; ++k) {
|
|
if (ser.dPt[k].idx === pts[j].idx) {
|
|
if (ser.dPt[k].spPr) {
|
|
compiled_brush.merge(ser.dPt[k].spPr.Fill);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
pts[j].brush = compiled_brush;
|
|
pts[j].brush.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
}
|
|
default_line = new CLn();
|
|
if (style.line1 === EFFECT_NONE) {
|
|
default_line.w = 0;
|
|
} else {
|
|
if (style.line1 === EFFECT_SUBTLE) {
|
|
default_line.merge(parents.theme.themeElements.fmtScheme.lnStyleLst[0]);
|
|
} else {
|
|
if (style.line1 === EFFECT_MODERATE) {
|
|
default_line.merge(parents.theme.themeElements.fmtScheme.lnStyleLst[1]);
|
|
} else {
|
|
if (style.line1 === EFFECT_INTENSE) {
|
|
default_line.merge(parents.theme.themeElements.fmtScheme.lnStyleLst[2]);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
var base_line_fills;
|
|
if (this.style === 34) {
|
|
base_line_fills = getArrayFillsFromBase(style.line2, getMaxIdx(pts));
|
|
}
|
|
var compiled_line = new CLn();
|
|
compiled_line.merge(default_line);
|
|
compiled_line.Fill = new CUniFill();
|
|
if (this.style !== 34) {
|
|
compiled_line.Fill.merge(style.line2[0]);
|
|
} else {
|
|
compiled_line.Fill.merge(base_line_fills[ser.idx]);
|
|
}
|
|
if (ser.spPr && ser.spPr.ln) {
|
|
compiled_line.merge(ser.spPr.ln);
|
|
}
|
|
ser.compiledSeriesPen = compiled_line.createDuplicate();
|
|
for (var j = 0; j < pts.length; ++j) {
|
|
var compiled_line = new CLn();
|
|
compiled_line.merge(default_line);
|
|
compiled_line.Fill = new CUniFill();
|
|
if (this.style !== 34) {
|
|
compiled_line.Fill.merge(style.line2[0]);
|
|
} else {
|
|
compiled_line.Fill.merge(base_line_fills[ser.idx]);
|
|
}
|
|
if (ser.spPr && ser.spPr.ln) {
|
|
compiled_line.merge(ser.spPr.ln);
|
|
}
|
|
if (Array.isArray(ser.dPt)) {
|
|
for (var k = 0; k < ser.dPt.length; ++k) {
|
|
if (ser.dPt[k].idx === pts[j].idx) {
|
|
if (ser.dPt[k].spPr) {
|
|
compiled_line.merge(ser.dPt[k].spPr.ln);
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
pts[j].pen = compiled_line;
|
|
pts[j].pen.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
if (pts[j].compiledMarker) {
|
|
pts[j].compiledMarker.pen && pts[j].compiledMarker.pen.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
pts[j].compiledMarker.brush && pts[j].compiledMarker.brush.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
},
|
|
recalculateChartTitleEditMode: function (bWord) {
|
|
var old_pos_x, old_pos_y, old_pos_cx, old_pos_cy;
|
|
var pos_x, pos_y;
|
|
old_pos_x = this.recalcInfo.recalcTitle.x;
|
|
old_pos_y = this.recalcInfo.recalcTitle.y;
|
|
old_pos_cx = this.recalcInfo.recalcTitle.x + this.recalcInfo.recalcTitle.extX / 2;
|
|
old_pos_cy = this.recalcInfo.recalcTitle.y + this.recalcInfo.recalcTitle.extY / 2;
|
|
this.recalculateAxisLabels();
|
|
if (checkVerticalTitle(this.recalcInfo.recalcTitle)) {
|
|
pos_x = old_pos_x;
|
|
pos_y = old_pos_cy - this.recalcInfo.recalcTitle.extY / 2;
|
|
} else {
|
|
pos_x = old_pos_cx - this.recalcInfo.recalcTitle.extX / 2;
|
|
pos_y = old_pos_y;
|
|
}
|
|
this.recalcInfo.recalcTitle.setPosition(pos_x, pos_y);
|
|
if (bWord) {
|
|
this.recalcInfo.recalcTitle.updatePosition(this.posX, this.posY);
|
|
}
|
|
},
|
|
recalculateMarkers: function () {
|
|
if (this.chart && this.chart.plotArea && this.chart.plotArea.chart) {
|
|
var series = this.chart.plotArea.chart.series,
|
|
pts;
|
|
for (var i = 0; i < series.length; ++i) {
|
|
var ser = series[i];
|
|
ser.compiledSeriesMarker = null;
|
|
pts = getPtsFromSeries(ser);
|
|
for (var j = 0; j < pts.length; ++j) {
|
|
pts[j].compiledMarker = null;
|
|
}
|
|
}
|
|
var oThis = this;
|
|
var recalculateMarkers2 = function () {
|
|
var chart_style = CHART_STYLE_MANAGER.getStyleByIndex(oThis.style);
|
|
var effect_fill = chart_style.fill1;
|
|
var fill = chart_style.fill2;
|
|
var line = chart_style.line4;
|
|
var masrker_default_size = chart_style.markerSize;
|
|
var default_marker = new CMarker();
|
|
default_marker.setSize(masrker_default_size);
|
|
var parent_objects = oThis.getParentObjects();
|
|
if (parent_objects.theme && parent_objects.theme.themeElements && parent_objects.theme.themeElements.fmtScheme && parent_objects.theme.themeElements.fmtScheme.lnStyleLst) {
|
|
default_marker.setSpPr(new CSpPr());
|
|
default_marker.spPr.setLn(new CLn());
|
|
default_marker.spPr.ln.merge(parent_objects.theme.themeElements.fmtScheme.lnStyleLst[0]);
|
|
}
|
|
var RGBA = {
|
|
R: 0,
|
|
G: 0,
|
|
B: 0,
|
|
A: 255
|
|
};
|
|
if (oThis.chart.plotArea.chart.varyColors && (oThis.chart.plotArea.chart.series.length === 1 || oThis.chart.plotArea.chart.getObjectType() === historyitem_type_PieChart || oThis.chart.plotArea.chart.getObjectType() === historyitem_type_DoughnutChart)) {
|
|
var ser = oThis.chart.plotArea.chart.series[0],
|
|
pts;
|
|
if (ser.marker && ser.marker.symbol === SYMBOL_NONE && (!Array.isArray(ser.dPt) || ser.dPt.length === 0)) {
|
|
return;
|
|
}
|
|
pts = getPtsFromSeries(ser);
|
|
var series_marker = ser.marker;
|
|
var brushes = getArrayFillsFromBase(fill, getMaxIdx(pts));
|
|
var pens_fills = getArrayFillsFromBase(line, getMaxIdx(pts));
|
|
var compiled_markers = [];
|
|
for (var i = 0; i < pts.length; ++i) {
|
|
var compiled_marker = new CMarker();
|
|
compiled_marker.merge(default_marker);
|
|
if (!compiled_marker.spPr) {
|
|
compiled_marker.setSpPr(new CSpPr());
|
|
}
|
|
compiled_marker.spPr.setFill(brushes[pts[i].idx]);
|
|
compiled_marker.spPr.Fill.merge(pts[i].brush);
|
|
if (!compiled_marker.spPr.ln) {
|
|
compiled_marker.spPr.setLn(new CLn());
|
|
}
|
|
compiled_marker.spPr.ln.merge(pts[i].pen);
|
|
compiled_marker.setSymbol(GetTypeMarkerByIndex(i));
|
|
compiled_marker.merge(ser.marker);
|
|
if (Array.isArray(ser.dPt)) {
|
|
for (var j = 0; j < ser.dPt.length; ++j) {
|
|
if (ser.dPt[j].idx === pts[i].idx) {
|
|
var d_pt = ser.dPt[j];
|
|
if (d_pt.spPr && (d_pt.spPr.Fill || d_pt.spPr.ln)) {
|
|
if (!compiled_marker.spPr) {
|
|
compiled_marker.setSpPr(new CSpPr());
|
|
}
|
|
if (d_pt.spPr.Fill) {
|
|
compiled_marker.spPr.setFill(d_pt.spPr.Fill.createDuplicate());
|
|
}
|
|
if (d_pt.spPr.ln) {
|
|
if (!compiled_marker.spPr.ln) {
|
|
compiled_marker.spPr.setLn(new CLn());
|
|
}
|
|
compiled_marker.spPr.ln.merge(d_pt.spPr.ln);
|
|
}
|
|
}
|
|
compiled_marker.merge(ser.dPt[j].marker);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
pts[i].compiledMarker = compiled_marker;
|
|
pts[i].compiledMarker.pen = compiled_marker.spPr.ln;
|
|
pts[i].compiledMarker.brush = compiled_marker.spPr.Fill;
|
|
pts[i].compiledMarker.brush.calculate(parent_objects.theme, parent_objects.slide, parent_objects.layout, parent_objects.master, RGBA);
|
|
pts[i].compiledMarker.pen.calculate(parent_objects.theme, parent_objects.slide, parent_objects.layout, parent_objects.master, RGBA);
|
|
}
|
|
} else {
|
|
var series = oThis.chart.plotArea.chart.series;
|
|
var brushes = getArrayFillsFromBase(fill, getMaxIdx(series));
|
|
var pens_fills = getArrayFillsFromBase(line, getMaxIdx(series));
|
|
for (var i = 0; i < series.length; ++i) {
|
|
var ser = series[i];
|
|
if (ser.marker && ser.marker.symbol === SYMBOL_NONE && (!Array.isArray(ser.dPt) || ser.dPt.length === 0)) {
|
|
continue;
|
|
}
|
|
pts = getPtsFromSeries(ser);
|
|
for (var j = 0; j < pts.length; ++j) {
|
|
var compiled_marker = new CMarker();
|
|
compiled_marker.merge(default_marker);
|
|
if (!compiled_marker.spPr) {
|
|
compiled_marker.setSpPr(new CSpPr());
|
|
}
|
|
compiled_marker.spPr.setFill(brushes[series[i].idx]);
|
|
if (!compiled_marker.spPr.ln) {
|
|
compiled_marker.spPr.setLn(new CLn());
|
|
}
|
|
compiled_marker.spPr.ln.setFill(pens_fills[series[i].idx]);
|
|
compiled_marker.setSymbol(GetTypeMarkerByIndex(series[i].idx));
|
|
compiled_marker.merge(ser.marker);
|
|
if (j === 0) {
|
|
ser.compiledSeriesMarker = compiled_marker.createDuplicate();
|
|
}
|
|
if (Array.isArray(ser.dPt)) {
|
|
for (var k = 0; k < ser.dPt.length; ++k) {
|
|
if (ser.dPt[k].idx === pts[j].idx) {
|
|
compiled_marker.merge(ser.dPt[k].marker);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
pts[j].compiledMarker = compiled_marker;
|
|
pts[j].compiledMarker.pen = compiled_marker.spPr.ln;
|
|
pts[j].compiledMarker.brush = compiled_marker.spPr.Fill;
|
|
pts[j].compiledMarker.brush.calculate(parent_objects.theme, parent_objects.slide, parent_objects.layout, parent_objects.master, RGBA);
|
|
pts[j].compiledMarker.pen.calculate(parent_objects.theme, parent_objects.slide, parent_objects.layout, parent_objects.master, RGBA);
|
|
}
|
|
}
|
|
}
|
|
};
|
|
switch (this.chart.plotArea.chart.getObjectType()) {
|
|
case historyitem_type_LineChart:
|
|
case historyitem_type_RadarChart:
|
|
if (this.chart.plotArea.chart.marker) {
|
|
recalculateMarkers2();
|
|
}
|
|
break;
|
|
case historyitem_type_ScatterChart:
|
|
if (this.chart.plotArea.chart.scatterStyle === SCATTER_STYLE_MARKER || this.chart.plotArea.chart.scatterStyle === SCATTER_STYLE_LINE_MARKER || this.chart.plotArea.chart.scatterStyle === SCATTER_STYLE_SMOOTH_MARKER) {
|
|
recalculateMarkers2();
|
|
}
|
|
break;
|
|
default:
|
|
recalculateMarkers2();
|
|
break;
|
|
}
|
|
}
|
|
},
|
|
calcGridLine: function (defaultStyle, spPr, subtleLine, parents) {
|
|
if (spPr) {
|
|
var compiled_grid_lines = new CLn();
|
|
compiled_grid_lines.merge(subtleLine);
|
|
if (!compiled_grid_lines.Fill) {
|
|
compiled_grid_lines.setFill(new CUniFill());
|
|
}
|
|
compiled_grid_lines.Fill.merge(defaultStyle);
|
|
if (subtleLine.Fill && subtleLine.Fill.fill && subtleLine.Fill.fill.color && subtleLine.Fill.fill.color.Mods && compiled_grid_lines.Fill && compiled_grid_lines.Fill.fill && compiled_grid_lines.Fill.fill.color) {
|
|
compiled_grid_lines.Fill.fill.color.Mods = subtleLine.Fill.fill.color.Mods.createDuplicate();
|
|
}
|
|
compiled_grid_lines.merge(spPr.ln);
|
|
compiled_grid_lines.calculate(parents.theme, parents.slide, parents.layout, parents.master, {
|
|
R: 0,
|
|
G: 0,
|
|
B: 0,
|
|
A: 255
|
|
});
|
|
checkBlackUnifill(compiled_grid_lines.Fill, true);
|
|
return compiled_grid_lines;
|
|
}
|
|
return null;
|
|
},
|
|
calcMajorMinorGridLines: function (axis, defaultStyle, subtleLine, parents) {
|
|
if (!axis) {
|
|
return;
|
|
}
|
|
axis.compiledMajorGridLines = this.calcGridLine(defaultStyle.axisAndMajorGridLines, axis.majorGridlines, subtleLine, parents);
|
|
axis.compiledMinorGridLines = this.calcGridLine(defaultStyle.minorGridlines, axis.minorGridlines, subtleLine, parents);
|
|
},
|
|
handleTitlesAfterChangeTheme: function () {
|
|
if (this.chart && this.chart.title) {
|
|
this.chart.title.checkAfterChangeTheme();
|
|
}
|
|
if (this.chart && this.chart.plotArea) {
|
|
var hor_axis = this.chart.plotArea.getHorizontalAxis();
|
|
if (hor_axis && hor_axis.title) {
|
|
hor_axis.title.checkAfterChangeTheme();
|
|
}
|
|
var vert_axis = this.chart.plotArea.getVerticalAxis();
|
|
if (vert_axis && vert_axis.title) {
|
|
vert_axis.title.checkAfterChangeTheme();
|
|
}
|
|
}
|
|
},
|
|
recalculateGridLines: function () {
|
|
if (this.chart && this.chart.plotArea) {
|
|
var default_style = CHART_STYLE_MANAGER.getDefaultLineStyleByIndex(this.style);
|
|
var parent_objects = this.getParentObjects();
|
|
var subtle_line;
|
|
if (parent_objects.theme && parent_objects.theme.themeElements && parent_objects.theme.themeElements.fmtScheme && parent_objects.theme.themeElements.fmtScheme.lnStyleLst) {
|
|
subtle_line = parent_objects.theme.themeElements.fmtScheme.lnStyleLst[0];
|
|
}
|
|
this.calcMajorMinorGridLines(this.chart.plotArea.valAx, default_style, subtle_line, parent_objects);
|
|
this.calcMajorMinorGridLines(this.chart.plotArea.catAx, default_style, subtle_line, parent_objects);
|
|
}
|
|
},
|
|
hitToAdjustment: function () {
|
|
return {
|
|
hit: false
|
|
};
|
|
},
|
|
recalculateAxisLabels: function () {
|
|
if (this.chart && this.chart.title) {
|
|
var title = this.chart.title;
|
|
title.chart = this;
|
|
title.recalculate();
|
|
}
|
|
if (this.chart && this.chart.plotArea) {
|
|
var hor_axis = this.chart.plotArea.getHorizontalAxis();
|
|
if (hor_axis && hor_axis.title) {
|
|
var title = hor_axis.title;
|
|
title.chart = this;
|
|
title.recalculate();
|
|
}
|
|
var vert_axis = this.chart.plotArea.getVerticalAxis();
|
|
if (vert_axis && vert_axis.title) {
|
|
var title = vert_axis.title;
|
|
title.chart = this;
|
|
title.recalculate();
|
|
}
|
|
}
|
|
},
|
|
recalculateBaseColors: function () {
|
|
if (this.style && (typeof(this.style) == "number")) {
|
|
if (this.style % 8 === 0) {
|
|
this.baseColors = CreateColorMapByIndex(8);
|
|
} else {
|
|
this.baseColors = CreateColorMapByIndex(this.style % 8);
|
|
}
|
|
} else {
|
|
this.baseColors = CreateColorMapByIndex(2);
|
|
}
|
|
},
|
|
updateLinks: function () {
|
|
if (this.chart && this.chart.plotArea) {
|
|
this.chart.plotArea.chart = this.chart.plotArea.charts[0];
|
|
if (this.chart.plotArea.chart.getAxisByTypes) {
|
|
var axis_by_types = this.chart.plotArea.chart.getAxisByTypes();
|
|
if (axis_by_types.valAx.length === 1 && axis_by_types.catAx.length === 1) {
|
|
this.chart.plotArea.valAx = axis_by_types.valAx[0];
|
|
this.chart.plotArea.catAx = axis_by_types.catAx[0];
|
|
} else {
|
|
if (axis_by_types.valAx.length > 1) {
|
|
this.chart.plotArea.valAx = axis_by_types.valAx[1];
|
|
this.chart.plotArea.catAx = axis_by_types.valAx[0];
|
|
}
|
|
}
|
|
} else {
|
|
this.chart.plotArea.valAx = null;
|
|
this.chart.plotArea.catAx = null;
|
|
}
|
|
}
|
|
},
|
|
draw: function (graphics) {
|
|
if (graphics.IsSlideBoundsCheckerType) {
|
|
graphics.transform3(this.transform);
|
|
graphics._s();
|
|
graphics._m(0, 0);
|
|
graphics._l(this.extX, 0);
|
|
graphics._l(this.extX, this.extY);
|
|
graphics._l(0, this.extY);
|
|
graphics._e();
|
|
return;
|
|
}
|
|
if (graphics.updatedRect) {
|
|
var rect = graphics.updatedRect;
|
|
var bounds = this.bounds;
|
|
if (bounds.x > rect.x + rect.w || bounds.y > rect.y + rect.h || bounds.x + bounds.w < rect.x || bounds.y + bounds.h < rect.y) {
|
|
return;
|
|
}
|
|
}
|
|
graphics.SaveGrState();
|
|
graphics.SetIntegerGrid(false);
|
|
graphics.transform3(this.transform, false);
|
|
var ln_width;
|
|
if (this.pen && isRealNumber(this.pen.w)) {
|
|
ln_width = this.pen.w / 36000;
|
|
} else {
|
|
ln_width = 0;
|
|
}
|
|
graphics.AddClipRect(-ln_width, -ln_width, this.extX + 2 * ln_width, this.extY + 2 * ln_width);
|
|
if (this.chartObj) {
|
|
this.chartObj.draw(this, graphics);
|
|
}
|
|
if (this.chart) {
|
|
if (this.chart.plotArea) {
|
|
if (this.chart.plotArea.chart && this.chart.plotArea.chart.series) {
|
|
var series = this.chart.plotArea.chart.series;
|
|
var _len = this.chart.plotArea.chart.getObjectType() === historyitem_type_PieChart ? 1 : series.length;
|
|
for (var i = 0; i < _len; ++i) {
|
|
var ser = series[i];
|
|
var pts = getPtsFromSeries(ser);
|
|
for (var j = 0; j < pts.length; ++j) {
|
|
if (pts[j].compiledDlb) {
|
|
pts[j].compiledDlb.draw(graphics);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (this.chart.plotArea.catAx) {
|
|
if (this.chart.plotArea.catAx.title) {
|
|
this.chart.plotArea.catAx.title.draw(graphics);
|
|
}
|
|
if (this.chart.plotArea.catAx.labels) {
|
|
this.chart.plotArea.catAx.labels.draw(graphics);
|
|
}
|
|
}
|
|
if (this.chart.plotArea.valAx) {
|
|
if (this.chart.plotArea.valAx.title) {
|
|
this.chart.plotArea.valAx.title.draw(graphics);
|
|
}
|
|
if (this.chart.plotArea.valAx.labels) {
|
|
this.chart.plotArea.valAx.labels.draw(graphics);
|
|
}
|
|
}
|
|
}
|
|
if (this.chart.title) {
|
|
this.chart.title.draw(graphics);
|
|
}
|
|
if (this.chart.legend) {
|
|
this.chart.legend.draw(graphics);
|
|
}
|
|
}
|
|
graphics.RestoreGrState();
|
|
if (this.Lock && locktype_None != this.Lock.Get_Type() && !this.group) {
|
|
graphics.SaveGrState();
|
|
graphics.transform3(this.transform);
|
|
graphics.DrawLockObjectRect(this.Lock.Get_Type(), 0, 0, this.extX, this.extY);
|
|
graphics.RestoreGrState();
|
|
}
|
|
},
|
|
addToSetPosition: function (dLbl) {
|
|
if (dLbl instanceof CDLbl) {
|
|
this.recalcInfo.dataLbls.push(dLbl);
|
|
} else {
|
|
if (dLbl instanceof CTitle) {
|
|
this.recalcInfo.axisLabels.push(dLbl);
|
|
}
|
|
}
|
|
},
|
|
recalculateChart: function () {
|
|
if (this.chartObj == null) {
|
|
this.chartObj = new CChartsDrawer();
|
|
}
|
|
this.chartObj.reCalculate(this);
|
|
},
|
|
Undo: function (data) {
|
|
switch (data.Type) {
|
|
case historyitem_AutoShapes_RemoveFromDrawingObjects:
|
|
addToDrawings(this.worksheet, this, data.Pos);
|
|
break;
|
|
case historyitem_AutoShapes_AddToDrawingObjects:
|
|
deleteDrawingBase(this.worksheet.Drawings, this.Get_Id());
|
|
break;
|
|
case historyitem_AutoShapes_SetWorksheet:
|
|
this.worksheet = data.oldPr;
|
|
break;
|
|
case historyitem_ChartSpace_SetParent:
|
|
this.parent = data.oldPr;
|
|
break;
|
|
case historyitem_ShapeSetBDeleted:
|
|
this.bDeleted = data.oldPr;
|
|
break;
|
|
case historyitem_ChartSpace_SetChart:
|
|
this.chart = data.oldChart;
|
|
break;
|
|
case historyitem_ChartSpace_SetClrMapOvr:
|
|
this.clrMapOvr = data.oldClrMapOvr;
|
|
break;
|
|
case historyitem_ChartSpace_SetDate1904:
|
|
this.date1904 = data.oldDate1904;
|
|
break;
|
|
case historyitem_ChartSpace_SetExternalData:
|
|
this.externalData = data.oldExternalData;
|
|
break;
|
|
case historyitem_ChartSpace_SetLang:
|
|
this.lang = data.oldLang;
|
|
break;
|
|
case historyitem_ChartSpace_SetPivotSource:
|
|
this.pivotSource = data.oldPivotSource;
|
|
break;
|
|
case historyitem_ChartSpace_SetPrintSettings:
|
|
this.printSettings = data.oldPrintSettings;
|
|
break;
|
|
case historyitem_ChartSpace_SetProtection:
|
|
this.protection = data.oldProtection;
|
|
break;
|
|
case historyitem_ChartSpace_SetRoundedCorners:
|
|
this.roundedCorners = data.oldRoundedCorners;
|
|
break;
|
|
case historyitem_ChartSpace_SetSpPr:
|
|
this.spPr = data.oldSpPr;
|
|
break;
|
|
case historyitem_ChartSpace_SetStyle:
|
|
this.style = data.oldStyle;
|
|
break;
|
|
case historyitem_ChartSpace_SetTxPr:
|
|
this.txPr = data.oldTxPr;
|
|
break;
|
|
case historyitem_ChartSpace_SetUserShapes:
|
|
this.userShapes = data.oldUserShapes;
|
|
break;
|
|
case historyitem_ChartSpace_SetThemeOverride:
|
|
this.themeOverride = data.oldPr;
|
|
break;
|
|
case historyitem_ChartSpace_SetGroup:
|
|
this.group = data.oldPr;
|
|
break;
|
|
}
|
|
},
|
|
Redo: function (data) {
|
|
switch (data.Type) {
|
|
case historyitem_AutoShapes_RemoveFromDrawingObjects:
|
|
deleteDrawingBase(this.worksheet.Drawings, this.Get_Id());
|
|
break;
|
|
case historyitem_AutoShapes_AddToDrawingObjects:
|
|
addToDrawings(this.worksheet, this, data.Pos);
|
|
break;
|
|
case historyitem_ChartSpace_SetParent:
|
|
this.parent = data.newPr;
|
|
break;
|
|
case historyitem_AutoShapes_SetWorksheet:
|
|
this.worksheet = data.newPr;
|
|
break;
|
|
case historyitem_ShapeSetBDeleted:
|
|
this.bDeleted = data.newPr;
|
|
break;
|
|
case historyitem_ChartSpace_SetChart:
|
|
this.chart = data.newChart;
|
|
break;
|
|
case historyitem_ChartSpace_SetClrMapOvr:
|
|
this.clrMapOvr = data.newClrMapOvr;
|
|
break;
|
|
case historyitem_ChartSpace_SetDate1904:
|
|
this.date1904 = data.newDate1904;
|
|
break;
|
|
case historyitem_ChartSpace_SetExternalData:
|
|
this.externalData = data.newExternalData;
|
|
break;
|
|
case historyitem_ChartSpace_SetLang:
|
|
this.lang = data.newLang;
|
|
break;
|
|
case historyitem_ChartSpace_SetPivotSource:
|
|
this.pivotSource = data.newPivotSource;
|
|
break;
|
|
case historyitem_ChartSpace_SetPrintSettings:
|
|
this.printSettings = data.newPrintSettings;
|
|
break;
|
|
case historyitem_ChartSpace_SetProtection:
|
|
this.protection = data.newProtection;
|
|
break;
|
|
case historyitem_ChartSpace_SetRoundedCorners:
|
|
this.roundedCorners = data.newRoundedCorners;
|
|
break;
|
|
case historyitem_ChartSpace_SetSpPr:
|
|
this.spPr = data.newSpPr;
|
|
break;
|
|
case historyitem_ChartSpace_SetStyle:
|
|
this.style = data.newStyle;
|
|
break;
|
|
case historyitem_ChartSpace_SetTxPr:
|
|
this.txPr = data.newTxPr;
|
|
break;
|
|
case historyitem_ChartSpace_SetUserShapes:
|
|
this.userShapes = data.newUserShapes;
|
|
break;
|
|
case historyitem_ChartSpace_SetThemeOverride:
|
|
this.themeOverride = data.newPr;
|
|
break;
|
|
case historyitem_ChartSpace_SetGroup:
|
|
this.group = data.newPr;
|
|
break;
|
|
}
|
|
},
|
|
Save_Changes: function (data, w) {
|
|
w.WriteLong(data.Type);
|
|
switch (data.Type) {
|
|
case historyitem_AutoShapes_SetDrawingBaseCoors:
|
|
writeDouble(w, data.fromCol);
|
|
writeDouble(w, data.fromColOff);
|
|
writeDouble(w, data.fromRow);
|
|
writeDouble(w, data.fromRowOff);
|
|
writeDouble(w, data.toCol);
|
|
writeDouble(w, data.toColOff);
|
|
writeDouble(w, data.toRow);
|
|
writeDouble(w, data.toRowOff);
|
|
writeDouble(w, data.posX);
|
|
writeDouble(w, data.posY);
|
|
writeDouble(w, data.cx);
|
|
writeDouble(w, data.cy);
|
|
break;
|
|
case historyitem_AutoShapes_RemoveFromDrawingObjects:
|
|
break;
|
|
case historyitem_AutoShapes_AddToDrawingObjects:
|
|
var Pos = data.UseArray ? data.PosArray[0] : data.Pos;
|
|
writeLong(w, Pos);
|
|
break;
|
|
case historyitem_AutoShapes_SetWorksheet:
|
|
writeBool(w, isRealObject(data.newPr));
|
|
if (isRealObject(data.newPr)) {
|
|
writeString(w, data.newPr.getId());
|
|
}
|
|
break;
|
|
case historyitem_ChartSpace_SetParent:
|
|
writeObject(w, data.newPr);
|
|
break;
|
|
case historyitem_ShapeSetBDeleted:
|
|
writeBool(w, data.newPr);
|
|
break;
|
|
case historyitem_ChartSpace_SetChart:
|
|
writeObject(w, data.newChart);
|
|
break;
|
|
case historyitem_ChartSpace_SetClrMapOvr:
|
|
writeObject(w, data.newClrMapOvr);
|
|
break;
|
|
case historyitem_ChartSpace_SetDate1904:
|
|
writeBool(w, data.newDate1904);
|
|
break;
|
|
case historyitem_ChartSpace_SetExternalData:
|
|
writeObject(w, data.newExternalData);
|
|
break;
|
|
case historyitem_ChartSpace_SetLang:
|
|
writeString(w, data.newLang);
|
|
break;
|
|
case historyitem_ChartSpace_SetPivotSource:
|
|
writeObject(w, data.newPivotSource);
|
|
break;
|
|
case historyitem_ChartSpace_SetPrintSettings:
|
|
writeObject(w, data.newPrintSettings);
|
|
break;
|
|
case historyitem_ChartSpace_SetProtection:
|
|
writeObject(w, data.newProtection);
|
|
break;
|
|
case historyitem_ChartSpace_SetRoundedCorners:
|
|
writeBool(w, data.newRoundedCorners);
|
|
break;
|
|
case historyitem_ChartSpace_SetSpPr:
|
|
writeObject(w, data.newSpPr);
|
|
break;
|
|
case historyitem_ChartSpace_SetStyle:
|
|
writeLong(w, data.newStyle);
|
|
break;
|
|
case historyitem_ChartSpace_SetTxPr:
|
|
writeObject(w, data.newTxPr);
|
|
break;
|
|
case historyitem_ChartSpace_SetUserShapes:
|
|
writeString(w, data.newUserShapes);
|
|
break;
|
|
case historyitem_ChartSpace_SetThemeOverride:
|
|
writeObject(w, data.oldPr);
|
|
break;
|
|
case historyitem_ChartSpace_SetGroup:
|
|
writeObject(w, data.newPr);
|
|
break;
|
|
}
|
|
},
|
|
Load_Changes: function (r) {
|
|
var type = r.GetLong();
|
|
switch (type) {
|
|
case historyitem_AutoShapes_SetDrawingBaseCoors:
|
|
if (this.drawingBase) {
|
|
this.drawingBase.from.col = readDouble(r);
|
|
this.drawingBase.from.colOff = readDouble(r);
|
|
this.drawingBase.from.row = readDouble(r);
|
|
this.drawingBase.from.rowOff = readDouble(r);
|
|
this.drawingBase.to.col = readDouble(r);
|
|
this.drawingBase.to.colOff = readDouble(r);
|
|
this.drawingBase.to.row = readDouble(r);
|
|
this.drawingBase.to.rowOff = readDouble(r);
|
|
this.drawingBase.Pos.X = readDouble(r);
|
|
this.drawingBase.Pos.Y = readDouble(r);
|
|
this.drawingBase.ext.cx = readDouble(r);
|
|
this.drawingBase.ext.cy = readDouble(r);
|
|
}
|
|
break;
|
|
case historyitem_AutoShapes_RemoveFromDrawingObjects:
|
|
deleteDrawingBase(this.worksheet.Drawings, this.Get_Id());
|
|
break;
|
|
case historyitem_AutoShapes_AddToDrawingObjects:
|
|
var pos = readLong(r);
|
|
if (this.worksheet) {
|
|
pos = this.worksheet.contentChanges.Check(contentchanges_Add, pos);
|
|
}
|
|
addToDrawings(this.worksheet, this, pos);
|
|
break;
|
|
case historyitem_AutoShapes_SetWorksheet:
|
|
ReadWBModel(this, r);
|
|
break;
|
|
case historyitem_ChartSpace_SetParent:
|
|
this.parent = readObject(r);
|
|
break;
|
|
case historyitem_ShapeSetBDeleted:
|
|
this.bDeleted = readBool(r);
|
|
break;
|
|
case historyitem_ChartSpace_SetChart:
|
|
this.chart = readObject(r);
|
|
break;
|
|
case historyitem_ChartSpace_SetClrMapOvr:
|
|
this.clrMapOvr = readObject(r);
|
|
break;
|
|
case historyitem_ChartSpace_SetDate1904:
|
|
this.date1904 = readBool(r);
|
|
break;
|
|
case historyitem_ChartSpace_SetExternalData:
|
|
this.externalData = readObject(r);
|
|
break;
|
|
case historyitem_ChartSpace_SetLang:
|
|
this.lang = readString(r);
|
|
break;
|
|
case historyitem_ChartSpace_SetPivotSource:
|
|
this.pivotSource = readObject(r);
|
|
break;
|
|
case historyitem_ChartSpace_SetPrintSettings:
|
|
this.printSettings = readObject(r);
|
|
break;
|
|
case historyitem_ChartSpace_SetProtection:
|
|
this.protection = readObject(r);
|
|
break;
|
|
case historyitem_ChartSpace_SetRoundedCorners:
|
|
this.roundedCorners = readBool(r);
|
|
break;
|
|
case historyitem_ChartSpace_SetSpPr:
|
|
this.spPr = readObject(r);
|
|
break;
|
|
case historyitem_ChartSpace_SetStyle:
|
|
this.style = readLong(r);
|
|
this.handleUpdateStyle();
|
|
break;
|
|
case historyitem_ChartSpace_SetTxPr:
|
|
this.txPr = readObject(r);
|
|
break;
|
|
case historyitem_ChartSpace_SetUserShapes:
|
|
this.userShapes = readString(r);
|
|
break;
|
|
case historyitem_ChartSpace_SetThemeOverride:
|
|
this.themeOverride = readObject(r);
|
|
break;
|
|
case historyitem_ChartSpace_SetGroup:
|
|
this.group = readObject(r);
|
|
break;
|
|
}
|
|
},
|
|
Search: function (Str, Props, SearchEngine, Type) {
|
|
var titles = this.getAllTitles();
|
|
for (var i = 0; i < titles.length; ++i) {
|
|
titles[i].Search(Str, Props, SearchEngine, Type);
|
|
}
|
|
},
|
|
Search_GetId: function (bNext, bCurrent) {
|
|
var Current = -1;
|
|
var titles = this.getAllTitles();
|
|
var Len = titles.length;
|
|
var Id = null;
|
|
if (true === bCurrent) {
|
|
for (var i = 0; i < Len; ++i) {
|
|
if (titles[i] === this.selection.textSelection) {
|
|
Current = i;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (true === bNext) {
|
|
var Start = (-1 !== Current ? Current : 0);
|
|
for (var i = Start; i < Len; i++) {
|
|
if (titles[i].Search_GetId) {
|
|
Id = titles[i].Search_GetId(true, i === Current ? true : false);
|
|
if (null !== Id) {
|
|
return Id;
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
var Start = (-1 !== Current ? Current : Len - 1);
|
|
for (var i = Start; i >= 0; i--) {
|
|
if (titles[i].Search_GetId) {
|
|
Id = titles[i].Search_GetId(false, i === Current ? true : false);
|
|
if (null !== Id) {
|
|
return Id;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
};
|
|
function getPtsFromSeries(ser) {
|
|
if (ser) {
|
|
if (ser.val) {
|
|
if (ser.val.numRef && ser.val.numRef.numCache) {
|
|
return ser.val.numRef.numCache.pts;
|
|
} else {
|
|
if (ser.val.numLit) {
|
|
return ser.val.numLit.pts;
|
|
}
|
|
}
|
|
} else {
|
|
if (ser.yVal) {
|
|
if (ser.yVal.numRef && ser.yVal.numRef.numCache) {
|
|
return ser.yVal.numRef.numCache.pts;
|
|
} else {
|
|
if (ser.yVal.numLit) {
|
|
return ser.yVal.numLit.pts;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return [];
|
|
}
|
|
function getCatStringPointsFromSeries(ser) {
|
|
if (ser && ser.cat) {
|
|
if (ser.cat.strRef && ser.cat.strRef.strCache) {
|
|
return ser.cat.strRef.strCache;
|
|
} else {
|
|
if (ser.cat.strLit) {
|
|
return ser.cat.strLit;
|
|
}
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
function getMaxIdx(arr) {
|
|
var max_idx = 0;
|
|
for (var i = 0; i < arr.length; ++i) {
|
|
arr[i].idx > max_idx && (max_idx = arr[i].idx);
|
|
}
|
|
return max_idx + 1;
|
|
}
|
|
function getArrayFillsFromBase(arrBaseFills, needFillsCount) {
|
|
var ret = [];
|
|
var count_base = arrBaseFills.length;
|
|
var need_create = parseInt(needFillsCount / count_base) + 1;
|
|
for (var i = 0; i < need_create; i++) {
|
|
for (var j = 0; j < count_base; j++) {
|
|
var percent = (-70 + 140 * ((i + 1) / (need_create + 1))) / 100;
|
|
var color = CreateUniFillSolidFillWidthTintOrShade(arrBaseFills[j], 1 - percent);
|
|
ret.push(color);
|
|
}
|
|
}
|
|
ret.splice(needFillsCount, ret.length - needFillsCount);
|
|
return ret;
|
|
}
|
|
function GetTypeMarkerByIndex(index) {
|
|
return MARKER_SYMBOL_TYPE[index % 9];
|
|
}
|
|
function CreateUnfilFromRGB(r, g, b) {
|
|
var ret = new CUniFill();
|
|
ret.setFill(new CSolidFill());
|
|
ret.fill.setColor(new CUniColor());
|
|
ret.fill.color.setColor(new CRGBColor());
|
|
ret.fill.color.color.setColor(r, g, b);
|
|
return ret;
|
|
}
|
|
function CreateColorMapByIndex(index) {
|
|
var ret = [];
|
|
switch (index) {
|
|
case 1:
|
|
ret.push(CreateUnfilFromRGB(85, 85, 85));
|
|
ret.push(CreateUnfilFromRGB(158, 158, 158));
|
|
ret.push(CreateUnfilFromRGB(114, 114, 114));
|
|
ret.push(CreateUnfilFromRGB(70, 70, 70));
|
|
ret.push(CreateUnfilFromRGB(131, 131, 131));
|
|
ret.push(CreateUnfilFromRGB(193, 193, 193));
|
|
break;
|
|
case 2:
|
|
for (var i = 0; i < 6; ++i) {
|
|
ret.push(CreateUnifillSolidFillSchemeColorByIndex(i));
|
|
}
|
|
break;
|
|
default:
|
|
ret.push(CreateUnifillSolidFillSchemeColorByIndex(index - 3));
|
|
break;
|
|
}
|
|
return ret;
|
|
}
|
|
function CreateUniFillSolidFillWidthTintOrShade(unifill, effectVal) {
|
|
var ret = unifill.createDuplicate();
|
|
var unicolor = ret.fill.color;
|
|
if (effectVal !== 0) {
|
|
effectVal *= 100000;
|
|
if (!unicolor.Mods) {
|
|
unicolor.setMods(new CColorModifiers());
|
|
}
|
|
var mod = new CColorMod();
|
|
if (effectVal > 0) {
|
|
mod.setName("tint");
|
|
mod.setVal(effectVal);
|
|
} else {
|
|
mod.setName("shade");
|
|
mod.setVal(Math.abs(effectVal));
|
|
}
|
|
unicolor.Mods.addMod(mod);
|
|
}
|
|
return ret;
|
|
}
|
|
function CreateUnifillSolidFillSchemeColor(colorId, tintOrShade) {
|
|
var unifill = new CUniFill();
|
|
unifill.setFill(new CSolidFill());
|
|
unifill.fill.setColor(new CUniColor());
|
|
unifill.fill.color.setColor(new CSchemeColor());
|
|
unifill.fill.color.color.setId(colorId);
|
|
return CreateUniFillSolidFillWidthTintOrShade(unifill, tintOrShade);
|
|
}
|
|
function CreateNoFillLine() {
|
|
var ret = new CLn();
|
|
ret.setFill(CreateNoFillUniFill());
|
|
return ret;
|
|
}
|
|
function CreateNoFillUniFill() {
|
|
var ret = new CUniFill();
|
|
ret.setFill(new CNoFill());
|
|
return ret;
|
|
}
|
|
function CExternalData() {
|
|
this.autoUpdate = null;
|
|
this.id = null;
|
|
this.Id = g_oIdCounter.Get_NewId();
|
|
g_oTableId.Add(this, this.Id);
|
|
}
|
|
CExternalData.prototype = {
|
|
Get_Id: function () {
|
|
return this.Id;
|
|
},
|
|
Refresh_RecalcData: function () {},
|
|
getObjectType: function () {
|
|
return historyitem_type_ExternalData;
|
|
},
|
|
Write_ToBinary2: function (w) {
|
|
w.WriteLong(this.getObjectType());
|
|
w.WriteString2(this.Id);
|
|
},
|
|
Read_FromBinary2: function (r) {
|
|
this.Id = r.GetString2();
|
|
},
|
|
setAutoUpdate: function (pr) {
|
|
History.Add(this, {
|
|
Type: historyitem_ExternalData_SetAutoUpdate,
|
|
oldPr: this.autoUpdate,
|
|
newPr: pr
|
|
});
|
|
this.autoUpdate = pr;
|
|
},
|
|
setId: function (pr) {
|
|
History.Add(this, {
|
|
Type: historyitem_ExternalData_SetId,
|
|
oldPr: this.id,
|
|
newPr: pr
|
|
});
|
|
this.id = pr;
|
|
},
|
|
Undo: function (data) {
|
|
switch (data.Type) {
|
|
case historyitem_ExternalData_SetAutoUpdate:
|
|
this.autoUpdate = data.oldPr;
|
|
break;
|
|
case historyitem_ExternalData_SetId:
|
|
this.id = data.oldPr;
|
|
break;
|
|
}
|
|
},
|
|
Redo: function (data) {
|
|
switch (data.Type) {
|
|
case historyitem_ExternalData_SetAutoUpdate:
|
|
this.autoUpdate = data.newPr;
|
|
break;
|
|
case historyitem_ExternalData_SetId:
|
|
this.id = data.newPr;
|
|
break;
|
|
}
|
|
},
|
|
Save_Changes: function (data, w) {
|
|
w.WriteLong(data.Type);
|
|
switch (data.Type) {
|
|
case historyitem_ExternalData_SetAutoUpdate:
|
|
writeBool(data.newPr);
|
|
break;
|
|
case historyitem_ExternalData_SetId:
|
|
writeString(data.newPr);
|
|
break;
|
|
}
|
|
},
|
|
Load_Changes: function (r) {
|
|
var type = r.GetLong();
|
|
switch (type) {
|
|
case historyitem_ExternalData_SetAutoUpdate:
|
|
this.autoUpdate = readBool(r);
|
|
break;
|
|
case historyitem_ExternalData_SetId:
|
|
this.id = readString(r);
|
|
break;
|
|
}
|
|
}
|
|
};
|
|
function CPivotSource() {
|
|
this.fmtId = null;
|
|
this.name = null;
|
|
this.Id = g_oIdCounter.Get_NewId();
|
|
g_oTableId.Add(this, this.Id);
|
|
}
|
|
CPivotSource.prototype = {
|
|
Get_Id: function () {
|
|
return this.Id;
|
|
},
|
|
Refresh_RecalcData: function () {},
|
|
getObjectType: function () {
|
|
return historyitem_type_PivotSource;
|
|
},
|
|
Write_ToBinary2: function (w) {
|
|
w.WriteLong(this.getObjectType());
|
|
w.WriteString2(this.Id);
|
|
},
|
|
Read_FromBinary2: function (r) {
|
|
this.Id = r.GetString2();
|
|
},
|
|
setFmtId: function (pr) {
|
|
History.Add(this, {
|
|
Type: historyitem_PivotSource_SetFmtId,
|
|
oldPr: this.fmtId,
|
|
newPr: pr
|
|
});
|
|
this.fmtId = pr;
|
|
},
|
|
setName: function (pr) {
|
|
History.Add(this, {
|
|
Type: historyitem_PivotSource_SetName,
|
|
oldPr: this.name,
|
|
newPr: pr
|
|
});
|
|
this.name = pr;
|
|
},
|
|
Undo: function (data) {
|
|
switch (data.Type) {
|
|
case historyitem_PivotSource_SetFmtId:
|
|
this.fmtId = data.oldPr;
|
|
break;
|
|
case historyitem_PivotSource_SetName:
|
|
this.name = data.oldPr;
|
|
break;
|
|
}
|
|
},
|
|
Redo: function (data) {
|
|
switch (data.Type) {
|
|
case historyitem_PivotSource_SetFmtId:
|
|
this.fmtId = data.newPr;
|
|
break;
|
|
case historyitem_PivotSource_SetName:
|
|
this.name = data.newPr;
|
|
break;
|
|
}
|
|
},
|
|
createDuplicate: function () {
|
|
var copy = new CPivotSource();
|
|
if (isRealNumber(this.fmtId)) {
|
|
copy.setFmtId(this.fmtId);
|
|
}
|
|
if (typeof this.name === "string") {
|
|
copy.setName(this.name);
|
|
}
|
|
return copy;
|
|
},
|
|
Save_Changes: function (data, w) {
|
|
w.WriteLong(data.Type);
|
|
switch (data.Type) {
|
|
case historyitem_PivotSource_SetFmtId:
|
|
writeLong(w, data.newPr);
|
|
break;
|
|
case historyitem_PivotSource_SetName:
|
|
writeString(w, data.newPr);
|
|
break;
|
|
}
|
|
},
|
|
Load_Changes: function (r) {
|
|
var type = r.GetLong();
|
|
switch (type) {
|
|
case historyitem_PivotSource_SetFmtId:
|
|
this.fmtId = readLong(r);
|
|
break;
|
|
case historyitem_PivotSource_SetName:
|
|
this.name = readString(r);
|
|
break;
|
|
}
|
|
}
|
|
};
|
|
function CProtection() {
|
|
this.chartObject = null;
|
|
this.data = null;
|
|
this.formatting = null;
|
|
this.selection = null;
|
|
this.userInterface = null;
|
|
this.Id = g_oIdCounter.Get_NewId();
|
|
g_oTableId.Add(this, this.Id);
|
|
}
|
|
CProtection.prototype = {
|
|
Get_Id: function () {
|
|
return this.Id;
|
|
},
|
|
Refresh_RecalcData: function () {},
|
|
getObjectType: function () {
|
|
return historyitem_type_Protection;
|
|
},
|
|
Write_ToBinary2: function (w) {
|
|
w.WriteLong(this.getObjectType());
|
|
w.WriteString2(this.Id);
|
|
},
|
|
Read_FromBinary2: function (r) {
|
|
this.Id = r.GetString2();
|
|
},
|
|
setChartObject: function (pr) {
|
|
History.Add(this, {
|
|
Type: historyitem_Protection_SetChartObject,
|
|
newPr: pr,
|
|
oldPr: this.chartObject
|
|
});
|
|
this.chartObject = pr;
|
|
},
|
|
setData: function (pr) {
|
|
History.Add(this, {
|
|
Type: historyitem_Protection_SetData,
|
|
newPr: pr,
|
|
oldPr: this.data
|
|
});
|
|
this.data = pr;
|
|
},
|
|
setFormatting: function (pr) {
|
|
History.Add(this, {
|
|
Type: historyitem_Protection_SetFormatting,
|
|
newPr: pr,
|
|
oldPr: this.formatting
|
|
});
|
|
this.formatting = pr;
|
|
},
|
|
setSelection: function (pr) {
|
|
History.Add(this, {
|
|
Type: historyitem_Protection_SetSelection,
|
|
newPr: pr,
|
|
oldPr: this.selection
|
|
});
|
|
this.selection = pr;
|
|
},
|
|
setUserInterface: function (pr) {
|
|
History.Add(this, {
|
|
Type: historyitem_Protection_SetUserInterface,
|
|
newPr: pr,
|
|
oldPr: this.userInterface
|
|
});
|
|
this.userInterface = pr;
|
|
},
|
|
createDuplicate: function () {
|
|
var c = new CProtection();
|
|
c.setChartObject(this.chartObject);
|
|
c.setData(this.data);
|
|
c.setFormatting(this.formatting);
|
|
c.setSelection(this.selection);
|
|
c.setUserInterface(this.userInterface);
|
|
return c;
|
|
},
|
|
Undo: function (data) {
|
|
switch (data.Type) {
|
|
case historyitem_Protection_SetChartObject:
|
|
this.chartObject = data.oldPr;
|
|
break;
|
|
case historyitem_Protection_SetData:
|
|
this.data = data.oldPr;
|
|
break;
|
|
case historyitem_Protection_SetFormatting:
|
|
this.formatting = data.oldPr;
|
|
break;
|
|
case historyitem_Protection_SetSelection:
|
|
this.selection = data.oldPr;
|
|
break;
|
|
case historyitem_Protection_SetUserInterface:
|
|
this.userInterface = data.oldPr;
|
|
break;
|
|
}
|
|
},
|
|
Redo: function (data) {
|
|
switch (data.Type) {
|
|
case historyitem_Protection_SetChartObject:
|
|
this.chartObject = data.newPr;
|
|
break;
|
|
case historyitem_Protection_SetData:
|
|
this.data = data.oldPr;
|
|
break;
|
|
case historyitem_Protection_SetFormatting:
|
|
this.formatting = data.newPr;
|
|
break;
|
|
case historyitem_Protection_SetSelection:
|
|
this.selection = data.newPr;
|
|
break;
|
|
case historyitem_Protection_SetUserInterface:
|
|
this.userInterface = data.newPr;
|
|
break;
|
|
}
|
|
},
|
|
Save_Changes: function (data, w) {
|
|
w.WriteLong(data.Type);
|
|
switch (data.Type) {
|
|
case historyitem_Protection_SetChartObject:
|
|
case historyitem_Protection_SetData:
|
|
case historyitem_Protection_SetFormatting:
|
|
case historyitem_Protection_SetSelection:
|
|
case historyitem_Protection_SetUserInterface:
|
|
writeBool(w, data.newPr);
|
|
break;
|
|
}
|
|
},
|
|
Load_Changes: function (r) {
|
|
var type = r.GetLong();
|
|
switch (type) {
|
|
case historyitem_Protection_SetChartObject:
|
|
this.chartObject = readBool(r);
|
|
break;
|
|
case historyitem_Protection_SetData:
|
|
this.data = readBool(r);
|
|
break;
|
|
case historyitem_Protection_SetFormatting:
|
|
this.formatting = readBool(r);
|
|
break;
|
|
case historyitem_Protection_SetSelection:
|
|
this.selection = readBool(r);
|
|
break;
|
|
case historyitem_Protection_SetUserInterface:
|
|
this.userInterface = readBool(r);
|
|
break;
|
|
}
|
|
}
|
|
};
|
|
function CPrintSettings() {
|
|
this.headerFooter = null;
|
|
this.pageMargins = null;
|
|
this.pageSetup = null;
|
|
this.Id = g_oIdCounter.Get_NewId();
|
|
g_oTableId.Add(this, this.Id);
|
|
}
|
|
CPrintSettings.prototype = {
|
|
Get_Id: function () {
|
|
return this.Id;
|
|
},
|
|
createDuplicate: function () {
|
|
var oPS = new CPrintSettings();
|
|
if (this.headerFooter) {
|
|
oPS.headerFooter = this.headerFooter.createDuplicate();
|
|
}
|
|
if (this.pageMargins) {
|
|
oPS.pageMargins = this.pageMargins.createDuplicate();
|
|
}
|
|
if (this.pageSetup) {
|
|
oPS.pageSetup = this.pageSetup.createDuplicate();
|
|
}
|
|
return oPS;
|
|
},
|
|
Refresh_RecalcData: function () {},
|
|
getObjectType: function () {
|
|
return historyitem_type_PrintSettings;
|
|
},
|
|
Write_ToBinary2: function (w) {
|
|
w.WriteLong(this.getObjectType());
|
|
w.WriteString2(this.Id);
|
|
},
|
|
Read_FromBinary2: function (r) {
|
|
this.Id = r.GetString2();
|
|
},
|
|
setHeaderFooter: function (pr) {
|
|
History.Add(this, {
|
|
Type: historyitem_PrintSettingsSetHeaderFooter,
|
|
oldPr: this.headerFooter,
|
|
newPr: pr
|
|
});
|
|
this.headerFooter = pr;
|
|
},
|
|
setPageMargins: function (pr) {
|
|
History.Add(this, {
|
|
Type: historyitem_PrintSettingsSetPageMargins,
|
|
oldPr: this.pageMargins,
|
|
newPr: pr
|
|
});
|
|
this.pageMargins = pr;
|
|
},
|
|
setPageSetup: function (pr) {
|
|
History.Add(this, {
|
|
Type: historyitem_PrintSettingsSetPageSetup,
|
|
oldPr: this.pageSetup,
|
|
newPr: pr
|
|
});
|
|
this.pageSetup = pr;
|
|
},
|
|
Undo: function (data) {
|
|
switch (data.Type) {
|
|
case historyitem_PrintSettingsSetHeaderFooter:
|
|
this.headerFooter = data.oldPr;
|
|
break;
|
|
case historyitem_PrintSettingsSetPageMargins:
|
|
this.pageMargins = data.oldPr;
|
|
break;
|
|
case historyitem_PrintSettingsSetPageSetup:
|
|
this.pageSetup = data.oldPr;
|
|
break;
|
|
}
|
|
},
|
|
Redo: function (data) {
|
|
switch (data.Type) {
|
|
case historyitem_PrintSettingsSetHeaderFooter:
|
|
this.headerFooter = data.newPr;
|
|
break;
|
|
case historyitem_PrintSettingsSetPageMargins:
|
|
this.pageMargins = data.newPr;
|
|
break;
|
|
case historyitem_PrintSettingsSetPageSetup:
|
|
this.pageSetup = data.newPr;
|
|
break;
|
|
}
|
|
},
|
|
Save_Changes: function (data, w) {
|
|
w.WriteLong(data.Type);
|
|
switch (data.Type) {
|
|
case historyitem_PrintSettingsSetHeaderFooter:
|
|
case historyitem_PrintSettingsSetPageMargins:
|
|
case historyitem_PrintSettingsSetPageSetup:
|
|
writeObject(w, data.newPr);
|
|
break;
|
|
}
|
|
},
|
|
Load_Changes: function (r) {
|
|
var type = r.GetLong();
|
|
switch (type) {
|
|
case historyitem_PrintSettingsSetHeaderFooter:
|
|
this.headerFooter = readObject(r);
|
|
break;
|
|
case historyitem_PrintSettingsSetPageMargins:
|
|
this.pageMargins = readObject(r);
|
|
break;
|
|
case historyitem_PrintSettingsSetPageSetup:
|
|
this.pageSetup = readObject(r);
|
|
break;
|
|
}
|
|
}
|
|
};
|
|
function CHeaderFooterChart() {
|
|
this.alignWithMargins = null;
|
|
this.differentFirst = null;
|
|
this.differentOddEven = null;
|
|
this.evenFooter = null;
|
|
this.evenHeader = null;
|
|
this.firstFooter = null;
|
|
this.firstHeader = null;
|
|
this.oddFooter = null;
|
|
this.oddHeader = null;
|
|
this.Id = g_oIdCounter.Get_NewId();
|
|
g_oTableId.Add(this, this.Id);
|
|
}
|
|
CHeaderFooterChart.prototype = {
|
|
Get_Id: function () {
|
|
return this.Id;
|
|
},
|
|
createDuplicate: function () {
|
|
var oHFC = new CHeaderFooterChart();
|
|
oHFC.alignWithMargins = this.alignWithMargins;
|
|
oHFC.differentFirst = this.differentFirst;
|
|
oHFC.differentOddEven = this.differentOddEven;
|
|
if (this.evenFooter) {
|
|
oHFC.evenFooter = this.evenFooter.createDuplicate();
|
|
}
|
|
if (this.evenHeader) {
|
|
oHFC.evenHeader = this.evenHeader.createDuplicate();
|
|
}
|
|
if (this.firstFooter) {
|
|
oHFC.firstFooter = this.firstFooter.createDuplicate();
|
|
}
|
|
if (this.firstHeader) {
|
|
oHFC.firstHeader = this.firstHeader.createDuplicate();
|
|
}
|
|
if (this.oddFooter) {
|
|
oHFC.oddFooter = this.oddFooter.createDuplicate();
|
|
}
|
|
if (this.oddHeader) {
|
|
oHFC.oddHeader = this.oddHeader.createDuplicate();
|
|
}
|
|
return oHFC;
|
|
},
|
|
Refresh_RecalcData: function () {},
|
|
Write_ToBinary2: function (w) {
|
|
w.WriteLong(this.getObjectType());
|
|
w.WriteString2(this.Id);
|
|
},
|
|
Read_FromBinary2: function (r) {
|
|
this.Id = r.GetString2();
|
|
},
|
|
getObjectType: function () {
|
|
return historyitem_type_HeaderFooterChart;
|
|
},
|
|
setAlignWithMargins: function (pr) {
|
|
History.Add(this, {
|
|
Type: historyitem_HeaderFooterChartSetAlignWithMargins,
|
|
oldPr: this.alignWithMargins,
|
|
newPr: pr
|
|
});
|
|
this.alignWithMargins = pr;
|
|
},
|
|
setDifferentFirst: function (pr) {
|
|
History.Add(this, {
|
|
Type: historyitem_HeaderFooterChartSetDifferentFirst,
|
|
oldPr: this.differentFirst,
|
|
newPr: pr
|
|
});
|
|
this.differentFirst = pr;
|
|
},
|
|
setDifferentOddEven: function (pr) {
|
|
History.Add(this, {
|
|
Type: historyitem_HeaderFooterChartSetDifferentOddEven,
|
|
oldPr: this.differentOddEven,
|
|
newPr: pr
|
|
});
|
|
this.differentOddEven = pr;
|
|
},
|
|
setEvenFooter: function (pr) {
|
|
History.Add(this, {
|
|
Type: historyitem_HeaderFooterChartSetEvenFooter,
|
|
oldPr: this.evenFooter,
|
|
newPr: pr
|
|
});
|
|
this.evenFooter = pr;
|
|
},
|
|
setEvenHeader: function (pr) {
|
|
History.Add(this, {
|
|
Type: historyitem_HeaderFooterChartSetEvenHeader,
|
|
oldPr: this.evenHeader,
|
|
newPr: pr
|
|
});
|
|
this.evenHeader = pr;
|
|
},
|
|
setFirstFooter: function (pr) {
|
|
History.Add(this, {
|
|
Type: historyitem_HeaderFooterChartSetFirstFooter,
|
|
oldPr: this.firstFooter,
|
|
newPr: pr
|
|
});
|
|
this.firstFooter = pr;
|
|
},
|
|
setFirstHeader: function (pr) {
|
|
History.Add(this, {
|
|
Type: historyitem_HeaderFooterChartSetFirstHeader,
|
|
oldPr: this.firstHeader,
|
|
newPr: pr
|
|
});
|
|
this.firstHeader = pr;
|
|
},
|
|
setOddFooter: function (pr) {
|
|
History.Add(this, {
|
|
Type: historyitem_HeaderFooterChartSetOddFooter,
|
|
oldPr: this.oddFooter,
|
|
newPr: pr
|
|
});
|
|
this.oddFooter = pr;
|
|
},
|
|
setOddHeader: function (pr) {
|
|
History.Add(this, {
|
|
Type: historyitem_HeaderFooterChartSetOddHeader,
|
|
oldPr: this.oddHeader,
|
|
newPr: pr
|
|
});
|
|
this.oddHeader = pr;
|
|
},
|
|
Undo: function (data) {
|
|
switch (data.Type) {
|
|
case historyitem_HeaderFooterChartSetAlignWithMargins:
|
|
this.alignWithMargins = data.oldPr;
|
|
break;
|
|
case historyitem_HeaderFooterChartSetDifferentFirst:
|
|
this.differentFirst = data.oldPr;
|
|
break;
|
|
case historyitem_HeaderFooterChartSetDifferentOddEven:
|
|
this.differentOddEven = data.oldPr;
|
|
break;
|
|
case historyitem_HeaderFooterChartSetEvenFooter:
|
|
this.evenFooter = data.oldPr;
|
|
break;
|
|
case historyitem_HeaderFooterChartSetEvenHeader:
|
|
this.evenHeader = data.oldPr;
|
|
break;
|
|
case historyitem_HeaderFooterChartSetFirstFooter:
|
|
this.firstFooter = data.oldPr;
|
|
break;
|
|
case historyitem_HeaderFooterChartSetFirstHeader:
|
|
this.firstHeader = data.oldPr;
|
|
break;
|
|
case historyitem_HeaderFooterChartSetOddFooter:
|
|
this.oddFooter = data.oldPr;
|
|
break;
|
|
case historyitem_HeaderFooterChartSetOddHeader:
|
|
this.oddHeader = data.oldPr;
|
|
break;
|
|
}
|
|
},
|
|
Redo: function (data) {
|
|
switch (data.Type) {
|
|
case historyitem_HeaderFooterChartSetAlignWithMargins:
|
|
this.alignWithMargins = data.newPr;
|
|
break;
|
|
case historyitem_HeaderFooterChartSetDifferentFirst:
|
|
this.differentFirst = data.newPr;
|
|
break;
|
|
case historyitem_HeaderFooterChartSetDifferentOddEven:
|
|
this.differentOddEven = data.newPr;
|
|
break;
|
|
case historyitem_HeaderFooterChartSetEvenFooter:
|
|
this.evenFooter = data.newPr;
|
|
break;
|
|
case historyitem_HeaderFooterChartSetEvenHeader:
|
|
this.evenHeader = data.newPr;
|
|
break;
|
|
case historyitem_HeaderFooterChartSetFirstFooter:
|
|
this.firstFooter = data.newPr;
|
|
break;
|
|
case historyitem_HeaderFooterChartSetFirstHeader:
|
|
this.firstHeader = data.newPr;
|
|
break;
|
|
case historyitem_HeaderFooterChartSetOddFooter:
|
|
this.oddFooter = data.newPr;
|
|
break;
|
|
case historyitem_HeaderFooterChartSetOddHeader:
|
|
this.oddHeader = data.newPr;
|
|
break;
|
|
}
|
|
},
|
|
Save_Changes: function (data, w) {
|
|
w.WriteLong(data.Type);
|
|
switch (data.Type) {
|
|
case historyitem_HeaderFooterChartSetAlignWithMargins:
|
|
case historyitem_HeaderFooterChartSetDifferentFirst:
|
|
case historyitem_HeaderFooterChartSetDifferentOddEven:
|
|
writeBool(w, data.newPr);
|
|
break;
|
|
case historyitem_HeaderFooterChartSetEvenFooter:
|
|
case historyitem_HeaderFooterChartSetEvenHeader:
|
|
case historyitem_HeaderFooterChartSetFirstFooter:
|
|
case historyitem_HeaderFooterChartSetFirstHeader:
|
|
case historyitem_HeaderFooterChartSetOddFooter:
|
|
case historyitem_HeaderFooterChartSetOddHeader:
|
|
writeString(w, data.newPr);
|
|
break;
|
|
}
|
|
},
|
|
Load_Changes: function (r) {
|
|
var type = r.GetLong();
|
|
switch (type) {
|
|
case historyitem_HeaderFooterChartSetAlignWithMargins:
|
|
this.alignWithMargins = readBool(r);
|
|
break;
|
|
case historyitem_HeaderFooterChartSetDifferentFirst:
|
|
this.differentFirst = readBool(r);
|
|
break;
|
|
case historyitem_HeaderFooterChartSetDifferentOddEven:
|
|
this.differentOddEven = readBool(r);
|
|
break;
|
|
case historyitem_HeaderFooterChartSetEvenFooter:
|
|
this.evenFooter = readString(r);
|
|
break;
|
|
case historyitem_HeaderFooterChartSetEvenHeader:
|
|
this.evenHeader = readString(r);
|
|
break;
|
|
case historyitem_HeaderFooterChartSetFirstFooter:
|
|
this.firstFooter = readString(r);
|
|
break;
|
|
case historyitem_HeaderFooterChartSetFirstHeader:
|
|
this.firstHeader = readString(r);
|
|
break;
|
|
case historyitem_HeaderFooterChartSetOddFooter:
|
|
this.oddFooter = readString(r);
|
|
break;
|
|
case historyitem_HeaderFooterChartSetOddHeader:
|
|
this.oddHeader = readString(r);
|
|
break;
|
|
}
|
|
}
|
|
};
|
|
function CPageMarginsChart() {
|
|
this.b = null;
|
|
this.footer = null;
|
|
this.header = null;
|
|
this.l = null;
|
|
this.r = null;
|
|
this.t = null;
|
|
this.Id = g_oIdCounter.Get_NewId();
|
|
g_oTableId.Add(this, this.Id);
|
|
}
|
|
CPageMarginsChart.prototype = {
|
|
Get_Id: function () {
|
|
return this.Id;
|
|
},
|
|
createDuplicate: function () {
|
|
var oPMC = new CPageMarginsChart();
|
|
oPMC.b = this.b;
|
|
oPMC.footer = this.footer;
|
|
oPMC.header = this.header;
|
|
oPMC.l = this.l;
|
|
oPMC.r = this.r;
|
|
oPMC.t = this.t;
|
|
return oPMC;
|
|
},
|
|
Refresh_RecalcData: function () {},
|
|
Write_ToBinary2: function (w) {
|
|
w.WriteLong(this.getObjectType());
|
|
w.WriteString2(this.Id);
|
|
},
|
|
Read_FromBinary2: function (r) {
|
|
this.Id = r.GetString2();
|
|
},
|
|
getObjectType: function () {
|
|
return historyitem_type_PageMarginsChart;
|
|
},
|
|
setB: function (pr) {
|
|
History.Add(this, {
|
|
Type: historyitem_PageMarginsSetB,
|
|
oldPr: this.b,
|
|
newPr: pr
|
|
});
|
|
this.b = pr;
|
|
},
|
|
setFooter: function (pr) {
|
|
History.Add(this, {
|
|
Type: historyitem_PageMarginsSetFooter,
|
|
oldPr: this.footer,
|
|
newPr: pr
|
|
});
|
|
this.footer = pr;
|
|
},
|
|
setHeader: function (pr) {
|
|
History.Add(this, {
|
|
Type: historyitem_PageMarginsSetHeader,
|
|
oldPr: this.header,
|
|
newPr: pr
|
|
});
|
|
this.header = pr;
|
|
},
|
|
setL: function (pr) {
|
|
History.Add(this, {
|
|
Type: historyitem_PageMarginsSetL,
|
|
oldPr: this.l,
|
|
newPr: pr
|
|
});
|
|
this.l = pr;
|
|
},
|
|
setR: function (pr) {
|
|
History.Add(this, {
|
|
Type: historyitem_PageMarginsSetR,
|
|
oldPr: this.r,
|
|
newPr: pr
|
|
});
|
|
this.r = pr;
|
|
},
|
|
setT: function (pr) {
|
|
History.Add(this, {
|
|
Type: historyitem_PageMarginsSetT,
|
|
oldPr: this.t,
|
|
newPr: pr
|
|
});
|
|
this.t = pr;
|
|
},
|
|
Undo: function (data) {
|
|
switch (data.Type) {
|
|
case historyitem_PageMarginsSetB:
|
|
this.b = data.oldPr;
|
|
break;
|
|
case historyitem_PageMarginsSetFooter:
|
|
this.footer = data.oldPr;
|
|
break;
|
|
case historyitem_PageMarginsSetHeader:
|
|
this.header = data.oldPr;
|
|
break;
|
|
case historyitem_PageMarginsSetL:
|
|
this.l = data.oldPr;
|
|
break;
|
|
case historyitem_PageMarginsSetR:
|
|
this.r = data.oldPr;
|
|
break;
|
|
case historyitem_PageMarginsSetT:
|
|
this.t = data.oldPr;
|
|
break;
|
|
}
|
|
},
|
|
Redo: function (data) {
|
|
switch (data.Type) {
|
|
case historyitem_PageMarginsSetB:
|
|
this.b = data.newPr;
|
|
break;
|
|
case historyitem_PageMarginsSetFooter:
|
|
this.footer = data.newPr;
|
|
break;
|
|
case historyitem_PageMarginsSetHeader:
|
|
this.header = data.newPr;
|
|
break;
|
|
case historyitem_PageMarginsSetL:
|
|
this.l = data.newPr;
|
|
break;
|
|
case historyitem_PageMarginsSetR:
|
|
this.r = data.newPr;
|
|
break;
|
|
case historyitem_PageMarginsSetT:
|
|
this.t = data.newPr;
|
|
break;
|
|
}
|
|
},
|
|
Save_Changes: function (data, w) {
|
|
w.WriteLong(data.Type);
|
|
switch (data.Type) {
|
|
case historyitem_PageMarginsSetB:
|
|
case historyitem_PageMarginsSetFooter:
|
|
case historyitem_PageMarginsSetHeader:
|
|
case historyitem_PageMarginsSetL:
|
|
case historyitem_PageMarginsSetR:
|
|
case historyitem_PageMarginsSetT:
|
|
writeDouble(w, data.newPr);
|
|
break;
|
|
}
|
|
},
|
|
Load_Changes: function (r) {
|
|
var type = r.GetLong();
|
|
switch (type) {
|
|
case historyitem_PageMarginsSetB:
|
|
this.b = readDouble(r);
|
|
break;
|
|
case historyitem_PageMarginsSetFooter:
|
|
this.footer = readDouble(r);
|
|
break;
|
|
case historyitem_PageMarginsSetHeader:
|
|
this.header = readDouble(r);
|
|
break;
|
|
case historyitem_PageMarginsSetL:
|
|
this.l = readDouble(r);
|
|
break;
|
|
case historyitem_PageMarginsSetR:
|
|
this.r = readDouble(r);
|
|
break;
|
|
case historyitem_PageMarginsSetT:
|
|
this.t = readDouble(r);
|
|
break;
|
|
}
|
|
}
|
|
};
|
|
var PAGE_SETUP_ORIENTATION_DEFAULT = 0;
|
|
var PAGE_SETUP_ORIENTATION_LANDSCAPE = 1;
|
|
var PAGE_SETUP_ORIENTATION_PORTRAIT = 2;
|
|
function CPageSetup() {
|
|
this.blackAndWhite = null;
|
|
this.copies = null;
|
|
this.draft = null;
|
|
this.firstPageNumber = null;
|
|
this.horizontalDpi = null;
|
|
this.orientation = null;
|
|
this.paperHeight = null;
|
|
this.paperSize = null;
|
|
this.paperWidth = null;
|
|
this.useFirstPageNumb = null;
|
|
this.verticalDpi = null;
|
|
this.Id = g_oIdCounter.Get_NewId();
|
|
g_oTableId.Add(this, this.Id);
|
|
}
|
|
CPageSetup.prototype = {
|
|
Get_Id: function () {
|
|
return this.Id;
|
|
},
|
|
createDuplicate: function () {
|
|
var oPS = new CPageSetup();
|
|
oPS.blackAndWhite = this.blackAndWhite;
|
|
oPS.copies = this.copies;
|
|
oPS.draft = this.draft;
|
|
oPS.firstPageNumber = this.firstPageNumber;
|
|
oPS.horizontalDpi = this.horizontalDpi;
|
|
oPS.orientation = this.orientation;
|
|
oPS.paperHeight = this.paperHeight;
|
|
oPS.paperSize = this.paperSize;
|
|
oPS.paperWidth = this.paperWidth;
|
|
oPS.useFirstPageNumb = this.useFirstPageNumb;
|
|
oPS.verticalDpi = this.verticalDpi;
|
|
return oPS;
|
|
},
|
|
Refresh_RecalcData: function () {},
|
|
Write_ToBinary2: function (w) {
|
|
w.WriteLong(this.getObjectType());
|
|
w.WriteString2(this.Id);
|
|
},
|
|
Read_FromBinary2: function (r) {
|
|
this.Id = r.GetString2();
|
|
},
|
|
getObjectType: function () {
|
|
return historyitem_type_PageSetup;
|
|
},
|
|
setBlackAndWhite: function (pr) {
|
|
History.Add(this, {
|
|
Type: historyitem_PageSetupSetBlackAndWhite,
|
|
oldPr: this.blackAndWhite,
|
|
newPr: pr
|
|
});
|
|
this.blackAndWhite = pr;
|
|
},
|
|
setCopies: function (pr) {
|
|
History.Add(this, {
|
|
Type: historyitem_PageSetupSetCopies,
|
|
oldPr: this.copies,
|
|
newPr: pr
|
|
});
|
|
this.copies = pr;
|
|
},
|
|
setDraft: function (pr) {
|
|
History.Add(this, {
|
|
Type: historyitem_PageSetupSetDraft,
|
|
oldPr: this.draft,
|
|
newPr: pr
|
|
});
|
|
this.draft = pr;
|
|
},
|
|
setFirstPageNumber: function (pr) {
|
|
History.Add(this, {
|
|
Type: historyitem_PageSetupSetFirstPageNumber,
|
|
oldPr: this.firstPageNumber,
|
|
newPr: pr
|
|
});
|
|
this.firstPageNumber = pr;
|
|
},
|
|
setHorizontalDpi: function (pr) {
|
|
History.Add(this, {
|
|
Type: historyitem_PageSetupSetHorizontalDpi,
|
|
oldPr: this.horizontalDpi,
|
|
newPr: pr
|
|
});
|
|
this.horizontalDpi = pr;
|
|
},
|
|
setOrientation: function (pr) {
|
|
History.Add(this, {
|
|
Type: historyitem_PageSetupSetOrientation,
|
|
oldPr: this.orientation,
|
|
newPr: pr
|
|
});
|
|
this.orientation = pr;
|
|
},
|
|
setPaperHeight: function (pr) {
|
|
History.Add(this, {
|
|
Type: historyitem_PageSetupSetPaperHeight,
|
|
oldPr: this.paperHeight,
|
|
newPr: pr
|
|
});
|
|
this.paperHeight = pr;
|
|
},
|
|
setPaperSize: function (pr) {
|
|
History.Add(this, {
|
|
Type: historyitem_PageSetupSetPaperSize,
|
|
oldPr: this.paperSize,
|
|
newPr: pr
|
|
});
|
|
this.paperSize = pr;
|
|
},
|
|
setPaperWidth: function (pr) {
|
|
History.Add(this, {
|
|
Type: historyitem_PageSetupSetPaperWidth,
|
|
oldPr: this.paperWidth,
|
|
newPr: pr
|
|
});
|
|
this.paperWidth = pr;
|
|
},
|
|
setUseFirstPageNumb: function (pr) {
|
|
History.Add(this, {
|
|
Type: historyitem_PageSetupSetUseFirstPageNumb,
|
|
oldPr: this.useFirstPageNumb,
|
|
newPr: pr
|
|
});
|
|
this.useFirstPageNumb = pr;
|
|
},
|
|
setVerticalDpi: function (pr) {
|
|
History.Add(this, {
|
|
Type: historyitem_PageSetupSetVerticalDpi,
|
|
oldPr: this.verticalDpi,
|
|
newPr: pr
|
|
});
|
|
this.verticalDpi = pr;
|
|
},
|
|
Undo: function (data) {
|
|
switch (data.Type) {
|
|
case historyitem_PageSetupSetBlackAndWhite:
|
|
this.blackAndWhite = data.oldPr;
|
|
break;
|
|
case historyitem_PageSetupSetCopies:
|
|
this.copies = data.oldPr;
|
|
break;
|
|
case historyitem_PageSetupSetDraft:
|
|
this.draft = data.oldPr;
|
|
break;
|
|
case historyitem_PageSetupSetFirstPageNumber:
|
|
this.firstPageNumber = data.oldPr;
|
|
break;
|
|
case historyitem_PageSetupSetHorizontalDpi:
|
|
this.horizontalDpi = data.oldPr;
|
|
break;
|
|
case historyitem_PageSetupSetOrientation:
|
|
this.orientation = data.oldPr;
|
|
break;
|
|
case historyitem_PageSetupSetPaperHeight:
|
|
this.paperHeight = data.oldPr;
|
|
break;
|
|
case historyitem_PageSetupSetPaperSize:
|
|
this.paperSize = data.oldPr;
|
|
break;
|
|
case historyitem_PageSetupSetPaperWidth:
|
|
this.paperWidth = data.oldPr;
|
|
break;
|
|
case historyitem_PageSetupSetUseFirstPageNumb:
|
|
this.useFirstPageNumb = data.oldPr;
|
|
break;
|
|
case historyitem_PageSetupSetVerticalDpi:
|
|
this.verticalDpi = data.oldPr;
|
|
break;
|
|
}
|
|
},
|
|
Redo: function (data) {
|
|
switch (data.Type) {
|
|
case historyitem_PageSetupSetBlackAndWhite:
|
|
this.blackAndWhite = data.newPr;
|
|
break;
|
|
case historyitem_PageSetupSetCopies:
|
|
this.copies = data.newPr;
|
|
break;
|
|
case historyitem_PageSetupSetDraft:
|
|
this.draft = data.newPr;
|
|
break;
|
|
case historyitem_PageSetupSetFirstPageNumber:
|
|
this.firstPageNumber = data.newPr;
|
|
break;
|
|
case historyitem_PageSetupSetHorizontalDpi:
|
|
this.horizontalDpi = data.newPr;
|
|
break;
|
|
case historyitem_PageSetupSetOrientation:
|
|
this.orientation = data.newPr;
|
|
break;
|
|
case historyitem_PageSetupSetPaperHeight:
|
|
this.paperHeight = data.newPr;
|
|
break;
|
|
case historyitem_PageSetupSetPaperSize:
|
|
this.paperSize = data.newPr;
|
|
break;
|
|
case historyitem_PageSetupSetPaperWidth:
|
|
this.paperWidth = data.newPr;
|
|
break;
|
|
case historyitem_PageSetupSetUseFirstPageNumb:
|
|
this.useFirstPageNumb = data.newPr;
|
|
break;
|
|
case historyitem_PageSetupSetVerticalDpi:
|
|
this.verticalDpi = data.newPr;
|
|
break;
|
|
}
|
|
},
|
|
Save_Changes: function (data, w) {
|
|
w.WriteLong(data.Type);
|
|
switch (data.Type) {
|
|
case historyitem_PageSetupSetBlackAndWhite:
|
|
case historyitem_PageSetupSetDraft:
|
|
case historyitem_PageSetupSetUseFirstPageNumb:
|
|
writeBool(w, data.newPr);
|
|
break;
|
|
case historyitem_PageSetupSetCopies:
|
|
case historyitem_PageSetupSetFirstPageNumber:
|
|
case historyitem_PageSetupSetHorizontalDpi:
|
|
case historyitem_PageSetupSetOrientation:
|
|
case historyitem_PageSetupSetPaperSize:
|
|
case historyitem_PageSetupSetVerticalDpi:
|
|
writeLong(w, data.newPr);
|
|
break;
|
|
case historyitem_PageSetupSetPaperHeight:
|
|
case historyitem_PageSetupSetPaperWidth:
|
|
writeDouble(w, data.newPr);
|
|
break;
|
|
}
|
|
},
|
|
Load_Changes: function (r) {
|
|
var type = r.GetLong();
|
|
switch (type) {
|
|
case historyitem_PageSetupSetBlackAndWhite:
|
|
this.blackAndWhite = readBool(r);
|
|
break;
|
|
case historyitem_PageSetupSetCopies:
|
|
this.copies = readLong(r);
|
|
break;
|
|
case historyitem_PageSetupSetDraft:
|
|
this.draft = readBool(r);
|
|
break;
|
|
case historyitem_PageSetupSetFirstPageNumber:
|
|
this.firstPageNumber = readLong(r);
|
|
break;
|
|
case historyitem_PageSetupSetHorizontalDpi:
|
|
this.horizontalDpi = readLong(r);
|
|
break;
|
|
case historyitem_PageSetupSetOrientation:
|
|
this.orientation = readLong(r);
|
|
break;
|
|
case historyitem_PageSetupSetPaperHeight:
|
|
this.paperHeight = readDouble(r);
|
|
break;
|
|
case historyitem_PageSetupSetPaperSize:
|
|
this.paperSize = readLong(r);
|
|
break;
|
|
case historyitem_PageSetupSetPaperWidth:
|
|
this.paperWidth = readDouble(r);
|
|
break;
|
|
case historyitem_PageSetupSetUseFirstPageNumb:
|
|
this.useFirstPageNumb = readBool(r);
|
|
break;
|
|
case historyitem_PageSetupSetVerticalDpi:
|
|
this.verticalDpi = readLong(r);
|
|
break;
|
|
}
|
|
}
|
|
};
|
|
function CreateLineChart(chartSeries, type, bUseCache) {
|
|
var asc_series = chartSeries.series;
|
|
var chart_space = new CChartSpace();
|
|
chart_space.setDate1904(false);
|
|
chart_space.setLang("en-US");
|
|
chart_space.setRoundedCorners(false);
|
|
chart_space.setChart(new CChart());
|
|
chart_space.setPrintSettings(new CPrintSettings());
|
|
var chart = chart_space.chart;
|
|
chart.setAutoTitleDeleted(false);
|
|
chart.setPlotArea(new CPlotArea());
|
|
chart.setLegend(new CLegend());
|
|
chart.setPlotVisOnly(true);
|
|
var disp_blanks_as;
|
|
if (type === GROUPING_STANDARD) {
|
|
disp_blanks_as = DISP_BLANKS_AS_GAP;
|
|
} else {
|
|
disp_blanks_as = DISP_BLANKS_AS_ZERO;
|
|
}
|
|
chart.setDispBlanksAs(disp_blanks_as);
|
|
chart.setShowDLblsOverMax(false);
|
|
var plot_area = chart.plotArea;
|
|
plot_area.setLayout(new CLayout());
|
|
plot_area.addChart(new CLineChart());
|
|
var cat_ax = new CCatAx();
|
|
var val_ax = new CValAx();
|
|
cat_ax.setAxId(++GLOBAL_AX_ID_COUNTER);
|
|
val_ax.setAxId(++GLOBAL_AX_ID_COUNTER);
|
|
cat_ax.setCrossAx(val_ax);
|
|
val_ax.setCrossAx(cat_ax);
|
|
plot_area.addAxis(cat_ax);
|
|
plot_area.addAxis(val_ax);
|
|
var line_chart = plot_area.charts[0];
|
|
line_chart.setGrouping(type);
|
|
line_chart.setVaryColors(false);
|
|
line_chart.setMarker(true);
|
|
line_chart.setSmooth(false);
|
|
line_chart.addAxId(cat_ax);
|
|
line_chart.addAxId(val_ax);
|
|
plot_area.valAx.setCrosses(2);
|
|
var parsedHeaders = chartSeries.parsedHeaders;
|
|
for (var i = 0; i < asc_series.length; ++i) {
|
|
var series = new CLineSeries();
|
|
series.setIdx(i);
|
|
series.setOrder(i);
|
|
series.setMarker(new CMarker());
|
|
series.marker.setSymbol(SYMBOL_NONE);
|
|
series.setSmooth(false);
|
|
series.setVal(new CYVal());
|
|
var val = series.val;
|
|
val.setNumRef(new CNumRef());
|
|
var num_ref = val.numRef;
|
|
num_ref.setF(asc_series[i].Val.Formula);
|
|
if (bUseCache) {
|
|
num_ref.setNumCache(new CNumLit());
|
|
var num_cache = num_ref.numCache;
|
|
num_cache.setPtCount(asc_series[i].Val.NumCache.length);
|
|
for (var j = 0; j < asc_series[i].Val.NumCache.length; ++j) {
|
|
var pt = new CNumericPoint();
|
|
pt.setIdx(j);
|
|
pt.setFormatCode(asc_series[i].Val.NumCache[j].numFormatStr);
|
|
pt.setVal(asc_series[i].Val.NumCache[j].val);
|
|
num_cache.addPt(pt);
|
|
}
|
|
}
|
|
if (parsedHeaders.bTop) {
|
|
series.setCat(new CCat());
|
|
var cat = series.cat;
|
|
cat.setStrRef(new CStrRef());
|
|
var str_ref = cat.strRef;
|
|
str_ref.setF(asc_series[i].Cat.Formula);
|
|
if (bUseCache) {
|
|
str_ref.setStrCache(new CStrCache());
|
|
var str_cache = str_ref.strCache;
|
|
var cat_num_cache = asc_series[i].Cat.NumCache;
|
|
str_cache.setPtCount(cat_num_cache.length);
|
|
for (var j = 0; j < cat_num_cache.length; ++j) {
|
|
var string_pt = new CStringPoint();
|
|
string_pt.setIdx(j);
|
|
string_pt.setVal(cat_num_cache[j].val);
|
|
str_cache.addPt(string_pt);
|
|
}
|
|
}
|
|
}
|
|
if (parsedHeaders.bLeft && asc_series[i].TxCache && typeof asc_series[i].TxCache.Formula === "string" && asc_series[i].TxCache.Formula.length > 0) {
|
|
series.setTx(new CTx());
|
|
var tx = series.tx;
|
|
tx.setStrRef(new CStrRef());
|
|
var str_ref = tx.strRef;
|
|
str_ref.setF(asc_series[i].TxCache.Formula);
|
|
if (bUseCache) {
|
|
str_ref.setStrCache(new CStrCache());
|
|
var str_cache = str_ref.strCache;
|
|
str_cache.setPtCount(1);
|
|
str_cache.addPt(new CStringPoint());
|
|
var pt = str_cache.pt[0];
|
|
pt.setIdx(0);
|
|
pt.setVal(asc_series[i].TxCache.Tx);
|
|
}
|
|
}
|
|
line_chart.addSer(series);
|
|
}
|
|
cat_ax.setScaling(new CScaling());
|
|
cat_ax.setDelete(false);
|
|
cat_ax.setAxPos(AX_POS_B);
|
|
cat_ax.setMajorTickMark(TICK_MARK_OUT);
|
|
cat_ax.setMinorTickMark(TICK_MARK_OUT);
|
|
cat_ax.setTickLblPos(TICK_LABEL_POSITION_NEXT_TO);
|
|
cat_ax.setCrossAx(plot_area.valAx);
|
|
cat_ax.setCrosses(CROSSES_AUTO_ZERO);
|
|
cat_ax.setAuto(true);
|
|
cat_ax.setLblAlgn(LBL_ALG_CTR);
|
|
cat_ax.setLblOffset(100);
|
|
cat_ax.setNoMultiLvlLbl(false);
|
|
var scaling = cat_ax.scaling;
|
|
scaling.setOrientation(ORIENTATION_MIN_MAX);
|
|
val_ax.setScaling(new CScaling());
|
|
val_ax.setDelete(false);
|
|
val_ax.setAxPos(AX_POS_L);
|
|
val_ax.setMajorGridlines(new CSpPr());
|
|
val_ax.setNumFmt(new CNumFmt());
|
|
val_ax.setMajorTickMark(TICK_MARK_OUT);
|
|
val_ax.setMinorTickMark(TICK_MARK_NONE);
|
|
val_ax.setTickLblPos(TICK_LABEL_POSITION_NEXT_TO);
|
|
val_ax.setCrossAx(plot_area.catAx);
|
|
val_ax.setCrosses(CROSSES_AUTO_ZERO);
|
|
val_ax.setCrossBetween(CROSS_BETWEEN_BETWEEN);
|
|
scaling = val_ax.scaling;
|
|
scaling.setOrientation(ORIENTATION_MIN_MAX);
|
|
var num_fmt = val_ax.numFmt;
|
|
var format_code;
|
|
if (type === GROUPING_PERCENT_STACKED) {
|
|
format_code = "0%";
|
|
} else {
|
|
format_code = "General";
|
|
}
|
|
num_fmt.setFormatCode(format_code);
|
|
num_fmt.setSourceLinked(true);
|
|
var legend = chart.legend;
|
|
legend.setLegendPos(LEGEND_POS_R);
|
|
legend.setLayout(new CLayout());
|
|
legend.setOverlay(false);
|
|
var print_settings = chart_space.printSettings;
|
|
print_settings.setHeaderFooter(new CHeaderFooterChart());
|
|
print_settings.setPageMargins(new CPageMarginsChart());
|
|
print_settings.setPageSetup(new CPageSetup());
|
|
var page_margins = print_settings.pageMargins;
|
|
page_margins.setB(0.75);
|
|
page_margins.setL(0.7);
|
|
page_margins.setR(0.7);
|
|
page_margins.setT(0.75);
|
|
page_margins.setHeader(0.3);
|
|
page_margins.setFooter(0.3);
|
|
return chart_space;
|
|
}
|
|
function CreateBarChart(chartSeries, type, bUseCache) {
|
|
var asc_series = chartSeries.series;
|
|
var chart_space = new CChartSpace();
|
|
chart_space.setDate1904(false);
|
|
chart_space.setLang("en-US");
|
|
chart_space.setRoundedCorners(false);
|
|
chart_space.setChart(new CChart());
|
|
chart_space.setPrintSettings(new CPrintSettings());
|
|
var chart = chart_space.chart;
|
|
chart.setAutoTitleDeleted(false);
|
|
chart.setPlotArea(new CPlotArea());
|
|
chart.setLegend(new CLegend());
|
|
chart.setPlotVisOnly(true);
|
|
chart.setDispBlanksAs(DISP_BLANKS_AS_GAP);
|
|
chart.setShowDLblsOverMax(false);
|
|
var plot_area = chart.plotArea;
|
|
plot_area.setLayout(new CLayout());
|
|
plot_area.addChart(new CBarChart());
|
|
var cat_ax = new CCatAx();
|
|
var val_ax = new CValAx();
|
|
cat_ax.setAxId(++GLOBAL_AX_ID_COUNTER);
|
|
val_ax.setAxId(++GLOBAL_AX_ID_COUNTER);
|
|
cat_ax.setCrossAx(val_ax);
|
|
val_ax.setCrossAx(cat_ax);
|
|
plot_area.addAxis(cat_ax);
|
|
plot_area.addAxis(val_ax);
|
|
var bar_chart = plot_area.charts[0];
|
|
bar_chart.setBarDir(BAR_DIR_COL);
|
|
bar_chart.setGrouping(type);
|
|
bar_chart.setVaryColors(false);
|
|
var parsedHeaders = chartSeries.parsedHeaders;
|
|
for (var i = 0; i < asc_series.length; ++i) {
|
|
var series = new CBarSeries();
|
|
series.setIdx(i);
|
|
series.setOrder(i);
|
|
series.setInvertIfNegative(false);
|
|
series.setVal(new CYVal());
|
|
var val = series.val;
|
|
val.setNumRef(new CNumRef());
|
|
var num_ref = val.numRef;
|
|
num_ref.setF(asc_series[i].Val.Formula);
|
|
if (bUseCache) {
|
|
num_ref.setNumCache(new CNumLit());
|
|
var num_cache = num_ref.numCache;
|
|
num_cache.setPtCount(asc_series[i].Val.NumCache.length);
|
|
for (var j = 0; j < asc_series[i].Val.NumCache.length; ++j) {
|
|
var pt = new CNumericPoint();
|
|
pt.setIdx(j);
|
|
pt.setFormatCode(asc_series[i].Val.NumCache[j].numFormatStr);
|
|
pt.setVal(asc_series[i].Val.NumCache[j].val);
|
|
num_cache.addPt(pt);
|
|
}
|
|
}
|
|
if (parsedHeaders.bTop) {
|
|
series.setCat(new CCat());
|
|
var cat = series.cat;
|
|
cat.setStrRef(new CStrRef());
|
|
var str_ref = cat.strRef;
|
|
str_ref.setF(asc_series[i].Cat.Formula);
|
|
if (bUseCache) {
|
|
str_ref.setStrCache(new CStrCache());
|
|
var str_cache = str_ref.strCache;
|
|
var cat_num_cache = asc_series[i].Cat.NumCache;
|
|
str_cache.setPtCount(cat_num_cache.length);
|
|
for (var j = 0; j < cat_num_cache.length; ++j) {
|
|
var string_pt = new CStringPoint();
|
|
string_pt.setIdx(j);
|
|
string_pt.setVal(cat_num_cache[j].val);
|
|
str_cache.addPt(string_pt);
|
|
}
|
|
}
|
|
}
|
|
if (parsedHeaders.bLeft && asc_series[i].TxCache && typeof asc_series[i].TxCache.Formula === "string" && asc_series[i].TxCache.Formula.length > 0) {
|
|
series.setTx(new CTx());
|
|
var tx = series.tx;
|
|
tx.setStrRef(new CStrRef());
|
|
var str_ref = tx.strRef;
|
|
str_ref.setF(asc_series[i].TxCache.Formula);
|
|
if (bUseCache) {
|
|
str_ref.setStrCache(new CStrCache());
|
|
var str_cache = str_ref.strCache;
|
|
str_cache.setPtCount(1);
|
|
str_cache.addPt(new CStringPoint());
|
|
var pt = str_cache.pt[0];
|
|
pt.setIdx(0);
|
|
pt.setVal(asc_series[i].TxCache.Tx);
|
|
}
|
|
}
|
|
bar_chart.addSer(series);
|
|
}
|
|
bar_chart.setGapWidth(150);
|
|
if (BAR_GROUPING_PERCENT_STACKED === type || BAR_GROUPING_STACKED === type) {
|
|
bar_chart.setOverlap(100);
|
|
}
|
|
bar_chart.addAxId(cat_ax);
|
|
bar_chart.addAxId(val_ax);
|
|
cat_ax.setScaling(new CScaling());
|
|
cat_ax.setDelete(false);
|
|
cat_ax.setAxPos(AX_POS_B);
|
|
cat_ax.setMajorTickMark(TICK_MARK_OUT);
|
|
cat_ax.setMinorTickMark(TICK_MARK_NONE);
|
|
cat_ax.setCrossAx(plot_area.valAx);
|
|
cat_ax.setCrosses(CROSSES_AUTO_ZERO);
|
|
cat_ax.setAuto(true);
|
|
cat_ax.setLblAlgn(LBL_ALG_CTR);
|
|
cat_ax.setLblOffset(100);
|
|
cat_ax.setNoMultiLvlLbl(false);
|
|
var scaling = cat_ax.scaling;
|
|
scaling.setOrientation(ORIENTATION_MIN_MAX);
|
|
val_ax.setScaling(new CScaling());
|
|
val_ax.setDelete(false);
|
|
val_ax.setAxPos(AX_POS_L);
|
|
val_ax.setMajorGridlines(new CSpPr());
|
|
val_ax.setNumFmt(new CNumFmt());
|
|
var num_fmt = val_ax.numFmt;
|
|
var format_code;
|
|
if (type === BAR_GROUPING_PERCENT_STACKED) {
|
|
format_code = "0%";
|
|
} else {
|
|
format_code = "General";
|
|
}
|
|
num_fmt.setFormatCode(format_code);
|
|
num_fmt.setSourceLinked(true);
|
|
val_ax.setMajorTickMark(TICK_MARK_OUT);
|
|
val_ax.setMinorTickMark(TICK_MARK_NONE);
|
|
val_ax.setTickLblPos(TICK_LABEL_POSITION_NEXT_TO);
|
|
val_ax.setCrossAx(plot_area.catAx);
|
|
val_ax.setCrosses(CROSSES_AUTO_ZERO);
|
|
val_ax.setCrossBetween(CROSS_BETWEEN_BETWEEN);
|
|
scaling = val_ax.scaling;
|
|
scaling.setOrientation(ORIENTATION_MIN_MAX);
|
|
var legend = chart.legend;
|
|
legend.setLegendPos(LEGEND_POS_R);
|
|
legend.setLayout(new CLayout());
|
|
legend.setOverlay(false);
|
|
var print_settings = chart_space.printSettings;
|
|
print_settings.setHeaderFooter(new CHeaderFooterChart());
|
|
print_settings.setPageMargins(new CPageMarginsChart());
|
|
print_settings.setPageSetup(new CPageSetup());
|
|
var page_margins = print_settings.pageMargins;
|
|
page_margins.setB(0.75);
|
|
page_margins.setL(0.7);
|
|
page_margins.setR(0.7);
|
|
page_margins.setT(0.75);
|
|
page_margins.setHeader(0.3);
|
|
page_margins.setFooter(0.3);
|
|
return chart_space;
|
|
}
|
|
function CreateHBarChart(chartSeries, type, bUseCache) {
|
|
var asc_series = chartSeries.series;
|
|
var chart_space = new CChartSpace();
|
|
chart_space.setDate1904(false);
|
|
chart_space.setLang("en-US");
|
|
chart_space.setRoundedCorners(false);
|
|
chart_space.setChart(new CChart());
|
|
chart_space.setPrintSettings(new CPrintSettings());
|
|
var chart = chart_space.chart;
|
|
chart.setAutoTitleDeleted(false);
|
|
chart.setPlotArea(new CPlotArea());
|
|
chart.setLegend(new CLegend());
|
|
chart.setPlotVisOnly(true);
|
|
chart.setDispBlanksAs(DISP_BLANKS_AS_GAP);
|
|
chart.setShowDLblsOverMax(false);
|
|
var plot_area = chart.plotArea;
|
|
plot_area.setLayout(new CLayout());
|
|
plot_area.addChart(new CBarChart());
|
|
var cat_ax = new CCatAx();
|
|
var val_ax = new CValAx();
|
|
cat_ax.setAxId(++GLOBAL_AX_ID_COUNTER);
|
|
val_ax.setAxId(++GLOBAL_AX_ID_COUNTER);
|
|
cat_ax.setCrossAx(val_ax);
|
|
val_ax.setCrossAx(cat_ax);
|
|
plot_area.addAxis(cat_ax);
|
|
plot_area.addAxis(val_ax);
|
|
var bar_chart = plot_area.charts[0];
|
|
bar_chart.setBarDir(BAR_DIR_BAR);
|
|
bar_chart.setGrouping(type);
|
|
bar_chart.setVaryColors(false);
|
|
var parsedHeaders = chartSeries.parsedHeaders;
|
|
for (var i = 0; i < asc_series.length; ++i) {
|
|
var series = new CBarSeries();
|
|
series.setIdx(i);
|
|
series.setOrder(i);
|
|
series.setInvertIfNegative(false);
|
|
series.setVal(new CYVal());
|
|
var val = series.val;
|
|
val.setNumRef(new CNumRef());
|
|
var num_ref = val.numRef;
|
|
num_ref.setF(asc_series[i].Val.Formula);
|
|
if (bUseCache) {
|
|
num_ref.setNumCache(new CNumLit());
|
|
var num_cache = num_ref.numCache;
|
|
num_cache.setPtCount(asc_series[i].Val.NumCache.length);
|
|
for (var j = 0; j < asc_series[i].Val.NumCache.length; ++j) {
|
|
var pt = new CNumericPoint();
|
|
pt.setIdx(j);
|
|
pt.setFormatCode(asc_series[i].Val.NumCache[j].numFormatStr);
|
|
pt.setVal(asc_series[i].Val.NumCache[j].val);
|
|
num_cache.addPt(pt);
|
|
}
|
|
}
|
|
if (parsedHeaders.bTop) {
|
|
series.setCat(new CCat());
|
|
var cat = series.cat;
|
|
cat.setStrRef(new CStrRef());
|
|
var str_ref = cat.strRef;
|
|
str_ref.setF(asc_series[i].Cat.Formula);
|
|
if (bUseCache) {
|
|
str_ref.setStrCache(new CStrCache());
|
|
var str_cache = str_ref.strCache;
|
|
var cat_num_cache = asc_series[i].Cat.NumCache;
|
|
str_cache.setPtCount(cat_num_cache.length);
|
|
for (var j = 0; j < cat_num_cache.length; ++j) {
|
|
var string_pt = new CStringPoint();
|
|
string_pt.setIdx(j);
|
|
string_pt.setVal(cat_num_cache[j].val);
|
|
str_cache.addPt(string_pt);
|
|
}
|
|
}
|
|
}
|
|
if (parsedHeaders.bLeft && asc_series[i].TxCache && typeof asc_series[i].TxCache.Formula === "string" && asc_series[i].TxCache.Formula.length > 0) {
|
|
series.setTx(new CTx());
|
|
var tx = series.tx;
|
|
tx.setStrRef(new CStrRef());
|
|
var str_ref = tx.strRef;
|
|
str_ref.setF(asc_series[i].TxCache.Formula);
|
|
if (bUseCache) {
|
|
str_ref.setStrCache(new CStrCache());
|
|
var str_cache = str_ref.strCache;
|
|
str_cache.setPtCount(1);
|
|
str_cache.addPt(new CStringPoint());
|
|
var pt = str_cache.pt[0];
|
|
pt.setIdx(0);
|
|
pt.setVal(asc_series[i].TxCache.Tx);
|
|
}
|
|
}
|
|
bar_chart.addSer(series);
|
|
}
|
|
bar_chart.setGapWidth(150);
|
|
if (BAR_GROUPING_PERCENT_STACKED === type || BAR_GROUPING_STACKED === type) {
|
|
bar_chart.setOverlap(100);
|
|
}
|
|
bar_chart.addAxId(cat_ax);
|
|
bar_chart.addAxId(val_ax);
|
|
cat_ax.setScaling(new CScaling());
|
|
cat_ax.setDelete(false);
|
|
cat_ax.setAxPos(AX_POS_L);
|
|
cat_ax.setMajorTickMark(TICK_MARK_OUT);
|
|
cat_ax.setMinorTickMark(TICK_MARK_NONE);
|
|
cat_ax.setTickLblPos(TICK_LABEL_POSITION_NEXT_TO);
|
|
cat_ax.setCrossAx(plot_area.valAx);
|
|
cat_ax.setCrosses(CROSSES_AUTO_ZERO);
|
|
cat_ax.setAuto(true);
|
|
cat_ax.setLblAlgn(LBL_ALG_CTR);
|
|
cat_ax.setLblOffset(100);
|
|
cat_ax.setNoMultiLvlLbl(false);
|
|
var scaling = cat_ax.scaling;
|
|
scaling.setOrientation(ORIENTATION_MIN_MAX);
|
|
val_ax.setScaling(new CScaling());
|
|
val_ax.setDelete(false);
|
|
val_ax.setAxPos(AX_POS_B);
|
|
val_ax.setMajorGridlines(new CSpPr());
|
|
val_ax.setNumFmt(new CNumFmt());
|
|
val_ax.setMajorTickMark(TICK_MARK_OUT);
|
|
val_ax.setMinorTickMark(TICK_MARK_NONE);
|
|
val_ax.setTickLblPos(TICK_LABEL_POSITION_NEXT_TO);
|
|
val_ax.setCrossAx(plot_area.catAx);
|
|
val_ax.setCrosses(CROSSES_AUTO_ZERO);
|
|
val_ax.setCrossBetween(CROSS_BETWEEN_BETWEEN);
|
|
scaling = val_ax.scaling;
|
|
scaling.setOrientation(ORIENTATION_MIN_MAX);
|
|
var num_fmt = val_ax.numFmt;
|
|
var format_code;
|
|
format_code = "General";
|
|
num_fmt.setFormatCode(format_code);
|
|
num_fmt.setSourceLinked(true);
|
|
var legend = chart.legend;
|
|
legend.setLegendPos(LEGEND_POS_R);
|
|
legend.setLayout(new CLayout());
|
|
legend.setOverlay(false);
|
|
var print_settings = chart_space.printSettings;
|
|
print_settings.setHeaderFooter(new CHeaderFooterChart());
|
|
print_settings.setPageMargins(new CPageMarginsChart());
|
|
print_settings.setPageSetup(new CPageSetup());
|
|
var page_margins = print_settings.pageMargins;
|
|
page_margins.setB(0.75);
|
|
page_margins.setL(0.7);
|
|
page_margins.setR(0.7);
|
|
page_margins.setT(0.75);
|
|
page_margins.setHeader(0.3);
|
|
page_margins.setFooter(0.3);
|
|
return chart_space;
|
|
}
|
|
function CreateAreaChart(chartSeries, type, bUseCache) {
|
|
var asc_series = chartSeries.series;
|
|
var chart_space = new CChartSpace();
|
|
chart_space.setDate1904(false);
|
|
chart_space.setLang("en-US");
|
|
chart_space.setRoundedCorners(false);
|
|
chart_space.setChart(new CChart());
|
|
chart_space.setPrintSettings(new CPrintSettings());
|
|
var chart = chart_space.chart;
|
|
chart.setAutoTitleDeleted(false);
|
|
chart.setPlotArea(new CPlotArea());
|
|
chart.setLegend(new CLegend());
|
|
chart.setPlotVisOnly(true);
|
|
chart.setDispBlanksAs(DISP_BLANKS_AS_ZERO);
|
|
chart.setShowDLblsOverMax(false);
|
|
var plot_area = chart.plotArea;
|
|
plot_area.setLayout(new CLayout());
|
|
plot_area.addChart(new CAreaChart());
|
|
var cat_ax = new CCatAx();
|
|
var val_ax = new CValAx();
|
|
cat_ax.setAxId(++GLOBAL_AX_ID_COUNTER);
|
|
val_ax.setAxId(++GLOBAL_AX_ID_COUNTER);
|
|
cat_ax.setCrossAx(val_ax);
|
|
val_ax.setCrossAx(cat_ax);
|
|
plot_area.addAxis(cat_ax);
|
|
plot_area.addAxis(val_ax);
|
|
var area_chart = plot_area.charts[0];
|
|
area_chart.setGrouping(type);
|
|
area_chart.setVaryColors(false);
|
|
var parsedHeaders = chartSeries.parsedHeaders;
|
|
for (var i = 0; i < asc_series.length; ++i) {
|
|
var series = new CAreaSeries();
|
|
series.setIdx(i);
|
|
series.setOrder(i);
|
|
series.setVal(new CYVal());
|
|
var val = series.val;
|
|
val.setNumRef(new CNumRef());
|
|
var num_ref = val.numRef;
|
|
num_ref.setF(asc_series[i].Val.Formula);
|
|
if (bUseCache) {
|
|
num_ref.setNumCache(new CNumLit());
|
|
var num_cache = num_ref.numCache;
|
|
num_cache.setPtCount(asc_series[i].Val.NumCache.length);
|
|
for (var j = 0; j < asc_series[i].Val.NumCache.length; ++j) {
|
|
var pt = new CNumericPoint();
|
|
pt.setIdx(j);
|
|
pt.setFormatCode(asc_series[i].Val.NumCache[j].numFormatStr);
|
|
pt.setVal(asc_series[i].Val.NumCache[j].val);
|
|
num_cache.addPt(pt);
|
|
}
|
|
}
|
|
if (parsedHeaders.bTop) {
|
|
series.setCat(new CCat());
|
|
var cat = series.cat;
|
|
cat.setStrRef(new CStrRef());
|
|
var str_ref = cat.strRef;
|
|
str_ref.setF(asc_series[i].Cat.Formula);
|
|
if (bUseCache) {
|
|
str_ref.setStrCache(new CStrCache());
|
|
var str_cache = str_ref.strCache;
|
|
var cat_num_cache = asc_series[i].Cat.NumCache;
|
|
str_cache.setPtCount(cat_num_cache.length);
|
|
for (var j = 0; j < cat_num_cache.length; ++j) {
|
|
var string_pt = new CStringPoint();
|
|
string_pt.setIdx(j);
|
|
string_pt.setVal(cat_num_cache[j].val);
|
|
str_cache.addPt(string_pt);
|
|
}
|
|
}
|
|
}
|
|
if (parsedHeaders.bLeft && asc_series[i].TxCache && typeof asc_series[i].TxCache.Formula === "string" && asc_series[i].TxCache.Formula.length > 0) {
|
|
series.setTx(new CTx());
|
|
var tx = series.tx;
|
|
tx.setStrRef(new CStrRef());
|
|
var str_ref = tx.strRef;
|
|
str_ref.setF(asc_series[i].TxCache.Formula);
|
|
if (bUseCache) {
|
|
str_ref.setStrCache(new CStrCache());
|
|
var str_cache = str_ref.strCache;
|
|
str_cache.setPtCount(1);
|
|
str_cache.addPt(new CStringPoint());
|
|
var pt = str_cache.pt[0];
|
|
pt.setIdx(0);
|
|
pt.setVal(asc_series[i].TxCache.Tx);
|
|
}
|
|
}
|
|
area_chart.addSer(series);
|
|
}
|
|
area_chart.addAxId(cat_ax);
|
|
area_chart.addAxId(val_ax);
|
|
cat_ax.setScaling(new CScaling());
|
|
cat_ax.setDelete(false);
|
|
cat_ax.setAxPos(AX_POS_B);
|
|
cat_ax.setMajorTickMark(TICK_MARK_OUT);
|
|
cat_ax.setMinorTickMark(TICK_MARK_NONE);
|
|
cat_ax.setTickLblPos(TICK_LABEL_POSITION_NEXT_TO);
|
|
cat_ax.setCrossAx(plot_area.valAx);
|
|
cat_ax.setCrosses(CROSSES_AUTO_ZERO);
|
|
cat_ax.setAuto(true);
|
|
cat_ax.setLblAlgn(LBL_ALG_CTR);
|
|
cat_ax.setLblOffset(100);
|
|
cat_ax.setNoMultiLvlLbl(false);
|
|
cat_ax.scaling.setOrientation(ORIENTATION_MIN_MAX);
|
|
val_ax.setScaling(new CScaling());
|
|
val_ax.setDelete(false);
|
|
val_ax.setAxPos(AX_POS_L);
|
|
val_ax.setMajorGridlines(new CSpPr());
|
|
val_ax.setNumFmt(new CNumFmt());
|
|
val_ax.setMajorTickMark(TICK_MARK_OUT);
|
|
val_ax.setMinorTickMark(TICK_MARK_NONE);
|
|
val_ax.setTickLblPos(TICK_LABEL_POSITION_NEXT_TO);
|
|
val_ax.setCrossAx(plot_area.catAx);
|
|
val_ax.setCrosses(CROSSES_AUTO_ZERO);
|
|
val_ax.setCrossBetween(CROSS_BETWEEN_MID_CAT);
|
|
var scaling = val_ax.scaling;
|
|
scaling.setOrientation(ORIENTATION_MIN_MAX);
|
|
var num_fmt = val_ax.numFmt;
|
|
var format_code;
|
|
if (type === GROUPING_PERCENT_STACKED) {
|
|
format_code = "0%";
|
|
} else {
|
|
format_code = "General";
|
|
}
|
|
num_fmt.setFormatCode(format_code);
|
|
num_fmt.setSourceLinked(true);
|
|
var legend = chart.legend;
|
|
legend.setLegendPos(LEGEND_POS_R);
|
|
legend.setLayout(new CLayout());
|
|
legend.setOverlay(false);
|
|
var print_settings = chart_space.printSettings;
|
|
print_settings.setHeaderFooter(new CHeaderFooterChart());
|
|
print_settings.setPageMargins(new CPageMarginsChart());
|
|
print_settings.setPageSetup(new CPageSetup());
|
|
var page_margins = print_settings.pageMargins;
|
|
page_margins.setB(0.75);
|
|
page_margins.setL(0.7);
|
|
page_margins.setR(0.7);
|
|
page_margins.setT(0.75);
|
|
page_margins.setHeader(0.3);
|
|
page_margins.setFooter(0.3);
|
|
return chart_space;
|
|
}
|
|
function CreatePieChart(chartSeries, bDoughnut, bUseCache) {
|
|
var asc_series = chartSeries.series;
|
|
var chart_space = new CChartSpace();
|
|
chart_space.setDate1904(false);
|
|
chart_space.setLang("en-US");
|
|
chart_space.setRoundedCorners(false);
|
|
chart_space.setStyle(2);
|
|
chart_space.setChart(new CChart());
|
|
var chart = chart_space.chart;
|
|
chart.setAutoTitleDeleted(false);
|
|
chart.setPlotArea(new CPlotArea());
|
|
var plot_area = chart.plotArea;
|
|
plot_area.setLayout(new CLayout());
|
|
plot_area.addChart(bDoughnut ? new CDoughnutChart() : new CPieChart());
|
|
var pie_chart = plot_area.charts[0];
|
|
pie_chart.setVaryColors(true);
|
|
var parsedHeaders = chartSeries.parsedHeaders;
|
|
for (var i = 0; i < asc_series.length; ++i) {
|
|
var series = new CPieSeries();
|
|
series.setIdx(i);
|
|
series.setOrder(i);
|
|
series.setVal(new CYVal());
|
|
var val = series.val;
|
|
val.setNumRef(new CNumRef());
|
|
var num_ref = val.numRef;
|
|
num_ref.setF(asc_series[i].Val.Formula);
|
|
if (bUseCache) {
|
|
num_ref.setNumCache(new CNumLit());
|
|
var num_cache = num_ref.numCache;
|
|
num_cache.setPtCount(asc_series[i].Val.NumCache.length);
|
|
for (var j = 0; j < asc_series[i].Val.NumCache.length; ++j) {
|
|
var pt = new CNumericPoint();
|
|
pt.setIdx(j);
|
|
pt.setFormatCode(asc_series[i].Val.NumCache[j].numFormatStr);
|
|
pt.setVal(asc_series[i].Val.NumCache[j].val);
|
|
num_cache.addPt(pt);
|
|
}
|
|
}
|
|
if (parsedHeaders.bTop) {
|
|
series.setCat(new CCat());
|
|
var cat = series.cat;
|
|
cat.setStrRef(new CStrRef());
|
|
var str_ref = cat.strRef;
|
|
str_ref.setF(asc_series[i].Cat.Formula);
|
|
if (bUseCache) {
|
|
str_ref.setStrCache(new CStrCache());
|
|
var str_cache = str_ref.strCache;
|
|
var cat_num_cache = asc_series[i].Cat.NumCache;
|
|
str_cache.setPtCount(cat_num_cache.length);
|
|
for (var j = 0; j < cat_num_cache.length; ++j) {
|
|
var string_pt = new CStringPoint();
|
|
string_pt.setIdx(j);
|
|
string_pt.setVal(cat_num_cache[j].val);
|
|
str_cache.addPt(string_pt);
|
|
}
|
|
}
|
|
}
|
|
if (parsedHeaders.bLeft && asc_series[i].TxCache && typeof asc_series[i].TxCache.Formula === "string" && asc_series[i].TxCache.Formula.length > 0) {
|
|
series.setTx(new CTx());
|
|
var tx = series.tx;
|
|
tx.setStrRef(new CStrRef());
|
|
var str_ref = tx.strRef;
|
|
str_ref.setF(asc_series[i].TxCache.Formula);
|
|
if (bUseCache) {
|
|
str_ref.setStrCache(new CStrCache());
|
|
var str_cache = str_ref.strCache;
|
|
str_cache.setPtCount(1);
|
|
str_cache.addPt(new CStringPoint());
|
|
var pt = str_cache.pt[0];
|
|
pt.setIdx(0);
|
|
pt.setVal(asc_series[i].TxCache.Tx);
|
|
}
|
|
}
|
|
pie_chart.addSer(series);
|
|
}
|
|
pie_chart.setFirstSliceAng(0);
|
|
if (bDoughnut) {
|
|
pie_chart.setHoleSize(50);
|
|
}
|
|
chart.setLegend(new CLegend());
|
|
var legend = chart.legend;
|
|
legend.setLegendPos(LEGEND_POS_R);
|
|
legend.setLayout(new CLayout());
|
|
legend.setOverlay(false);
|
|
chart.setPlotVisOnly(true);
|
|
chart.setDispBlanksAs(DISP_BLANKS_AS_GAP);
|
|
chart.setShowDLblsOverMax(false);
|
|
chart_space.setPrintSettings(new CPrintSettings());
|
|
var print_settings = chart_space.printSettings;
|
|
print_settings.setHeaderFooter(new CHeaderFooterChart());
|
|
print_settings.setPageMargins(new CPageMarginsChart());
|
|
print_settings.setPageSetup(new CPageSetup());
|
|
var page_margins = print_settings.pageMargins;
|
|
page_margins.setB(0.75);
|
|
page_margins.setL(0.7);
|
|
page_margins.setR(0.7);
|
|
page_margins.setT(0.75);
|
|
page_margins.setHeader(0.3);
|
|
page_margins.setFooter(0.3);
|
|
return chart_space;
|
|
}
|
|
function CreateScatterChart(chartSeries, bUseCache) {
|
|
var asc_series = chartSeries.series;
|
|
var chart_space = new CChartSpace();
|
|
chart_space.setDate1904(false);
|
|
chart_space.setLang("en-US");
|
|
chart_space.setRoundedCorners(false);
|
|
chart_space.setStyle(2);
|
|
chart_space.setChart(new CChart());
|
|
var chart = chart_space.chart;
|
|
chart.setAutoTitleDeleted(false);
|
|
chart.setPlotArea(new CPlotArea());
|
|
var plot_area = chart.plotArea;
|
|
plot_area.setLayout(new CLayout());
|
|
plot_area.addChart(new CScatterChart());
|
|
var scatter_chart = plot_area.charts[0];
|
|
scatter_chart.setScatterStyle(SCATTER_STYLE_MARKER);
|
|
scatter_chart.setVaryColors(false);
|
|
var cat_ax = new CValAx();
|
|
var val_ax = new CValAx();
|
|
cat_ax.setAxId(++GLOBAL_AX_ID_COUNTER);
|
|
val_ax.setAxId(++GLOBAL_AX_ID_COUNTER);
|
|
cat_ax.setCrossAx(val_ax);
|
|
val_ax.setCrossAx(cat_ax);
|
|
plot_area.addAxis(cat_ax);
|
|
plot_area.addAxis(val_ax);
|
|
var first_series = asc_series.length > 1 ? asc_series[0] : null;
|
|
var start_index = asc_series.length > 1 ? 1 : 0;
|
|
var minus = start_index === 1 ? 1 : 0;
|
|
for (var i = start_index; i < asc_series.length; ++i) {
|
|
var series = new CScatterSeries();
|
|
series.setIdx(i - minus);
|
|
series.setOrder(i - minus);
|
|
if (first_series) {
|
|
series.setXVal(new CXVal());
|
|
var x_val = series.xVal;
|
|
x_val.setNumRef(new CNumRef());
|
|
var num_ref = x_val.numRef;
|
|
num_ref.setF(first_series.Val.Formula);
|
|
if (bUseCache) {
|
|
num_ref.setNumCache(new CNumLit());
|
|
var num_cache = num_ref.numCache;
|
|
num_cache.setPtCount(first_series.Val.NumCache.length);
|
|
for (var j = 0; j < first_series.Val.NumCache.length; ++j) {
|
|
var pt = new CNumericPoint();
|
|
pt.setIdx(j);
|
|
pt.setFormatCode(first_series.Val.NumCache[j].numFormatStr);
|
|
pt.setVal(first_series.Val.NumCache[j].val);
|
|
num_cache.addPt(pt);
|
|
}
|
|
}
|
|
}
|
|
series.setYVal(new CYVal());
|
|
var y_val = series.yVal;
|
|
y_val.setNumRef(new CNumRef());
|
|
var num_ref = y_val.numRef;
|
|
num_ref.setF(asc_series[i].Val.Formula);
|
|
if (bUseCache) {
|
|
num_ref.setNumCache(new CNumLit());
|
|
var num_cache = num_ref.numCache;
|
|
num_cache.setPtCount(asc_series[i].Val.NumCache.length);
|
|
for (var j = 0; j < asc_series[i].Val.NumCache.length; ++j) {
|
|
var pt = new CNumericPoint();
|
|
pt.setIdx(j);
|
|
pt.setFormatCode(asc_series[i].Val.NumCache[j].numFormatStr);
|
|
pt.setVal(asc_series[i].Val.NumCache[j].val);
|
|
num_cache.addPt(pt);
|
|
}
|
|
}
|
|
scatter_chart.addSer(series);
|
|
}
|
|
scatter_chart.addAxId(cat_ax);
|
|
scatter_chart.addAxId(val_ax);
|
|
cat_ax.setScaling(new CScaling());
|
|
cat_ax.setDelete(false);
|
|
cat_ax.setAxPos(AX_POS_B);
|
|
cat_ax.setMajorTickMark(TICK_MARK_OUT);
|
|
cat_ax.setMinorTickMark(TICK_MARK_NONE);
|
|
cat_ax.setTickLblPos(TICK_LABEL_POSITION_NEXT_TO);
|
|
cat_ax.setCrosses(CROSSES_AUTO_ZERO);
|
|
cat_ax.scaling.setOrientation(ORIENTATION_MIN_MAX);
|
|
val_ax.setScaling(new CScaling());
|
|
val_ax.setDelete(false);
|
|
val_ax.setAxPos(AX_POS_L);
|
|
val_ax.setMajorGridlines(new CSpPr());
|
|
val_ax.setNumFmt(new CNumFmt());
|
|
val_ax.setMajorTickMark(TICK_MARK_OUT);
|
|
val_ax.setMinorTickMark(TICK_MARK_NONE);
|
|
val_ax.setTickLblPos(TICK_LABEL_POSITION_NEXT_TO);
|
|
val_ax.setCrosses(CROSSES_AUTO_ZERO);
|
|
val_ax.setCrossBetween(CROSS_BETWEEN_BETWEEN);
|
|
var scaling = val_ax.scaling;
|
|
scaling.setOrientation(ORIENTATION_MIN_MAX);
|
|
var num_fmt = val_ax.numFmt;
|
|
var format_code = "General";
|
|
num_fmt.setFormatCode(format_code);
|
|
num_fmt.setSourceLinked(true);
|
|
chart.setLegend(new CLegend());
|
|
var legend = chart.legend;
|
|
legend.setLegendPos(LEGEND_POS_R);
|
|
legend.setLayout(new CLayout());
|
|
legend.setOverlay(false);
|
|
chart_space.setPrintSettings(new CPrintSettings());
|
|
var print_settings = chart_space.printSettings;
|
|
print_settings.setHeaderFooter(new CHeaderFooterChart());
|
|
print_settings.setPageMargins(new CPageMarginsChart());
|
|
print_settings.setPageSetup(new CPageSetup());
|
|
var page_margins = print_settings.pageMargins;
|
|
page_margins.setB(0.75);
|
|
page_margins.setL(0.7);
|
|
page_margins.setR(0.7);
|
|
page_margins.setT(0.75);
|
|
page_margins.setHeader(0.3);
|
|
page_margins.setFooter(0.3);
|
|
return chart_space;
|
|
}
|
|
function CreateStockChart(chartSeries, bUseCache) {
|
|
var asc_series = chartSeries.series;
|
|
var chart_space = new CChartSpace();
|
|
chart_space.setDate1904(false);
|
|
chart_space.setLang("en-US");
|
|
chart_space.setRoundedCorners(false);
|
|
chart_space.setChart(new CChart());
|
|
chart_space.setPrintSettings(new CPrintSettings());
|
|
var chart = chart_space.chart;
|
|
chart.setAutoTitleDeleted(false);
|
|
chart.setPlotArea(new CPlotArea());
|
|
chart.setLegend(new CLegend());
|
|
chart.setPlotVisOnly(true);
|
|
var disp_blanks_as;
|
|
disp_blanks_as = DISP_BLANKS_AS_GAP;
|
|
chart.setDispBlanksAs(disp_blanks_as);
|
|
chart.setShowDLblsOverMax(false);
|
|
var plot_area = chart.plotArea;
|
|
plot_area.setLayout(new CLayout());
|
|
plot_area.addChart(new CStockChart());
|
|
var cat_ax = new CCatAx();
|
|
var val_ax = new CValAx();
|
|
cat_ax.setAxId(++GLOBAL_AX_ID_COUNTER);
|
|
val_ax.setAxId(++GLOBAL_AX_ID_COUNTER);
|
|
cat_ax.setCrossAx(val_ax);
|
|
val_ax.setCrossAx(cat_ax);
|
|
plot_area.addAxis(cat_ax);
|
|
plot_area.addAxis(val_ax);
|
|
var line_chart = plot_area.charts[0];
|
|
line_chart.addAxId(cat_ax);
|
|
line_chart.addAxId(val_ax);
|
|
line_chart.setHiLowLines(new CSpPr());
|
|
line_chart.setUpDownBars(new CUpDownBars());
|
|
line_chart.upDownBars.setGapWidth(150);
|
|
line_chart.upDownBars.setUpBars(new CSpPr());
|
|
line_chart.upDownBars.setDownBars(new CSpPr());
|
|
var parsedHeaders = chartSeries.parsedHeaders;
|
|
for (var i = 0; i < asc_series.length; ++i) {
|
|
var series = new CLineSeries();
|
|
series.setIdx(i);
|
|
series.setOrder(i);
|
|
series.setMarker(new CMarker());
|
|
series.setSpPr(new CSpPr());
|
|
series.spPr.setLn(new CLn());
|
|
series.spPr.ln.setW(28575);
|
|
series.spPr.ln.setFill(CreateNoFillUniFill());
|
|
series.marker.setSymbol(SYMBOL_NONE);
|
|
series.setSmooth(false);
|
|
series.setVal(new CYVal());
|
|
var val = series.val;
|
|
val.setNumRef(new CNumRef());
|
|
var num_ref = val.numRef;
|
|
num_ref.setF(asc_series[i].Val.Formula);
|
|
if (bUseCache) {
|
|
num_ref.setNumCache(new CNumLit());
|
|
var num_cache = num_ref.numCache;
|
|
num_cache.setPtCount(asc_series[i].Val.NumCache.length);
|
|
for (var j = 0; j < asc_series[i].Val.NumCache.length; ++j) {
|
|
var pt = new CNumericPoint();
|
|
pt.setIdx(j);
|
|
pt.setFormatCode(asc_series[i].Val.NumCache[j].numFormatStr);
|
|
pt.setVal(asc_series[i].Val.NumCache[j].val);
|
|
num_cache.addPt(pt);
|
|
}
|
|
}
|
|
if (parsedHeaders.bTop) {
|
|
series.setCat(new CCat());
|
|
var cat = series.cat;
|
|
if (typeof asc_series[i].Cat.formatCode === "string" && asc_series[i].Cat.formatCode.length > 0) {
|
|
cat.setNumRef(new CNumRef());
|
|
var num_ref = cat.numRef;
|
|
num_ref.setF(asc_series[i].Cat.Formula);
|
|
if (bUseCache) {
|
|
num_ref.setNumCache(new CNumLit());
|
|
var num_cache = num_ref.numCache;
|
|
var cat_num_cache = asc_series[i].Cat.NumCache;
|
|
num_cache.setPtCount(cat_num_cache.length);
|
|
num_cache.setFormatCode(asc_series[i].Cat.formatCode);
|
|
for (var j = 0; j < cat_num_cache.length; ++j) {
|
|
var pt = new CNumericPoint();
|
|
pt.setIdx(j);
|
|
pt.setVal(cat_num_cache[j].val);
|
|
if (cat_num_cache[j].numFormatStr !== asc_series[i].Cat.formatCode) {
|
|
pt.setFormatCode(cat_num_cache[j].numFormatStr);
|
|
}
|
|
num_cache.addPt(pt);
|
|
}
|
|
}
|
|
} else {
|
|
cat.setStrRef(new CStrRef());
|
|
var str_ref = cat.strRef;
|
|
str_ref.setF(asc_series[i].Cat.Formula);
|
|
if (bUseCache) {
|
|
str_ref.setStrCache(new CStrCache());
|
|
var str_cache = str_ref.strCache;
|
|
var cat_num_cache = asc_series[i].Cat.NumCache;
|
|
str_cache.setPtCount(cat_num_cache.length);
|
|
for (var j = 0; j < cat_num_cache.length; ++j) {
|
|
var string_pt = new CStringPoint();
|
|
string_pt.setIdx(j);
|
|
string_pt.setVal(cat_num_cache[j].val);
|
|
str_cache.addPt(string_pt);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (parsedHeaders.bLeft && asc_series[i].TxCache && typeof asc_series[i].TxCache.Formula === "string" && asc_series[i].TxCache.Formula.length > 0) {
|
|
series.setTx(new CTx());
|
|
var tx = series.tx;
|
|
tx.setStrRef(new CStrRef());
|
|
var str_ref = tx.strRef;
|
|
str_ref.setF(asc_series[i].TxCache.Formula);
|
|
if (bUseCache) {
|
|
str_ref.setStrCache(new CStrCache());
|
|
var str_cache = str_ref.strCache;
|
|
str_cache.setPtCount(1);
|
|
str_cache.addPt(new CStringPoint());
|
|
var pt = str_cache.pt[0];
|
|
pt.setIdx(0);
|
|
pt.setVal(asc_series[i].TxCache.Tx);
|
|
}
|
|
}
|
|
line_chart.addSer(series);
|
|
}
|
|
cat_ax.setScaling(new CScaling());
|
|
cat_ax.setDelete(false);
|
|
cat_ax.setAxPos(AX_POS_B);
|
|
cat_ax.setMajorTickMark(TICK_MARK_OUT);
|
|
cat_ax.setMinorTickMark(TICK_MARK_OUT);
|
|
cat_ax.setTickLblPos(TICK_LABEL_POSITION_NEXT_TO);
|
|
cat_ax.setCrossAx(plot_area.valAx);
|
|
cat_ax.setCrosses(CROSSES_AUTO_ZERO);
|
|
cat_ax.setAuto(true);
|
|
cat_ax.setLblAlgn(LBL_ALG_CTR);
|
|
cat_ax.setLblOffset(100);
|
|
cat_ax.setNoMultiLvlLbl(false);
|
|
var scaling = cat_ax.scaling;
|
|
scaling.setOrientation(ORIENTATION_MIN_MAX);
|
|
val_ax.setScaling(new CScaling());
|
|
val_ax.setDelete(false);
|
|
val_ax.setAxPos(AX_POS_L);
|
|
val_ax.setMajorGridlines(new CSpPr());
|
|
val_ax.setNumFmt(new CNumFmt());
|
|
val_ax.setMajorTickMark(TICK_MARK_OUT);
|
|
val_ax.setMinorTickMark(TICK_MARK_NONE);
|
|
val_ax.setTickLblPos(TICK_LABEL_POSITION_NEXT_TO);
|
|
val_ax.setCrossAx(plot_area.catAx);
|
|
val_ax.setCrosses(CROSSES_AUTO_ZERO);
|
|
val_ax.setCrossBetween(CROSS_BETWEEN_BETWEEN);
|
|
scaling = val_ax.scaling;
|
|
scaling.setOrientation(ORIENTATION_MIN_MAX);
|
|
var num_fmt = val_ax.numFmt;
|
|
var format_code;
|
|
format_code = "General";
|
|
num_fmt.setFormatCode(format_code);
|
|
num_fmt.setSourceLinked(true);
|
|
var legend = chart.legend;
|
|
legend.setLegendPos(LEGEND_POS_R);
|
|
legend.setLayout(new CLayout());
|
|
legend.setOverlay(false);
|
|
var print_settings = chart_space.printSettings;
|
|
print_settings.setHeaderFooter(new CHeaderFooterChart());
|
|
print_settings.setPageMargins(new CPageMarginsChart());
|
|
print_settings.setPageSetup(new CPageSetup());
|
|
var page_margins = print_settings.pageMargins;
|
|
page_margins.setB(0.75);
|
|
page_margins.setL(0.7);
|
|
page_margins.setR(0.7);
|
|
page_margins.setT(0.75);
|
|
page_margins.setHeader(0.3);
|
|
page_margins.setFooter(0.3);
|
|
return chart_space;
|
|
}
|
|
function CreateDefaultAxises(valFormatCode) {
|
|
var cat_ax = new CCatAx();
|
|
var val_ax = new CValAx();
|
|
cat_ax.setAxId(++GLOBAL_AX_ID_COUNTER);
|
|
val_ax.setAxId(++GLOBAL_AX_ID_COUNTER);
|
|
cat_ax.setCrossAx(val_ax);
|
|
val_ax.setCrossAx(cat_ax);
|
|
cat_ax.setScaling(new CScaling());
|
|
cat_ax.setDelete(false);
|
|
cat_ax.setAxPos(AX_POS_B);
|
|
cat_ax.setMajorTickMark(TICK_MARK_OUT);
|
|
cat_ax.setMinorTickMark(TICK_MARK_NONE);
|
|
cat_ax.setCrosses(CROSSES_AUTO_ZERO);
|
|
cat_ax.setAuto(true);
|
|
cat_ax.setLblAlgn(LBL_ALG_CTR);
|
|
cat_ax.setLblOffset(100);
|
|
cat_ax.setNoMultiLvlLbl(false);
|
|
var scaling = cat_ax.scaling;
|
|
scaling.setOrientation(ORIENTATION_MIN_MAX);
|
|
val_ax.setScaling(new CScaling());
|
|
val_ax.setDelete(false);
|
|
val_ax.setAxPos(AX_POS_L);
|
|
val_ax.setMajorGridlines(new CSpPr());
|
|
val_ax.setNumFmt(new CNumFmt());
|
|
var num_fmt = val_ax.numFmt;
|
|
num_fmt.setFormatCode(valFormatCode);
|
|
num_fmt.setSourceLinked(true);
|
|
val_ax.setMajorTickMark(TICK_MARK_OUT);
|
|
val_ax.setMinorTickMark(TICK_MARK_NONE);
|
|
val_ax.setTickLblPos(TICK_LABEL_POSITION_NEXT_TO);
|
|
val_ax.setCrossAx(cat_ax);
|
|
val_ax.setCrosses(CROSSES_AUTO_ZERO);
|
|
val_ax.setCrossBetween(CROSS_BETWEEN_BETWEEN);
|
|
scaling = val_ax.scaling;
|
|
scaling.setOrientation(ORIENTATION_MIN_MAX);
|
|
cat_ax.setCrossAx(val_ax);
|
|
return {
|
|
valAx: val_ax,
|
|
catAx: cat_ax
|
|
};
|
|
}
|
|
function CreateScatterAxis() {
|
|
var cat_ax = new CValAx();
|
|
var val_ax = new CValAx();
|
|
cat_ax.setAxId(++GLOBAL_AX_ID_COUNTER);
|
|
val_ax.setAxId(++GLOBAL_AX_ID_COUNTER);
|
|
cat_ax.setCrossAx(val_ax);
|
|
val_ax.setCrossAx(cat_ax);
|
|
cat_ax.setScaling(new CScaling());
|
|
cat_ax.setDelete(false);
|
|
cat_ax.setAxPos(AX_POS_B);
|
|
cat_ax.setMajorTickMark(TICK_MARK_OUT);
|
|
cat_ax.setMinorTickMark(TICK_MARK_NONE);
|
|
cat_ax.setTickLblPos(TICK_LABEL_POSITION_NEXT_TO);
|
|
cat_ax.setCrossAx(val_ax);
|
|
cat_ax.setCrosses(CROSSES_AUTO_ZERO);
|
|
cat_ax.scaling.setOrientation(ORIENTATION_MIN_MAX);
|
|
val_ax.setScaling(new CScaling());
|
|
val_ax.setDelete(false);
|
|
val_ax.setAxPos(AX_POS_L);
|
|
val_ax.setMajorGridlines(new CSpPr());
|
|
val_ax.setNumFmt(new CNumFmt());
|
|
val_ax.setMajorTickMark(TICK_MARK_OUT);
|
|
val_ax.setMinorTickMark(TICK_MARK_NONE);
|
|
val_ax.setTickLblPos(TICK_LABEL_POSITION_NEXT_TO);
|
|
val_ax.setCrossAx(val_ax);
|
|
val_ax.setCrosses(CROSSES_AUTO_ZERO);
|
|
val_ax.setCrossBetween(CROSS_BETWEEN_BETWEEN);
|
|
var scaling = val_ax.scaling;
|
|
scaling.setOrientation(ORIENTATION_MIN_MAX);
|
|
var num_fmt = val_ax.numFmt;
|
|
var format_code = "General";
|
|
num_fmt.setFormatCode(format_code);
|
|
num_fmt.setSourceLinked(true);
|
|
return {
|
|
valAx: val_ax,
|
|
catAx: cat_ax
|
|
};
|
|
}
|
|
function CreateRadarChart(chartSeries, bUseCache) {
|
|
var asc_series = chartSeries.series;
|
|
var chart_space = new CChartSpace();
|
|
chart_space.setDate1904(false);
|
|
chart_space.setLang("en-US");
|
|
chart_space.setRoundedCorners(false);
|
|
chart_space.setChart(new CChart());
|
|
chart_space.setPrintSettings(new CPrintSettings());
|
|
var chart = chart_space.chart;
|
|
chart.setAutoTitleDeleted(false);
|
|
chart.setPlotArea(new CPlotArea());
|
|
chart.setLegend(new CLegend());
|
|
chart.setPlotVisOnly(true);
|
|
chart.setDispBlanksAs(DISP_BLANKS_AS_GAP);
|
|
chart.setShowDLblsOverMax(false);
|
|
var plot_area = chart.plotArea;
|
|
plot_area.setLayout(new CLayout());
|
|
plot_area.addChart(new CRadarChart());
|
|
var cat_ax = new CCatAx();
|
|
var val_ax = new CValAx();
|
|
cat_ax.setAxId(++GLOBAL_AX_ID_COUNTER);
|
|
val_ax.setAxId(++GLOBAL_AX_ID_COUNTER);
|
|
cat_ax.setCrossAx(val_ax);
|
|
val_ax.setCrossAx(cat_ax);
|
|
plot_area.addAxis(cat_ax);
|
|
plot_area.addAxis(val_ax);
|
|
var bar_chart = plot_area.charts[0];
|
|
bar_chart.setVaryColors(false);
|
|
var parsedHeaders = chartSeries.parsedHeaders;
|
|
for (var i = 0; i < asc_series.length; ++i) {
|
|
var series = new CBarSeries();
|
|
series.setIdx(i);
|
|
series.setOrder(i);
|
|
series.setInvertIfNegative(false);
|
|
series.setVal(new CYVal());
|
|
var val = series.val;
|
|
val.setNumRef(new CNumRef());
|
|
var num_ref = val.numRef;
|
|
num_ref.setF(asc_series[i].Val.Formula);
|
|
if (bUseCache) {
|
|
num_ref.setNumCache(new CNumLit());
|
|
var num_cache = num_ref.numCache;
|
|
num_cache.setPtCount(asc_series[i].Val.NumCache.length);
|
|
for (var j = 0; j < asc_series[i].Val.NumCache.length; ++j) {
|
|
var pt = new CNumericPoint();
|
|
pt.setIdx(j);
|
|
pt.setFormatCode(asc_series[i].Val.NumCache[j].numFormatStr);
|
|
pt.setVal(asc_series[i].Val.NumCache[j].val);
|
|
num_cache.addPt(pt);
|
|
}
|
|
}
|
|
if (parsedHeaders.bTop) {
|
|
series.setCat(new CCat());
|
|
var cat = series.cat;
|
|
cat.setStrRef(new CStrRef());
|
|
var str_ref = cat.strRef;
|
|
str_ref.setF(asc_series[i].Cat.Formula);
|
|
if (bUseCache) {
|
|
str_ref.setStrCache(new CStrCache());
|
|
var str_cache = str_ref.strCache;
|
|
var cat_num_cache = asc_series[i].Cat.NumCache;
|
|
str_cache.setPtCount(cat_num_cache.length);
|
|
for (var j = 0; j < cat_num_cache.length; ++j) {
|
|
var string_pt = new CStringPoint();
|
|
string_pt.setIdx(j);
|
|
string_pt.setVal(cat_num_cache[j].val);
|
|
str_cache.addPt(string_pt);
|
|
}
|
|
}
|
|
}
|
|
if (parsedHeaders.bLeft && asc_series[i].TxCache && typeof asc_series[i].TxCache.Formula === "string" && asc_series[i].TxCache.Formula.length > 0) {
|
|
series.setTx(new CTx());
|
|
var tx = series.tx;
|
|
tx.setStrRef(new CStrRef());
|
|
var str_ref = tx.strRef;
|
|
str_ref.setF(asc_series[i].TxCache.Formula);
|
|
if (bUseCache) {
|
|
str_ref.setStrCache(new CStrCache());
|
|
var str_cache = str_ref.strCache;
|
|
str_cache.setPtCount(1);
|
|
str_cache.addPt(new CStringPoint());
|
|
var pt = str_cache.pt[0];
|
|
pt.setIdx(0);
|
|
pt.setVal(asc_series[i].TxCache.Tx);
|
|
}
|
|
}
|
|
bar_chart.addSer(series);
|
|
}
|
|
bar_chart.addAxId(plot_area.catAx);
|
|
bar_chart.addAxId(plot_area.valAx);
|
|
cat_ax.setScaling(new CScaling());
|
|
cat_ax.setDelete(false);
|
|
cat_ax.setAxPos(AX_POS_B);
|
|
cat_ax.setMajorTickMark(TICK_MARK_OUT);
|
|
cat_ax.setMinorTickMark(TICK_MARK_NONE);
|
|
cat_ax.setCrossAx(plot_area.valAx);
|
|
cat_ax.setCrosses(CROSSES_AUTO_ZERO);
|
|
cat_ax.setAuto(true);
|
|
cat_ax.setLblAlgn(LBL_ALG_CTR);
|
|
cat_ax.setLblOffset(100);
|
|
cat_ax.setNoMultiLvlLbl(false);
|
|
var scaling = cat_ax.scaling;
|
|
scaling.setOrientation(ORIENTATION_MIN_MAX);
|
|
val_ax.setScaling(new CScaling());
|
|
val_ax.setDelete(false);
|
|
val_ax.setAxPos(AX_POS_L);
|
|
val_ax.setMajorGridlines(new CSpPr());
|
|
val_ax.setNumFmt(new CNumFmt());
|
|
var num_fmt = val_ax.numFmt;
|
|
var format_code = "General";
|
|
num_fmt.setFormatCode(format_code);
|
|
num_fmt.setSourceLinked(true);
|
|
val_ax.setMajorTickMark(TICK_MARK_CROSS);
|
|
val_ax.setMinorTickMark(TICK_MARK_NONE);
|
|
val_ax.setTickLblPos(TICK_LABEL_POSITION_NEXT_TO);
|
|
val_ax.setCrossAx(plot_area.catAx);
|
|
val_ax.setCrosses(CROSSES_AUTO_ZERO);
|
|
val_ax.setCrossBetween(CROSS_BETWEEN_BETWEEN);
|
|
scaling = val_ax.scaling;
|
|
scaling.setOrientation(ORIENTATION_MIN_MAX);
|
|
var legend = chart.legend;
|
|
legend.setLegendPos(LEGEND_POS_R);
|
|
legend.setLayout(new CLayout());
|
|
legend.setOverlay(false);
|
|
var print_settings = chart_space.printSettings;
|
|
print_settings.setHeaderFooter(new CHeaderFooterChart());
|
|
print_settings.setPageMargins(new CPageMarginsChart());
|
|
print_settings.setPageSetup(new CPageSetup());
|
|
var page_margins = print_settings.pageMargins;
|
|
page_margins.setB(0.75);
|
|
page_margins.setL(0.7);
|
|
page_margins.setR(0.7);
|
|
page_margins.setT(0.75);
|
|
page_margins.setHeader(0.3);
|
|
page_margins.setFooter(0.3);
|
|
return chart_space;
|
|
}
|
|
function parseSeriesHeaders(ws, rangeBBox) {
|
|
var cntLeft = 0,
|
|
cntTop = 0;
|
|
var headers = {
|
|
bLeft: false,
|
|
bTop: false
|
|
};
|
|
var i, cell, value, numFormatType, j;
|
|
var bLeftOnlyDateTime = true,
|
|
bTopOnlyDateTime = true;
|
|
if (rangeBBox) {
|
|
if (rangeBBox.c2 - rangeBBox.c1 > 0) {
|
|
for (i = rangeBBox.r1 + 1; i <= rangeBBox.r2; i++) {
|
|
cell = ws.getCell3(i, rangeBBox.c1);
|
|
value = cell.getValue();
|
|
numFormatType = cell.getNumFormatType();
|
|
if (!isNumber(value) && (value != "")) {
|
|
bLeftOnlyDateTime = false;
|
|
headers.bLeft = true;
|
|
} else {
|
|
if (numFormatType === c_oAscNumFormatType.Time || numFormatType === c_oAscNumFormatType.Date) {
|
|
headers.bLeft = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (rangeBBox.r2 - rangeBBox.r1 > 0) {
|
|
for (i = rangeBBox.c1 + 1; i <= rangeBBox.c2; i++) {
|
|
cell = ws.getCell3(rangeBBox.r1, i);
|
|
value = cell.getValue();
|
|
numFormatType = cell.getNumFormatType();
|
|
if (!isNumber(value) && value != "") {
|
|
bTopOnlyDateTime = false;
|
|
headers.bTop = true;
|
|
} else {
|
|
if (numFormatType === c_oAscNumFormatType.Time || numFormatType === c_oAscNumFormatType.Date) {
|
|
headers.bTop = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (headers.bTop || headers.bLeft) {
|
|
var nRowStart = headers.bTop ? rangeBBox.r1 + 1 : rangeBBox.r1,
|
|
nColStart = headers.bLeft ? rangeBBox.c1 + 1 : rangeBBox.c1;
|
|
for (i = nRowStart; i <= rangeBBox.r2; ++i) {
|
|
for (j = nColStart; j <= rangeBBox.c2; ++j) {
|
|
cell = ws.getCell3(rangeBBox.r1, i);
|
|
value = cell.getValue();
|
|
numFormatType = cell.getNumFormatType();
|
|
if (numFormatType !== c_oAscNumFormatType.Time && numFormatType !== c_oAscNumFormatType.Date && value !== "") {
|
|
break;
|
|
}
|
|
}
|
|
if (j <= rangeBBox.c2) {
|
|
break;
|
|
}
|
|
}
|
|
if (i === rangeBBox.r2 + 1) {
|
|
if (headers.bLeft && bLeftOnlyDateTime) {
|
|
headers.bLeft = false;
|
|
}
|
|
if (headers.bTop && bTopOnlyDateTime) {
|
|
headers.bTop = false;
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
headers = {
|
|
bLeft: true,
|
|
bTop: true
|
|
};
|
|
}
|
|
return headers;
|
|
}
|
|
function getChartSeries(worksheet, options, catHeadersBBox, serHeadersBBox) {
|
|
var api = window["Asc"]["editor"];
|
|
var ws = null;
|
|
var range = null;
|
|
var result = parserHelp.parse3DRef(options.range);
|
|
if (null !== result) {
|
|
ws = worksheet.workbook.getWorksheetByName(result.sheet);
|
|
if (ws) {
|
|
range = ws.getRange2(result.range);
|
|
}
|
|
}
|
|
if (null === range) {
|
|
return null;
|
|
}
|
|
var bbox = range.getBBox0();
|
|
var nameIndex = 1;
|
|
var i, series = [];
|
|
function getNumCache(c1, c2, r1, r2) {
|
|
var cache = [],
|
|
cell,
|
|
item;
|
|
if (c1 == c2) {
|
|
for (var row = r1; row <= r2; row++) {
|
|
cell = ws.getCell3(row, c1);
|
|
item = {};
|
|
item.numFormatStr = cell.getNumFormatStr();
|
|
item.isDateTimeFormat = cell.getNumFormat().isDateTimeFormat();
|
|
item.val = cell.getValue();
|
|
item.isHidden = ws.getColHidden(c1) || ws.getRowHidden(row);
|
|
cache.push(item);
|
|
}
|
|
} else {
|
|
for (var col = c1; col <= c2; col++) {
|
|
cell = ws.getCell3(r1, col, 0);
|
|
item = {};
|
|
item.numFormatStr = cell.getNumFormatStr();
|
|
item.isDateTimeFormat = cell.getNumFormat().isDateTimeFormat();
|
|
item.val = cell.getValue();
|
|
item.isHidden = ws.getColHidden || ws.getRowHidden(r1);
|
|
cache.push(item);
|
|
}
|
|
}
|
|
return cache;
|
|
}
|
|
var parsedHeaders = parseSeriesHeaders(ws, bbox);
|
|
var data_bbox = {
|
|
r1: parsedHeaders.bTop ? bbox.r1 + 1 : bbox.r1,
|
|
r2: bbox.r2,
|
|
c1: parsedHeaders.bLeft ? bbox.c1 + 1 : bbox.c1,
|
|
c2: bbox.c2
|
|
};
|
|
var bIsScatter = (c_oAscChartTypeSettings.scatter <= options.type && options.type <= c_oAscChartTypeSettings.scatterSmoothMarker);
|
|
var top_header_bbox, left_header_bbox, ser, startCell, endCell, formulaCell, seriaName, start, end, formula, numCache;
|
|
if (!options.getInColumns()) {
|
|
if (parsedHeaders.bTop) {
|
|
top_header_bbox = {
|
|
r1: bbox.r1,
|
|
c1: data_bbox.c1,
|
|
r2: bbox.r1,
|
|
c2: data_bbox.c2
|
|
};
|
|
} else {
|
|
if (catHeadersBBox && catHeadersBBox.c1 === data_bbox.c1 && catHeadersBBox.c2 === data_bbox.c2 && catHeadersBBox.r1 === catHeadersBBox.r2) {
|
|
top_header_bbox = {
|
|
r1: catHeadersBBox.r1,
|
|
c1: catHeadersBBox.c1,
|
|
r2: catHeadersBBox.r1,
|
|
c2: catHeadersBBox.c2
|
|
};
|
|
}
|
|
}
|
|
if (parsedHeaders.bLeft) {
|
|
left_header_bbox = {
|
|
r1: data_bbox.r1,
|
|
r2: data_bbox.r2,
|
|
c1: bbox.c1,
|
|
c2: bbox.c1
|
|
};
|
|
} else {
|
|
if (serHeadersBBox && serHeadersBBox.c1 === serHeadersBBox.c2 && serHeadersBBox.r1 === data_bbox.r1 && serHeadersBBox.r2 === data_bbox.r2) {
|
|
left_header_bbox = {
|
|
r1: serHeadersBBox.r1,
|
|
c1: serHeadersBBox.c1,
|
|
r2: serHeadersBBox.r1,
|
|
c2: serHeadersBBox.c2
|
|
};
|
|
}
|
|
}
|
|
for (i = data_bbox.r1; i <= data_bbox.r2; ++i) {
|
|
ser = new asc_CChartSeria();
|
|
startCell = new CellAddress(i, data_bbox.c1, 0);
|
|
endCell = new CellAddress(i, data_bbox.c2, 0);
|
|
ser.isHidden = !!ws.getRowHidden(i);
|
|
if (startCell && endCell) {
|
|
ser.Val.Formula = parserHelp.get3DRef(ws.sName, startCell.getID() === endCell.getID() ? startCell.getID() : startCell.getID() + ":" + endCell.getID());
|
|
}
|
|
ser.Val.NumCache = getNumCache(data_bbox.c1, data_bbox.c2, i, i);
|
|
if (left_header_bbox) {
|
|
formulaCell = new CellAddress(i, left_header_bbox.c1, 0);
|
|
ser.TxCache.Formula = parserHelp.get3DRef(ws.sName, formulaCell.getID());
|
|
}
|
|
if (top_header_bbox) {
|
|
start = new CellAddress(top_header_bbox.r1, top_header_bbox.c1, 0);
|
|
end = new CellAddress(top_header_bbox.r1, top_header_bbox.c2, 0);
|
|
formula = parserHelp.get3DRef(ws.sName, start.getID() + ":" + end.getID());
|
|
numCache = getNumCache(top_header_bbox.c1, top_header_bbox.c2, top_header_bbox.r1, top_header_bbox.r1);
|
|
if (bIsScatter) {
|
|
ser.xVal.Formula = formula;
|
|
ser.xVal.NumCache = numCache;
|
|
} else {
|
|
ser.Cat.Formula = formula;
|
|
ser.Cat.NumCache = numCache;
|
|
}
|
|
}
|
|
seriaName = left_header_bbox ? (ws.getCell3(i, left_header_bbox.c1).getValue()) : (api.chartTranslate.series + " " + nameIndex);
|
|
ser.TxCache.Tx = seriaName;
|
|
series.push(ser);
|
|
nameIndex++;
|
|
}
|
|
} else {
|
|
if (parsedHeaders.bTop) {
|
|
top_header_bbox = {
|
|
r1: bbox.r1,
|
|
c1: data_bbox.c1,
|
|
r2: bbox.r1,
|
|
c2: data_bbox.c2
|
|
};
|
|
} else {
|
|
if (serHeadersBBox && serHeadersBBox.r1 === serHeadersBBox.r2 && serHeadersBBox.c1 === data_bbox.c1 && serHeadersBBox.c2 === data_bbox.c2) {
|
|
top_header_bbox = {
|
|
r1: serHeadersBBox.r1,
|
|
c1: serHeadersBBox.c1,
|
|
r2: serHeadersBBox.r2,
|
|
c2: serHeadersBBox.c2
|
|
};
|
|
}
|
|
}
|
|
if (parsedHeaders.bLeft) {
|
|
left_header_bbox = {
|
|
r1: data_bbox.r1,
|
|
c1: bbox.c1,
|
|
r2: data_bbox.r2,
|
|
c2: bbox.c1
|
|
};
|
|
} else {
|
|
if (catHeadersBBox && catHeadersBBox.c1 === catHeadersBBox.c2 && catHeadersBBox.r1 === data_bbox.r1 && catHeadersBBox.r2 === data_bbox.r2) {
|
|
left_header_bbox = {
|
|
r1: catHeadersBBox.r1,
|
|
c1: catHeadersBBox.c1,
|
|
r2: catHeadersBBox.r2,
|
|
c2: catHeadersBBox.c2
|
|
};
|
|
}
|
|
}
|
|
for (i = data_bbox.c1; i <= data_bbox.c2; i++) {
|
|
ser = new asc_CChartSeria();
|
|
startCell = new CellAddress(data_bbox.r1, i, 0);
|
|
endCell = new CellAddress(data_bbox.r2, i, 0);
|
|
ser.isHidden = !!ws.getColHidden(i);
|
|
if (startCell && endCell) {
|
|
if (startCell.getID() == endCell.getID()) {
|
|
ser.Val.Formula = parserHelp.get3DRef(ws.sName, startCell.getID());
|
|
} else {
|
|
ser.Val.Formula = parserHelp.get3DRef(ws.sName, startCell.getID() + ":" + endCell.getID());
|
|
}
|
|
}
|
|
ser.Val.NumCache = getNumCache(i, i, data_bbox.r1, bbox.r2);
|
|
if (left_header_bbox) {
|
|
start = new CellAddress(left_header_bbox.r1, left_header_bbox.c1, 0);
|
|
end = new CellAddress(left_header_bbox.r2, left_header_bbox.c1, 0);
|
|
formula = parserHelp.get3DRef(ws.sName, start.getID() + ":" + end.getID());
|
|
numCache = getNumCache(left_header_bbox.c1, left_header_bbox.c1, left_header_bbox.r1, left_header_bbox.r2);
|
|
if (bIsScatter) {
|
|
ser.xVal.Formula = formula;
|
|
ser.xVal.NumCache = numCache;
|
|
} else {
|
|
ser.Cat.Formula = formula;
|
|
ser.Cat.NumCache = numCache;
|
|
}
|
|
}
|
|
if (top_header_bbox) {
|
|
formulaCell = new CellAddress(top_header_bbox.r1, i, 0);
|
|
ser.TxCache.Formula = parserHelp.get3DRef(ws.sName, formulaCell.getID());
|
|
}
|
|
seriaName = top_header_bbox ? (ws.getCell3(top_header_bbox.r1, i).getValue()) : (api.chartTranslate.series + " " + nameIndex);
|
|
ser.TxCache.Tx = seriaName;
|
|
series.push(ser);
|
|
nameIndex++;
|
|
}
|
|
}
|
|
return {
|
|
series: series,
|
|
parsedHeaders: parsedHeaders
|
|
};
|
|
}
|
|
function checkSpPrRasterImages(spPr) {
|
|
if (spPr && spPr.Fill && spPr.Fill && spPr.Fill.fill && spPr.Fill.fill.type === FILL_TYPE_BLIP) {
|
|
var copyBlipFill = spPr.Fill.createDuplicate();
|
|
copyBlipFill.fill.setRasterImageId(spPr.Fill.fill.RasterImageId);
|
|
spPr.setFill(copyBlipFill);
|
|
}
|
|
}
|
|
function checkBlipFillRasterImages(sp) {
|
|
switch (sp.getObjectType()) {
|
|
case historyitem_type_Shape:
|
|
checkSpPrRasterImages(sp.spPr);
|
|
break;
|
|
case historyitem_type_ImageShape:
|
|
if (sp.blipFill) {
|
|
var newBlipFill = sp.blipFill.createDuplicate();
|
|
newBlipFill.setRasterImageId(sp.blipFill.RasterImageId);
|
|
sp.setBlipFill(newBlipFill);
|
|
}
|
|
break;
|
|
case historyitem_type_ChartSpace:
|
|
checkSpPrRasterImages(sp.spPr);
|
|
var chart = sp.chart;
|
|
if (chart) {
|
|
chart.backWall && checkSpPrRasterImages(chart.backWall.spPr);
|
|
chart.floor && checkSpPrRasterImages(chart.floor.spPr);
|
|
chart.legend && checkSpPrRasterImages(chart.legend.spPr);
|
|
chart.sideWall && checkSpPrRasterImages(chart.sideWall.spPr);
|
|
chart.title && checkSpPrRasterImages(chart.title.spPr);
|
|
var plot_area = sp.chart.plotArea;
|
|
if (plot_area) {
|
|
checkSpPrRasterImages(plot_area.spPr);
|
|
for (var j = 0; j < plot_area.axId.length; ++j) {
|
|
var axis = plot_area.axId[j];
|
|
if (axis) {
|
|
checkSpPrRasterImages(axis.spPr);
|
|
axis.title && axis.title && checkSpPrRasterImages(axis.title.spPr);
|
|
}
|
|
}
|
|
for (j = 0; j < plot_area.charts.length; ++j) {
|
|
plot_area.charts[j].checkSpPrRasterImages();
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
case historyitem_type_GroupShape:
|
|
checkBlipFillRasterImages(sp.spTree);
|
|
break;
|
|
case historyitem_type_GraphicFrame:
|
|
break;
|
|
}
|
|
} |