diff --git a/apps/pdfeditor/main/app/controller/DocumentHolderExt.js b/apps/pdfeditor/main/app/controller/DocumentHolderExt.js index 7f41660d27..5344aa777f 100644 --- a/apps/pdfeditor/main/app/controller/DocumentHolderExt.js +++ b/apps/pdfeditor/main/app/controller/DocumentHolderExt.js @@ -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 = $('