Merge pull request 'Added button for on/off chart elements' (#689) from feature/chart-btn into release/v9.1.0

This commit is contained in:
Julia Radzhabova
2025-09-18 09:53:45 +00:00
3 changed files with 904 additions and 1 deletions

View File

@ -60,6 +60,7 @@ define([], function () {
this.api.asc_registerCallback('asc_onMouseMoveStart', _.bind(this.onMouseMoveStart, this));
this.api.asc_registerCallback('asc_onMouseMoveEnd', _.bind(this.onMouseMoveEnd, this));
this.api.asc_registerCallback('asc_onMouseMove', _.bind(this.onMouseMove, this));
this.api.asc_registerCallback('asc_onSingleChartSelectionChanged', _.bind(this.onSingleChartSelectionChanged, this));
if (this.mode.isEdit === true) {
this.api.asc_registerCallback('asc_onHideEyedropper', _.bind(this.hideEyedropper, this));
@ -199,7 +200,16 @@ define([], function () {
view.mnuCutPage.on('click', _.bind(me.onCutCopyPaste, me));
view.mnuPastePageBefore.on('click', _.bind(me.onCutCopyPaste, me));
view.mnuPastePageAfter.on('click', _.bind(me.onCutCopyPaste, me));
view.menuChartElement.on('item:click', _.bind(me.onChartElement, me));
view.menuChartElement.menu.items.forEach(item => {
if (item.menu) {
item.menu.items.forEach(item => {
item.on('click', function() {
me.onChartElement(item.menu, item);
});
});
}
});
view.menuImgReplace.menu.on('item:click', _.bind(me.onImgReplace, me));
}
};
@ -2609,5 +2619,479 @@ define([], function () {
this.api.asc_editChartInFrameEditor();
};
const _set = Asc.c_oAscChartTypeSettings,
chartElementMap = {
[_set.barNormal]: ['axes', 'axisTitles', 'chartTitle', 'dataLabels', 'dataTable', 'errorBars', 'gridLines', 'legend', 'trendLines'],
[_set.barStacked]: ['axes', 'axisTitles', 'chartTitle', 'dataLabels', 'dataTable', 'errorBars', 'gridLines', 'legend'],
[_set.barStackedPer]: ['axes', 'axisTitles', 'chartTitle', 'dataLabels', 'dataTable', 'errorBars', 'gridLines', 'legend'],
[_set.barNormal3d]: ['axes', 'axisTitles', 'chartTitle', 'dataLabels', 'dataTable', 'gridLines', 'legend'],
[_set.barStacked3d]: ['axes', 'axisTitles', 'chartTitle', 'dataLabels', 'dataTable', 'gridLines', 'legend'],
[_set.barStackedPer3d]: ['axes', 'axisTitles', 'chartTitle', 'dataLabels', 'dataTable', 'gridLines', 'legend'],
[_set.barNormal3dPerspective]: ['axes', 'axisTitles', 'chartTitle', 'dataLabels', 'dataTable', 'gridLines', 'legend'],
[_set.lineNormal]: ['axes', 'axisTitles', 'chartTitle', 'dataLabels', 'dataTable', 'errorBars', 'gridLines', 'legend', 'trendLines', 'upDownBars'],
[_set.lineStacked]: ['axes', 'axisTitles', 'chartTitle', 'dataLabels', 'dataTable', 'errorBars', 'gridLines', 'legend', 'upDownBars'],
[_set.lineStackedPer]: ['axes', 'axisTitles', 'chartTitle', 'dataLabels', 'dataTable', 'errorBars', 'gridLines', 'legend', 'trendLines', 'upDownBars'],
[_set.lineNormalMarker]: ['axes', 'axisTitles', 'chartTitle', 'dataLabels', 'dataTable', 'errorBars', 'gridLines', 'legend', 'trendLines', 'upDownBars'],
[_set.lineStackedMarker]: ['axes', 'axisTitles', 'chartTitle', 'dataLabels', 'dataTable', 'errorBars', 'gridLines', 'legend', 'upDownBars'],
[_set.lineStackedPerMarker]: ['axes', 'axisTitles', 'chartTitle', 'dataLabels', 'dataTable', 'errorBars', 'gridLines', 'legend', 'upDownBars'],
[_set.line3d]: ['axes', 'axisTitles', 'chartTitle', 'dataLabels', 'dataTable', 'gridLines', 'legend'],
[_set.pie]: ['chartTitle', 'dataLabels', 'legend'],
[_set.pie3d]: ['chartTitle', 'dataLabels', 'legend'],
[_set.hBarNormal]: ['axes', 'axisTitles', 'chartTitle', 'dataLabels', 'dataTable', 'errorBars', 'gridLines', 'legend', 'trendLines'],
[_set.hBarStacked]: ['axes', 'axisTitles', 'chartTitle', 'dataLabels', 'dataTable', 'errorBars', 'gridLines', 'legend'],
[_set.hBarStackedPer]: ['axes', 'axisTitles', 'chartTitle', 'dataLabels', 'dataTable', 'errorBars', 'gridLines', 'legend'],
[_set.hBarNormal3d]: ['axes', 'axisTitles', 'chartTitle', 'dataLabels', 'dataTable', 'gridLines', 'legend'],
[_set.hBarStacked3d]: ['axes', 'axisTitles', 'chartTitle', 'dataLabels', 'dataTable', 'gridLines', 'legend'],
[_set.hBarStackedPer3d]: ['axes', 'axisTitles', 'chartTitle', 'dataLabels', 'dataTable', 'gridLines', 'legend'],
[_set.areaNormal]: ['axes', 'axisTitles', 'chartTitle', 'dataLabels', 'dataTable', 'errorBars', 'gridLines', 'legend'],
[_set.areaStacked]: ['axes', 'axisTitles', 'chartTitle', 'dataLabels', 'dataTable', 'errorBars', 'gridLines', 'legend'],
[_set.areaStackedPer]: ['axes', 'axisTitles', 'chartTitle', 'dataLabels', 'dataTable', 'errorBars', 'gridLines', 'legend'],
[_set.doughnut]: ['chartTitle', 'dataLabels', 'legend'],
[_set.stock]: ['axes', 'axisTitles', 'chartTitle', 'dataLabels', 'dataTable', 'errorBars', 'gridLines', 'legend', 'trendLines', 'upDownBars'],
[_set.scatter]: ['axes', 'axisTitles', 'chartTitle', 'dataLabels', 'errorBars', 'gridLines', 'legend', 'trendLines'],
[_set.scatterLine]: ['axes', 'axisTitles', 'chartTitle', 'dataLabels', 'errorBars', 'gridLines', 'legend', 'trendLines'],
[_set.scatterLineMarker]: ['axes', 'axisTitles', 'chartTitle', 'dataLabels', 'errorBars', 'gridLines', 'legend', 'trendLines'],
[_set.scatterMarker]: ['axes', 'axisTitles', 'chartTitle', 'dataLabels', 'errorBars', 'gridLines', 'legend', 'trendLines'],
[_set.scatterNone]: ['axes', 'axisTitles', 'chartTitle', 'dataLabels', 'errorBars', 'gridLines', 'legend', 'trendLines'],
[_set.scatterSmooth]: ['axes', 'axisTitles', 'chartTitle', 'dataTable', 'errorBars', 'gridLines', 'legend', 'trendLines'],
[_set.scatterSmoothMarker]: ['axes', 'axisTitles', 'chartTitle', 'dataTable', 'errorBars', 'gridLines', 'legend', 'trendLines'],
[_set.surfaceNormal]: ['axes', 'axisTitles', 'chartTitle', 'gridLines', 'legend'],
[_set.surfaceWireframe]: ['axes', 'axisTitles', 'chartTitle', 'gridLines', 'legend'],
[_set.contourNormal]: ['axes', 'axisTitles', 'chartTitle', 'gridLines', 'legend'],
[_set.contourWireframe]: ['axes', 'axisTitles', 'chartTitle', 'gridLines', 'legend'],
[_set.comboCustom]: ['axes', 'axisTitles', 'chartTitle', 'dataLabels', 'dataTable', 'errorBars', 'gridLines', 'legend', 'trendLines'],
[_set.comboBarLine]: ['axes', 'axisTitles', 'chartTitle', 'dataLabels', 'dataTable', 'errorBars', 'gridLines', 'legend', 'trendLines'],
[_set.comboBarLineSecondary]: ['axes', 'axisTitles', 'chartTitle', 'dataLabels', 'dataTable', 'errorBars', 'gridLines', 'legend', 'trendLines'],
[_set.comboAreaBar]: ['axes', 'axisTitles', 'chartTitle', 'dataLabels', 'dataTable', 'errorBars', 'gridLines', 'legend'],
[_set.radar]: ['axes', 'chartTitle', 'dataLabels', 'gridLines', 'legend'],
[_set.radarMarker]: ['axes', 'chartTitle', 'dataLabels', 'gridLines', 'legend'],
[_set.radarFilled]: ['axes', 'chartTitle', 'dataLabels', 'gridLines', 'legend'],
[_set.unknown]: ['axes', 'axisTitles', 'chartTitle', 'dataLabels', 'dataTable', 'errorBars', 'gridLines', 'legend', 'trendLines', 'upDownBars']
};
dh.onChartElement = function(menu, item) {
var chartProps = this.chartProps,
HorAxis = chartProps.getHorAxesProps && chartProps.getHorAxesProps()[0],
SecHorAxis = chartProps.getHorAxesProps && chartProps.getHorAxesProps()[1],
VertAxis = chartProps.getVertAxesProps && chartProps.getVertAxesProps()[0],
SecVertAxis = chartProps.getVertAxesProps && chartProps.getVertAxesProps()[1],
DepthAxis = chartProps.getDepthAxesProps && chartProps.getDepthAxesProps()[0],
HorMajorGridlines = HorAxis && (HorAxis.getGridlines() === 1 || HorAxis.getGridlines() === 3),
HorMinorGridlines = HorAxis && (HorAxis.getGridlines() === 2 || HorAxis.getGridlines() === 3),
VertMajorGridlines = VertAxis && (VertAxis.getGridlines() === 1 || VertAxis.getGridlines() === 3),
VertMinorGridlines = VertAxis && (VertAxis.getGridlines() === 2 || VertAxis.getGridlines() === 3);
const value = item.value,
type = chartProps.getType(),
RadarChart = [_set.radar, _set.radarMarker, _set.radarFilled].includes(type),
hBarChart = [_set.hBarNormal, _set.hBarStacked, _set.hBarStackedPer, _set.hBarNormal3d, _set.hBarStacked3d, _set.hBarStackedPer3d].includes(type),
scatterChart = [_set.scatter, _set.scatterLine, _set.scatterLineMarker, _set.scatterMarker, _set.scatterNone, _set.scatterSmooth, _set.scatterSmoothMarker, _set.surfaceNormal].includes(type),
comboCustom = [_set.comboCustom].includes(type);
switch (value) {
case 'bShowHorAxis':
if (hBarChart) {
chartProps.setDisplayAxes(VertAxis && VertAxis.getShow(), SecVertAxis && SecVertAxis.getShow(), item.checked, SecHorAxis && SecHorAxis.getShow(), DepthAxis && DepthAxis.getShow());
} else if (scatterChart) {
chartProps.setDisplayAxes(SecVertAxis && SecVertAxis.getShow(), SecHorAxis && SecHorAxis.getShow(), item.checked, VertAxis && VertAxis.getShow(), DepthAxis && DepthAxis.getShow());
} else if (comboCustom) {
chartProps.setDisplayAxes(item.checked, SecVertAxis && SecVertAxis.getShow(), VertAxis && VertAxis.getShow(), SecHorAxis && SecHorAxis.getShow(), DepthAxis && DepthAxis.getShow());
} else {
chartProps.setDisplayAxes(item.checked, SecHorAxis && SecHorAxis.getShow(), VertAxis && VertAxis.getShow(), SecVertAxis && SecVertAxis.getShow(), DepthAxis && DepthAxis.getShow());
}
break;
case 'bShowVertAxis':
if (hBarChart) {
chartProps.setDisplayAxes(item.checked, SecVertAxis && SecVertAxis.getShow(), HorAxis && HorAxis.getShow(), SecHorAxis && SecHorAxis.getShow(), DepthAxis && DepthAxis.getShow());
} else if (scatterChart) {
chartProps.setDisplayAxes(SecVertAxis && SecVertAxis.getShow(), SecHorAxis && SecHorAxis.getShow(), HorAxis && HorAxis.getShow(), item.checked, DepthAxis && DepthAxis.getShow());
} else if (comboCustom) {
chartProps.setDisplayAxes(HorAxis && HorAxis.getShow(), SecVertAxis && SecVertAxis.getShow(), item.checked, SecHorAxis && SecHorAxis.getShow(), DepthAxis && DepthAxis.getShow());
} else {
chartProps.setDisplayAxes(HorAxis && HorAxis.getShow(), SecHorAxis && SecHorAxis.getShow(), item.checked, SecVertAxis && SecVertAxis.getShow(), DepthAxis && DepthAxis.getShow());
}
break;
case 'bShowHorAxSec':
if (comboCustom) {
chartProps.setDisplayAxes(HorAxis && HorAxis.getShow(), SecVertAxis && SecVertAxis.getShow(), VertAxis && VertAxis.getShow(), item.checked, DepthAxis && DepthAxis.getShow());
} else {
chartProps.setDisplayAxes(HorAxis && HorAxis.getShow(), item.checked, VertAxis && VertAxis.getShow(), SecVertAxis && SecVertAxis.getShow(), DepthAxis && DepthAxis.getShow());
}
break;
case 'bShowVertAxSec':
if (comboCustom) {
chartProps.setDisplayAxes(HorAxis && HorAxis.getShow(), item.checked, VertAxis && VertAxis.getShow(), SecHorAxis && SecHorAxis.getShow(), DepthAxis && DepthAxis.getShow());
} else {
chartProps.setDisplayAxes(HorAxis && HorAxis.getShow(), SecHorAxis && SecHorAxis.getShow(), VertAxis && VertAxis.getShow(), item.checked, DepthAxis && DepthAxis.getShow());
}
break;
case 'bShowDepthAxes':
chartProps.setDisplayAxes(HorAxis && HorAxis.getShow(), SecHorAxis && SecHorAxis.getShow(), VertAxis && VertAxis.getShow(), SecVertAxis && SecVertAxis.getShow(), item.checked);
break;
case 'bShowHorAxTitle':
if (hBarChart) {
chartProps.setDisplayAxisTitles((VertAxis && VertAxis.getLabel() === 1), (SecVertAxis && SecVertAxis.getLabel() === 1), item.checked, (SecHorAxis && SecHorAxis.getLabel() === 1), (DepthAxis && DepthAxis.getLabel() === 1));
} else if (scatterChart) {
chartProps.setDisplayAxisTitles((SecHorAxis && SecHorAxis.getLabel() === 1), (SecVertAxis && SecVertAxis.getLabel() === 1), item.checked, (VertAxis && VertAxis.getLabel() === 1), (DepthAxis && DepthAxis.getLabel() === 1));
} else if (comboCustom) {
chartProps.setDisplayAxisTitles(item.checked, (SecVertAxis && SecVertAxis.getLabel() === 1), (VertAxis && VertAxis.getLabel() === 1), (SecHorAxis && SecHorAxis.getLabel() === 1), (DepthAxis && DepthAxis.getLabel() === 1));
} else {
chartProps.setDisplayAxisTitles(item.checked, (SecHorAxis && SecHorAxis.getLabel() === 1), (VertAxis && VertAxis.getLabel() === 1), (SecVertAxis && SecVertAxis.getLabel() === 1), (DepthAxis && DepthAxis.getLabel() === 1));
}
break;
case 'bShowVertAxTitle':
if (hBarChart) {
chartProps.setDisplayAxisTitles(item.checked, (SecVertAxis && SecVertAxis.getLabel() === 1), (HorAxis && HorAxis.getLabel() === 1), (SecHorAxis && SecHorAxis.getLabel() === 1), (DepthAxis && DepthAxis.getLabel() === 1));
} else if (scatterChart) {
chartProps.setDisplayAxisTitles((SecHorAxis && SecHorAxis.getLabel() === 1), (SecVertAxis && SecVertAxis.getLabel() === 1), (HorAxis && HorAxis.getLabel() === 1), item.checked, (DepthAxis && DepthAxis.getLabel() === 1));
} else if (comboCustom) {
chartProps.setDisplayAxisTitles((HorAxis && HorAxis.getLabel() === 1), (SecVertAxis && SecVertAxis.getLabel() === 1), item.checked, (SecHorAxis && SecHorAxis.getLabel() === 1), (DepthAxis && DepthAxis.getLabel() === 1));
} else {
chartProps.setDisplayAxisTitles((HorAxis && HorAxis.getLabel() === 1), (SecHorAxis && SecHorAxis.getLabel() === 1), item.checked, (SecVertAxis && SecVertAxis.getLabel() === 1), (DepthAxis && DepthAxis.getLabel() === 1));
}
break;
case 'bShowHorAxTitleSec':
if (comboCustom) {
chartProps.setDisplayAxisTitles((HorAxis && HorAxis.getLabel() === 1), (SecVertAxis && SecVertAxis.getLabel() === 1), (VertAxis && VertAxis.getLabel() === 1), item.checked, (DepthAxis && DepthAxis.getLabel() === 1));
} else {
chartProps.setDisplayAxisTitles((HorAxis && HorAxis.getLabel() === 1), item.checked, (VertAxis && VertAxis.getLabel() === 1), (SecVertAxis && SecVertAxis.getLabel() === 1), (DepthAxis && DepthAxis.getLabel() === 1));
}
break;
case 'bShowVertAxisTitleSec':
if (comboCustom) {
chartProps.setDisplayAxisTitles((HorAxis && HorAxis.getLabel() === 1), item.checked, (VertAxis && VertAxis.getLabel() === 1), (SecHorAxis && SecHorAxis.getLabel() === 1), (DepthAxis && DepthAxis.getLabel() === 1));
} else {
chartProps.setDisplayAxisTitles((HorAxis && HorAxis.getLabel() === 1), (SecHorAxis && SecHorAxis.getLabel() === 1), (VertAxis && VertAxis.getLabel() === 1), item.checked, (DepthAxis && DepthAxis.getLabel() === 1));
}
break;
case 'bShowDepthAxisTitle':
chartProps.setDisplayAxes((HorAxis && HorAxis.getLabel() === 1), (SecHorAxis && SecHorAxis.getLabel() === 1), (VertAxis && VertAxis.getLabel() === 1), (SecVertAxis && SecVertAxis.getLabel() === 1), item.checked);
break;
case 'bShowChartTitleNone':
chartProps.setDisplayChartTitle(false, false);
break;
case 'bShowChartTitle':
chartProps.setDisplayChartTitle(true, false);
break;
case 'bOverlayTitle':
chartProps.setDisplayChartTitle(true, true);
break;
case 'CenterData':
chartProps.setDisplayDataLabels(true, Asc.c_oAscChartDataLabelsPos.ctr);
break;
case 'InnerBottomData':
chartProps.setDisplayDataLabels(true, Asc.c_oAscChartDataLabelsPos.inBase);
break;
case 'InnerTopData':
chartProps.setDisplayDataLabels(true, Asc.c_oAscChartDataLabelsPos.inEnd);
break;
case 'OuterTopData':
chartProps.setDisplayDataLabels(true, Asc.c_oAscChartDataLabelsPos.outEnd);
break;
case 'TopData':
chartProps.setDisplayDataLabels(true, Asc.c_oAscChartDataLabelsPos.t);
break;
case 'LeftData':
chartProps.setDisplayDataLabels(true, Asc.c_oAscChartDataLabelsPos.l);
break;
case 'RightData':
chartProps.setDisplayDataLabels(true, Asc.c_oAscChartDataLabelsPos.r);
break;
case 'BottomData':
chartProps.setDisplayDataLabels(true, Asc.c_oAscChartDataLabelsPos.b);
break;
case 'FitWidthData':
chartProps.setDisplayDataLabels(true, Asc.c_oAscChartDataLabelsPos.bestFit);
break;
case 'bShowDataLabels':
chartProps.setDisplayDataLabels(false, false);
break;
case 'standardError':
chartProps.setDisplayErrorBars(true, 4);
break;
case 'percentage':
chartProps.setDisplayErrorBars(true, 2);
break;
case 'standardDeviation':
chartProps.setDisplayErrorBars(true, 3);
break;
case 'bShowHorMajor':
if (hBarChart) {
chartProps.setDisplayGridlines(HorMajorGridlines, item.checked, HorMinorGridlines, VertMinorGridlines);
} else
chartProps.setDisplayGridlines(item.checked, HorMajorGridlines, VertMinorGridlines, HorMinorGridlines);
break;
case 'bShowVerMajor':
if (hBarChart || RadarChart) {
chartProps.setDisplayGridlines(item.checked, VertMajorGridlines, HorMinorGridlines, VertMinorGridlines);
} else
chartProps.setDisplayGridlines(VertMajorGridlines, item.checked, VertMinorGridlines, HorMinorGridlines);
break;
case 'bShowHorMinor':
if (hBarChart) {
chartProps.setDisplayGridlines(HorMajorGridlines, VertMajorGridlines, HorMinorGridlines, item.checked);
} else
chartProps.setDisplayGridlines(VertMajorGridlines, HorMajorGridlines, item.checked, HorMinorGridlines);
break;
case 'bShowVerMinor':
if (hBarChart || RadarChart) {
chartProps.setDisplayGridlines(HorMajorGridlines, VertMajorGridlines, item.checked, VertMinorGridlines);
}else
chartProps.setDisplayGridlines(VertMajorGridlines, HorMajorGridlines, VertMinorGridlines, item.checked);
break;
case 'LeftLegend':
if (chartProps.getLegendPos() === 1) {
chartProps.setDisplayLegend(false, 0);
} else {
chartProps.setDisplayLegend(true, 1);
}
break;
case 'TopLegend':
if (chartProps.getLegendPos() === 2) {
chartProps.setDisplayLegend(false, 0);
} else {
chartProps.setDisplayLegend(true, 2);
}
break;
case 'RightLegend':
if (chartProps.getLegendPos() === 3) {
chartProps.setDisplayLegend(false, 0);
} else {
chartProps.setDisplayLegend(true, 3);
}
break;
case 'BottomLegend':
if (chartProps.getLegendPos() === 4) {
chartProps.setDisplayLegend(false, 0);
} else {
chartProps.setDisplayLegend(true, 4);
}
break;
case 'LeftOverlay':
if (chartProps.getLegendPos() === 5) {
chartProps.setDisplayLegend(false, 0);
} else {
chartProps.setDisplayLegend(true,5);
}
break;
case 'RightOverlay':
if (chartProps.getLegendPos() === 6) {
chartProps.setDisplayLegend(false, 0);
} else {
chartProps.setDisplayLegend(true, 6);
}
break;
case 'trendLineNone':
chartProps.setDisplayTrendlines(false, false, 0, 0);
break;
case 'trendLineLinear':
chartProps.setDisplayTrendlines(true, 1, 0, 0);
break;
case 'trendLineExponential':
chartProps.setDisplayTrendlines(true, 0, 0, 0);
break;
case 'trendLineForecast':
chartProps.setDisplayTrendlines(true, 1, 2, 0);
break;
case 'trendLineMovingAverage':
chartProps.setDisplayTrendlines(true, 3, 0, 0);
break;
case 'bShowUpDownBars':
chartProps.setDisplayUpDownBars(true);
break;
case 'bShowUpDownNone':
chartProps.setDisplayUpDownBars(false);
break;
}
};
dh.updateChartElementMenu = function(menu, chartProps) {
const type = chartProps.getType(),
horAxes = chartProps.getHorAxesProps && chartProps.getHorAxesProps(),
vertAxes = chartProps.getVertAxesProps && chartProps.getVertAxesProps(),
depthAxes = chartProps.getDepthAxesProps && chartProps.getDepthAxesProps(),
dataLabelsPos = chartProps.getDataLabelsPos && chartProps.getDataLabelsPos(),
title = chartProps.getTitle && chartProps.getTitle(),
legendPos = chartProps.getLegendPos && chartProps.getLegendPos(),
GridMajor = Asc.c_oAscGridLinesSettings.major,
GridMinor = Asc.c_oAscGridLinesSettings.minor,
GridMajorMinor = Asc.c_oAscGridLinesSettings.majorMinor,
ComboChart = [_set.comboCustom, _set.comboBarLine,_set.comboBarLineSecondary,_set.comboAreaBar].includes(type),
RadarChart = [_set.radar, _set.radarMarker, _set.radarFilled].includes(type),
LabelGroup1Types = [_set.barNormal, _set.barStacked, _set.barStackedPer, _set.hBarNormal, _set.hBarStacked, _set.hBarStackedPer],
LabelGroup2Types = [_set.barNormal, _set.barStacked, _set.barStackedPer, _set.pie, _set.pie3d, _set.hBarNormal, _set.hBarStacked, _set.hBarStackedPer],
LabelGroup3Types = [_set.barNormal, _set.pie, _set.pie3d, _set.hBarNormal],
LabelGroup4Types = [_set.lineNormal, _set.lineStacked, _set.lineStackedPer, _set.lineNormalMarker, _set.lineStackedMarker, _set.lineStackedPerMarker, _set.stock, _set.scatter, _set.scatterLine, _set.scatterLineMarker, _set.scatterSmooth, _set.scatterSmoothMarker],
LabelGroup5Types = [_set.pie, _set.pie3d],
comboType = ComboChart ? (chartProps.getSeries && chartProps.getSeries()[0] && chartProps.getSeries()[0].asc_getChartType()) : type,
LabelGroup1 = LabelGroup1Types.includes(comboType),
LabelGroup2 = LabelGroup2Types.includes(comboType),
LabelGroup3 = LabelGroup3Types.includes(comboType),
LabelGroup4 = LabelGroup4Types.includes(comboType),
LabelGroup5 = LabelGroup5Types.includes(comboType);
const axesMenu = menu.items[0].menu;
axesMenu.items[0].setVisible(!RadarChart);
axesMenu.items[0].setChecked(!RadarChart && horAxes && horAxes[0] && horAxes[0].getShow());
axesMenu.items[1].setChecked(vertAxes && vertAxes[0] && vertAxes[0].getShow());
axesMenu.items[4].setVisible(depthAxes && depthAxes[0]);
axesMenu.items[4].setChecked(depthAxes && depthAxes[0] && depthAxes[0].getShow());
if (ComboChart) {
axesMenu.items[2].setVisible(horAxes && horAxes[1]);
axesMenu.items[2].setChecked(horAxes && horAxes[1] && horAxes[1].getShow());
axesMenu.items[3].setVisible(vertAxes && vertAxes[1]);
axesMenu.items[3].setChecked(vertAxes && vertAxes[1] && vertAxes[1].getShow());
} else {
axesMenu.items[2].setVisible(false);
axesMenu.items[3].setVisible(false);
}
const titlesMenu = menu.items[1].menu;
titlesMenu.items[0].setChecked(horAxes && horAxes[0] && horAxes[0].getLabel() === Asc.c_oAscChartHorAxisLabelShowSettings.noOverlay);
titlesMenu.items[1].setChecked(vertAxes && vertAxes[0] && vertAxes[0].getLabel() === Asc.c_oAscChartVertAxisLabelShowSettings.rotated);
titlesMenu.items[4].setVisible(depthAxes && depthAxes[0]);
titlesMenu.items[4].setChecked(depthAxes && depthAxes[0] && depthAxes[0].getLabel() === Asc.c_oAscChartVertAxisLabelShowSettings.rotated);
if (ComboChart) {
titlesMenu.items[2].setVisible(horAxes && horAxes[1]);
titlesMenu.items[2].setChecked(horAxes && horAxes[1] && horAxes[1].getLabel() === Asc.c_oAscChartHorAxisLabelShowSettings.noOverlay);
titlesMenu.items[3].setVisible(vertAxes && vertAxes[1]);
titlesMenu.items[3].setChecked(vertAxes && vertAxes[1] && vertAxes[1].getLabel() === Asc.c_oAscChartVertAxisLabelShowSettings.rotated);
} else {
titlesMenu.items[2].setVisible(false);
titlesMenu.items[3].setVisible(false);
}
const titleMenu = menu.items[2].menu;
titleMenu.items[0].setChecked(title === Asc.c_oAscChartTitleShowSettings.none);
titleMenu.items[1].setChecked(title === Asc.c_oAscChartTitleShowSettings.noOverlay);
titleMenu.items[2].setChecked(title === Asc.c_oAscChartTitleShowSettings.overlay);
const labelsMenu = menu.items[3].menu;
labelsMenu.items[0].setChecked(dataLabelsPos === Asc.c_oAscChartDataLabelsPos.none);
labelsMenu.items[1].setChecked(dataLabelsPos === Asc.c_oAscChartDataLabelsPos.ctr);
labelsMenu.items[2].setChecked(LabelGroup1 && dataLabelsPos === Asc.c_oAscChartDataLabelsPos.inBase);
labelsMenu.items[3].setChecked(LabelGroup2 && dataLabelsPos === Asc.c_oAscChartDataLabelsPos.inEnd);
labelsMenu.items[4].setChecked(LabelGroup3 && dataLabelsPos === Asc.c_oAscChartDataLabelsPos.outEnd);
labelsMenu.items[5].setChecked(LabelGroup4 && dataLabelsPos === Asc.c_oAscChartDataLabelsPos.t);
labelsMenu.items[6].setChecked(LabelGroup4 && dataLabelsPos === Asc.c_oAscChartDataLabelsPos.l);
labelsMenu.items[7].setChecked(LabelGroup4 && dataLabelsPos === Asc.c_oAscChartDataLabelsPos.r);
labelsMenu.items[8].setChecked(LabelGroup4 && dataLabelsPos === Asc.c_oAscChartDataLabelsPos.b);
labelsMenu.items[9].setChecked(LabelGroup5 && dataLabelsPos === Asc.c_oAscChartDataLabelsPos.bestFit);
if (dataLabelsPos !== undefined) {
labelsMenu.items[2].setVisible(LabelGroup1);
labelsMenu.items[3].setVisible(LabelGroup2);
labelsMenu.items[4].setVisible(LabelGroup3);
labelsMenu.items[5].setVisible(LabelGroup4);
labelsMenu.items[6].setVisible(LabelGroup4);
labelsMenu.items[7].setVisible(LabelGroup4);
labelsMenu.items[8].setVisible(LabelGroup4);
labelsMenu.items[9].setVisible(LabelGroup5);
}
const gridMenu = menu.items[5].menu;
gridMenu.items[0].setVisible(true);
gridMenu.items[2].setVisible(true);
if (RadarChart) {
gridMenu.items[0].setVisible(false);
gridMenu.items[0].setChecked(false);
gridMenu.items[1].setChecked(vertAxes && vertAxes[0] && (vertAxes[0].getGridlines() === GridMajor || vertAxes[0].getGridlines() === GridMajorMinor));
gridMenu.items[2].setChecked(false);
gridMenu.items[2].setVisible(false);
gridMenu.items[3].setChecked(vertAxes && vertAxes[0] && (vertAxes[0].getGridlines() === GridMinor || vertAxes[0].getGridlines() === GridMajorMinor));
} else if (type !== Asc.c_oAscChartTypeSettings.pie && type !== Asc.c_oAscChartTypeSettings.pie3d) {
gridMenu.items[0].setChecked(vertAxes && vertAxes[0] && (vertAxes[0].getGridlines() === GridMajor || vertAxes[0].getGridlines() === GridMajorMinor));
gridMenu.items[1].setChecked(horAxes && horAxes[0] && (horAxes[0].getGridlines() === GridMajor || horAxes[0].getGridlines() === GridMajorMinor));
gridMenu.items[2].setChecked(vertAxes && vertAxes[0] && (vertAxes[0].getGridlines() === GridMinor || vertAxes[0].getGridlines() === GridMajorMinor));
gridMenu.items[3].setChecked(horAxes && horAxes[0] && (horAxes[0].getGridlines() === GridMinor || horAxes[0].getGridlines() === GridMajorMinor));
}
const legendMenu = menu.items[6].menu;
legendMenu.items[0].setChecked(legendPos === Asc.c_oAscChartLegendShowSettings.top);
legendMenu.items[1].setChecked(legendPos === Asc.c_oAscChartLegendShowSettings.left);
legendMenu.items[2].setChecked(legendPos === Asc.c_oAscChartLegendShowSettings.right);
legendMenu.items[3].setChecked(legendPos === Asc.c_oAscChartLegendShowSettings.bottom);
legendMenu.items[4].setChecked(legendPos === Asc.c_oAscChartLegendShowSettings.leftOverlay);
legendMenu.items[5].setChecked(legendPos === Asc.c_oAscChartLegendShowSettings.rightOverlay);
const supportedElements = chartElementMap[type] || chartElementMap[45] || [];
menu.items.forEach(function(item) {
item.setDisabled(supportedElements.indexOf(item.value) === -1);
});
};
dh.onSingleChartSelectionChanged = function(asc_CRect) {
var me = this,
documentHolderView = me.documentHolder,
chartContainer = documentHolderView.cmpEl.find('#chart-element-container');
me._state.currentChartRect = asc_CRect;
me.getCurrentChartProps = function () {
var selectedElements = me.api.getSelectedElements();
if (selectedElements && selectedElements.length > 0) {
var elType, elValue;
for (var i = selectedElements.length - 1; i >= 0; i--) {
elType = selectedElements[i].get_ObjectType();
elValue = selectedElements[i].get_ObjectValue();
if (elType === Asc.c_oAscTypeSelectElement.Chart) {
return elValue.get_ChartProperties();
}
}
}
return null;
};
me.chartProps = me.getCurrentChartProps();
if (chartContainer.length < 1) {
chartContainer = $('<div id="chart-element-container" style="position: absolute; z-index: 1000;"><div id="id-document-holder-btn-chart-element"></div></div>');
documentHolderView.cmpEl.append(chartContainer);
}
me.isRtlSheet = me.api ? Common.UI.isRTL() : false;
if (me.chartProps) {
var x = asc_CRect.asc_getX(),
y = asc_CRect.asc_getY(),
width = asc_CRect.asc_getWidth(),
btnLeft = me.isRtlSheet ? x - 40 : x + width + 8,
btnTop = y;
if (btnLeft < 25 || btnLeft + 50 > me._Width || btnTop + 30 > me._Height) {
chartContainer.hide();
return;
}
if (btnTop < 0) {
btnTop = 0
}
chartContainer.css({
left: btnLeft + 'px',
top: btnTop + 'px'
}).show();
if (!me.btnChartElement) {
me.btnChartElement = new Common.UI.Button({
parentEl: $('#id-document-holder-btn-chart-element'),
cls: 'btn-toolbar',
iconCls: 'toolbar__icon btn-chart-elements',
hint: me.documentHolder.btnChart,
menu: me.documentHolder.menuChartElement.menu
});
me.btnChartElement.on('click', function() {
me.chartProps = me.getCurrentChartProps();
if (me.chartProps) {
me.updateChartElementMenu(me.documentHolder.menuChartElement.menu, me.chartProps);
}
});
}
} else {
chartContainer.hide();
}
};
}
});

View File

@ -665,6 +665,382 @@ define([], function () {
})
});
me.menuChartElement = new Common.UI.MenuItem({
menu: new Common.UI.Menu({
items: [
{
caption: me.textAxes,
value: 'axes',
disabled: false,
menu: new Common.UI.Menu({
cls: 'shifted-right',
menuAlign: 'tl-tr',
items: [
{
caption: me.textHorAxis,
value: 'bShowHorAxis',
stopPropagation: true,
checkable: true
},
{
caption: me.textVertAxis,
value: 'bShowVertAxis',
stopPropagation: true,
checkable: true
},
{
caption: me.textHorAxisSec,
value: 'bShowHorAxSec',
stopPropagation: true,
checkable: true
},
{
caption: me.textVertAxisSec,
value: 'bShowVertAxSec',
stopPropagation: true,
checkable: true
},
{
caption: me.DepthAxis,
value: 'bShowDepthAxes',
stopPropagation: true,
checkable: true
}
]
})
},
{
caption: me.textAxisTitles,
value: 'axisTitles',
disabled: false,
menu: new Common.UI.Menu({
cls: 'shifted-right',
menuAlign: 'tl-tr',
items: [
{
caption: me.textHorAxis,
value: 'bShowHorAxTitle',
stopPropagation: true,
checkable: true
},
{
caption: me.textVertAxis,
value: 'bShowVertAxTitle',
stopPropagation: true,
checkable: true
},
{
caption: me.textHorAxisSec,
value: 'bShowHorAxTitleSec',
stopPropagation: true,
checkable: true
},
{
caption: me.textVertAxisSec,
value: 'bShowVertAxisTitleSec',
stopPropagation: true,
checkable: true
},
{
caption: me.DepthAxis,
value: 'bShowDepthAxesTitle',
stopPropagation: true,
checkable: true
}
]
})
},
{
caption: me.textChartTitle,
value: 'chartTitle',
disabled: false,
menu: new Common.UI.Menu({
cls: 'shifted-right',
menuAlign: 'tl-tr',
items: [
{
caption: me.textNone,
value: 'bShowChartTitleNone',
stopPropagation: true,
toggleGroup: 'chartTitle',
checkable: true
},
{
caption: me.textNoOverlay,
value: 'bShowChartTitle',
stopPropagation: true,
toggleGroup: 'chartTitle',
checkable: true
},
{
caption: me.textOverlay,
value: 'bOverlayTitle',
stopPropagation: true,
toggleGroup: 'chartTitle',
checkable: true
}
]
})
},
{
caption: me.textDataLabels,
value: 'dataLabels',
disabled: false,
menu: new Common.UI.Menu({
cls: 'shifted-right',
menuAlign: 'tl-tr',
items: [
{
caption: me.textNone,
value: 'bShowDataLabels',
stopPropagation: true,
toggleGroup: 'dataLabels',
checkable: true
},
{
caption: me.textCenter,
value: 'CenterData',
stopPropagation: true,
toggleGroup: 'dataLabels',
checkable: true
},
{
caption: me.textInnerBottom,
value: 'InnerBottomData',
stopPropagation: true,
toggleGroup: 'dataLabels',
checkable: true
},
{
caption: me.textInnerTop,
value: 'InnerTopData',
stopPropagation: true,
toggleGroup: 'dataLabels',
checkable: true
},
{
caption: me.textOuterTop,
value: 'OuterTopData',
stopPropagation: true,
toggleGroup: 'dataLabels',
checkable: true
},
{
caption: me.textTop,
value: 'TopData',
stopPropagation: true,
toggleGroup: 'dataLabels',
checkable: true
},
{
caption: me.textLeft,
value: 'LeftData',
stopPropagation: true,
toggleGroup: 'dataLabels',
checkable: true
},
{
caption: me.textRight,
value: 'RightData',
stopPropagation: true,
toggleGroup: 'dataLabels',
checkable: true
},
{
caption: me.textBottom,
value: 'BottomData',
stopPropagation: true,
toggleGroup: 'dataLabels',
checkable: true
},
{
caption: me.textFit,
value: 'FitWidthData',
stopPropagation: true,
toggleGroup: 'dataLabels',
checkable: true
}
]
})
},
{
caption: me.textErrorBars,
value: 'errorBars',
disabled: false,
menu: new Common.UI.Menu({
cls: 'shifted-right',
menuAlign: 'tl-tr',
items: [
{
caption: me.textStandardError,
value: 'standardError',
stopPropagation: true,
disabled: false
},
{
caption: me.txtPercentage,
value: 'percentage',
stopPropagation: true,
disabled: false
},
{
caption: me.textStandardDeviation,
value: 'standardDeviation',
stopPropagation: true,
disabled: false
}
]
})
},
{
caption: me.textGridLines,
value: 'gridLines',
disabled: false,
menu: new Common.UI.Menu({
cls: 'shifted-right',
menuAlign: 'tl-tr',
items: [
{
caption: me.textHorizontalMajor,
value: 'bShowHorMajor',
stopPropagation: true,
checkable: true
},
{
caption: me.textVerticalMajor,
value: 'bShowVerMajor',
stopPropagation: true,
checkable: true
},
{
caption: me.textHorizontalMinor,
value: 'bShowHorMinor',
stopPropagation: true,
checkable: true
},
{
caption: me.textVerticalMinor,
value: 'bShowVerMinor',
stopPropagation: true,
checkable: true
}
]
})
},
{
caption: me.textLegendPos,
value: 'legend',
disabled: false,
menu: new Common.UI.Menu({
cls: 'shifted-right',
menuAlign: 'tl-tr',
items: [
{
caption: me.textTop,
value: 'TopLegend',
stopPropagation: true,
toggleGroup: 'legend',
checkable: true
},
{
caption: me.textLeft,
value: 'LeftLegend',
stopPropagation: true,
toggleGroup: 'legend',
checkable: true
},
{
caption: me.textRight,
value: 'RightLegend',
stopPropagation: true,
toggleGroup: 'legend',
checkable: true
},
{
caption: me.textBottom,
value: 'BottomLegend',
stopPropagation: true,
toggleGroup: 'legend',
checkable: true
},
{
caption: me.textLeftOverlay,
value: 'LeftOverlay',
stopPropagation: true,
toggleGroup: 'legend',
checkable: true
},
{
caption: me.textRightOverlay,
value: 'RightOverlay',
stopPropagation: true,
toggleGroup: 'legend',
checkable: true
}
]
})
},
{
caption: me.textTrendline,
value: 'trendLines',
disabled: false,
menu: new Common.UI.Menu({
cls: 'shifted-right',
menuAlign: 'tl-tr',
items: [
{
caption: me.textNone,
stopPropagation: true,
value: 'trendLineNone'
},
{
caption: me.textLinear,
stopPropagation: true,
value: 'trendLineLinear'
},
{
caption: me.textExponential,
stopPropagation: true,
value: 'trendLineExponential'
},
{
caption: me.textLinearForecast,
stopPropagation: true,
value: 'trendLineForecast'
},
{
caption: me.textMovingAverage,
stopPropagation: true,
value: 'trendLineMovingAverage'
}
]
})
},
{
caption: me.textUpDownBars,
value: 'upDownBars',
disabled: false,
menu: new Common.UI.Menu({
cls: 'shifted-right',
menuAlign: 'tl-tr',
items: [
{
caption: me.textNone,
stopPropagation: true,
value: 'bShowUpDownNone'
},
{
caption: me.textShowUpDown,
stopPropagation: true,
value: 'bShowUpDownBars'
}
]
})
}
]
})
});
var menuImgShapeSeparator = new Common.UI.MenuItem({
caption : '--'
});

View File

@ -1472,6 +1472,49 @@
"PDFE.Views.DocumentHolder.txtWarnUrl": "Clicking this link can be harmful to your device and data.<br>Are you sure you want to continue?",
"PDFE.Views.DocumentHolder.unicodeText": "Unicode",
"PDFE.Views.DocumentHolder.vertAlignText": "Vertical alignment",
"PDFE.Views.DocumentHolder.textAxes": "Axes",
"PDFE.Views.DocumentHolder.textAxisTitles": "Axis Titles",
"PDFE.Views.DocumentHolder.textGridLines": "Gridlines",
"PDFE.Views.DocumentHolder.textHorAxis": "Horizontal axis",
"PDFE.Views.DocumentHolder.textHorAxisSec": "Secondary horizontal axis",
"PDFE.Views.DocumentHolder.textHorizontalMajor": "Horizontal Major",
"PDFE.Views.DocumentHolder.textHorizontalMinor": "Horizontal Minor",
"PDFE.Views.DocumentHolder.textVertAxis": "Vertical axis",
"PDFE.Views.DocumentHolder.textVertAxisSec": "Secondary vertical axis",
"PDFE.Views.DocumentHolder.textVerticalMajor": "Vertical Major",
"PDFE.Views.DocumentHolder.textVerticalMinor": "Vertical Minor",
"PDFE.Views.DocumentHolder.DepthAxis": "Z axis",
"PDFE.Views.DocumentHolder.textChartTitle": "Chart Title",
"PDFE.Views.DocumentHolder.textNone": "None",
"PDFE.Views.DocumentHolder.textNoOverlay": "No overlay",
"PDFE.Views.DocumentHolder.textOverlay": "Overlay",
"PDFE.Views.DocumentHolder.textDataLabels": "Data labels",
"PDFE.Views.DocumentHolder.textCenter": "Center",
"PDFE.Views.DocumentHolder.textInnerBottom": "Inner bottom",
"PDFE.Views.DocumentHolder.textInnerTop": "Inner top",
"PDFE.Views.DocumentHolder.textOuterTop": "Outer top",
"PDFE.Views.DocumentHolder.textTop": "Top",
"PDFE.Views.DocumentHolder.textLeftData": "Left",
"PDFE.Views.DocumentHolder.textRight": "Right",
"PDFE.Views.DocumentHolder.textBottom": "Bottom",
"PDFE.Views.DocumentHolder.textFit": "Fit to width",
"PDFE.Views.DocumentHolder.textErrorBars": "Error Bars",
"PDFE.Views.DocumentHolder.textStandardDeviation": "Standard Deviation",
"PDFE.Views.DocumentHolder.textStandardError": "Standard Error",
"PDFE.Views.DocumentHolder.txtPercentage": "Percentage",
"PDFE.Views.DocumentHolder.textShowLegendKeys": "Show Legend Keys",
"PDFE.Views.DocumentHolder.textShowUpDown": "Show Up/Down Bars",
"PDFE.Views.DocumentHolder.textExponential": "Exponential",
"PDFE.Views.DocumentHolder.textRightOverlay": "Right overlay",
"PDFE.Views.DocumentHolder.textLeftOverlay": "Left overlay",
"PDFE.Views.DocumentHolder.textLegendPos": "Legend",
"PDFE.Views.DocumentHolder.textLinear": "Linear",
"PDFE.Views.DocumentHolder.textLinearForecast": "Linear Forecast",
"PDFE.Views.DocumentHolder.textLines": "Lines",
"PDFE.Views.DocumentHolder.textMovingAverage": "Moving Average (2)",
"PDFE.Views.DocumentHolder.textTrendline": "Trendline",
"PDFE.Views.DocumentHolder.textUpDownBars": " Up/Down Bars",
"PDFE.Views.DocumentHolder.btnChart": "Add, remove or change chart elements such as the title, legend, gridlines, and data labels",
"PDFE.Views.FileMenu.ariaFileMenu": "File menu",
"PDFE.Views.FileMenu.btnBackCaption": "Open File Location",
"PDFE.Views.FileMenu.btnCloseEditor": "Close File",