/* * (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 * */ define(["text!spreadsheeteditor/main/app/template/ChartSettingsDlg.template", "common/main/lib/view/AdvancedSettingsWindow", "common/main/lib/component/CheckBox", "common/main/lib/component/InputField", "spreadsheeteditor/main/app/view/CellRangeDialog"], function (contentTemplate) { SSE.Views.ChartSettingsDlg = Common.Views.AdvancedSettingsWindow.extend(_.extend({ options: { contentWidth: 320, height: 535, toggleGroup: "chart-settings-dlg-group" }, initialize: function (options) { _.extend(this.options, { title: this.textTitle, items: [{ panelId: "id-chart-settings-dlg-style", panelCaption: this.textTypeData }, { panelId: "id-chart-settings-dlg-layout", panelCaption: this.textLayout }, { panelId: "id-chart-settings-dlg-vert", panelCaption: this.textVertAxis }, { panelId: "id-chart-settings-dlg-hor", panelCaption: this.textHorAxis }], contentTemplate: _.template(contentTemplate)({ scope: this }) }, options); this.options.handler = function (result, value) { if (result != "ok" || this.isRangeValid()) { if (options.handler) { options.handler.call(this, result, value); } return; } return true; }; Common.Views.AdvancedSettingsWindow.prototype.initialize.call(this, this.options); this._state = { ChartStyle: 1, ChartType: c_oAscChartTypeSettings.barNormal }; this._noApply = true; this.api = this.options.api; this.chartSettings = this.options.chartSettings; this.vertAxisProps = null; this.horAxisProps = null; this.currentAxisProps = null; this.dataRangeValid = ""; }, render: function () { Common.Views.AdvancedSettingsWindow.prototype.render.call(this); var me = this; var $window = this.getChild(); this.btnChartType = new Common.UI.Button({ cls: "btn-large-dataview", iconCls: "item-chartlist bar-normal", menu: new Common.UI.Menu({ style: "width: 330px;", items: [{ template: _.template('') }] }) }); this.btnChartType.on("render:after", function (btn) { me.mnuChartTypePicker = new Common.UI.DataView({ el: $("#id-chart-dlg-menu-type"), parentMenu: btn.menu, restoreHeight: 411, groups: new Common.UI.DataViewGroupStore([{ id: "menu-chart-group-bar", caption: me.textColumn }, { id: "menu-chart-group-line", caption: me.textLine }, { id: "menu-chart-group-pie", caption: me.textPie }, { id: "menu-chart-group-hbar", caption: me.textBar }, { id: "menu-chart-group-area", caption: me.textArea }, { id: "menu-chart-group-scatter", caption: me.textPoint }, { id: "menu-chart-group-stock", caption: me.textStock }]), store: new Common.UI.DataViewStore([{ group: "menu-chart-group-bar", type: c_oAscChartTypeSettings.barNormal, iconCls: "column-normal", selected: true }, { group: "menu-chart-group-bar", type: c_oAscChartTypeSettings.barStacked, iconCls: "column-stack" }, { group: "menu-chart-group-bar", type: c_oAscChartTypeSettings.barStackedPer, iconCls: "column-pstack" }, { group: "menu-chart-group-line", type: c_oAscChartTypeSettings.lineNormal, iconCls: "line-normal" }, { group: "menu-chart-group-line", type: c_oAscChartTypeSettings.lineStacked, iconCls: "line-stack" }, { group: "menu-chart-group-line", type: c_oAscChartTypeSettings.lineStackedPer, iconCls: "line-pstack" }, { group: "menu-chart-group-pie", type: c_oAscChartTypeSettings.pie, iconCls: "pie-normal" }, { group: "menu-chart-group-pie", type: c_oAscChartTypeSettings.doughnut, iconCls: "pie-doughnut" }, { group: "menu-chart-group-hbar", type: c_oAscChartTypeSettings.hBarNormal, iconCls: "bar-normal" }, { group: "menu-chart-group-hbar", type: c_oAscChartTypeSettings.hBarStacked, iconCls: "bar-stack" }, { group: "menu-chart-group-hbar", type: c_oAscChartTypeSettings.hBarStackedPer, iconCls: "bar-pstack" }, { group: "menu-chart-group-area", type: c_oAscChartTypeSettings.areaNormal, iconCls: "area-normal" }, { group: "menu-chart-group-area", type: c_oAscChartTypeSettings.areaStacked, iconCls: "area-stack" }, { group: "menu-chart-group-area", type: c_oAscChartTypeSettings.areaStackedPer, iconCls: "area-pstack" }, { group: "menu-chart-group-scatter", type: c_oAscChartTypeSettings.scatter, iconCls: "point-normal" }, { group: "menu-chart-group-stock", type: c_oAscChartTypeSettings.stock, iconCls: "stock-normal" }]), itemTemplate: _.template('
') }); }); this.btnChartType.render($("#chart-dlg-button-type")); this.mnuChartTypePicker.on("item:click", _.bind(this.onSelectType, this, this.btnChartType)); this.btnChartStyle = new Common.UI.Button({ cls: "btn-large-dataview", iconCls: "item-wrap", menu: new Common.UI.Menu({ items: [{ template: _.template('
') }] }) }); this.btnChartStyle.on("render:after", function (btn) { me.mnuChartStylePicker = new Common.UI.DataView({ el: $("#id-chart-dlg-menu-style"), parentMenu: btn.menu, style: "max-height: 411px;", store: new Common.UI.DataViewStore(), itemTemplate: _.template('
') }); if (me.btnChartStyle.menu) { me.btnChartStyle.menu.on("show:after", function () { me.mnuChartStylePicker.scroller.update({ alwaysVisibleY: true }); }); } }); this.btnChartStyle.render($("#chart-dlg-button-style")); this.mnuChartStylePicker.on("item:click", _.bind(this.onSelectStyle, this, this.btnChartStyle)); this.cmbDataDirect = new Common.UI.ComboBox({ el: $("#chart-dlg-combo-range"), menuStyle: "min-width: 120px;", editable: false, cls: "input-group-nr", data: [{ value: 0, displayValue: this.textDataRows }, { value: 1, displayValue: this.textDataColumns }] }); this.txtDataRange = new Common.UI.InputField({ el: $("#chart-dlg-txt-range"), name: "range", style: "width: 100%;", allowBlank: true, blankError: this.txtEmpty, validateOnChange: true }); this.btnSelectData = new Common.UI.Button({ el: $("#chart-dlg-btn-data") }); this.btnSelectData.on("click", _.bind(this.onSelectData, this)); this.cmbChartTitle = new Common.UI.ComboBox({ el: $("#chart-dlg-combo-chart-title"), menuStyle: "min-width: 140px;", editable: false, cls: "input-group-nr", data: [{ value: c_oAscChartTitleShowSettings.none, displayValue: this.textNone }, { value: c_oAscChartTitleShowSettings.overlay, displayValue: this.textOverlay }, { value: c_oAscChartTitleShowSettings.noOverlay, displayValue: this.textNoOverlay }] }); this.cmbLegendPos = new Common.UI.ComboBox({ el: $("#chart-dlg-combo-legend-pos"), menuStyle: "min-width: 140px;", editable: false, cls: "input-group-nr", data: [{ value: c_oAscChartLegendShowSettings.none, displayValue: this.textNone }, { value: c_oAscChartLegendShowSettings.bottom, displayValue: this.textLegendBottom }, { value: c_oAscChartLegendShowSettings.top, displayValue: this.textLegendTop }, { value: c_oAscChartLegendShowSettings.right, displayValue: this.textLegendRight }, { value: c_oAscChartLegendShowSettings.left, displayValue: this.textLegendLeft }, { value: c_oAscChartLegendShowSettings.leftOverlay, displayValue: this.textLeftOverlay }, { value: c_oAscChartLegendShowSettings.rightOverlay, displayValue: this.textRightOverlay }] }); this.cmbHorTitle = new Common.UI.ComboBox({ el: $("#chart-dlg-combo-hor-title"), menuStyle: "min-width: 140px;", editable: false, cls: "input-group-nr", data: [{ value: c_oAscChartHorAxisLabelShowSettings.none, displayValue: this.textNone }, { value: c_oAscChartHorAxisLabelShowSettings.noOverlay, displayValue: this.textNoOverlay }] }); this.cmbVertTitle = new Common.UI.ComboBox({ el: $("#chart-dlg-combo-vert-title"), menuStyle: "min-width: 140px;", editable: false, cls: "input-group-nr", data: [{ value: c_oAscChartVertAxisLabelShowSettings.none, displayValue: this.textNone }, { value: c_oAscChartVertAxisLabelShowSettings.rotated, displayValue: this.textRotated }, { value: c_oAscChartVertAxisLabelShowSettings.horizontal, displayValue: this.textHorizontal }] }); this.cmbHorGrid = new Common.UI.ComboBox({ el: $("#chart-dlg-combo-hor-grid"), menuStyle: "min-width: 140px;", editable: false, cls: "input-group-nr", data: [{ value: c_oAscGridLinesSettings.none, displayValue: this.textNone }, { value: c_oAscGridLinesSettings.major, displayValue: this.textMajor }, { value: c_oAscGridLinesSettings.minor, displayValue: this.textMinor }, { value: c_oAscGridLinesSettings.majorMinor, displayValue: this.textMajorMinor }] }); this.cmbVertGrid = new Common.UI.ComboBox({ el: $("#chart-dlg-combo-vert-grid"), menuStyle: "min-width: 140px;", editable: false, cls: "input-group-nr", data: [{ value: c_oAscGridLinesSettings.none, displayValue: this.textNone }, { value: c_oAscGridLinesSettings.major, displayValue: this.textMajor }, { value: c_oAscGridLinesSettings.minor, displayValue: this.textMinor }, { value: c_oAscGridLinesSettings.majorMinor, displayValue: this.textMajorMinor }] }); this.cmbDataLabels = new Common.UI.ComboBox({ el: $("#chart-dlg-combo-data-labels"), menuStyle: "min-width: 140px;", editable: false, cls: "input-group-nr", data: [{ value: c_oAscChartDataLabelsPos.none, displayValue: this.textNone }, { value: c_oAscChartDataLabelsPos.ctr, displayValue: this.textCenter }, { value: c_oAscChartDataLabelsPos.inBase, displayValue: this.textInnerBottom }, { value: c_oAscChartDataLabelsPos.inEnd, displayValue: this.textInnerTop }, { value: c_oAscChartDataLabelsPos.outEnd, displayValue: this.textOuterTop }] }); this.cmbDataLabels.on("selected", _.bind(me.onSelectDataLabels, this)); this.txtSeparator = new Common.UI.InputField({ el: $("#chart-dlg-txt-separator"), name: "range", style: "width: 100%;", allowBlank: true, blankError: this.txtEmpty }); this.chSeriesName = new Common.UI.CheckBox({ el: $("#chart-dlg-check-series"), labelText: this.textSeriesName }); this.chCategoryName = new Common.UI.CheckBox({ el: $("#chart-dlg-check-category"), labelText: this.textCategoryName }); this.chValue = new Common.UI.CheckBox({ el: $("#chart-dlg-check-value"), labelText: this.textValue }); this.cmbLines = new Common.UI.ComboBox({ el: $("#chart-dlg-combo-lines"), menuStyle: "min-width: 140px;", editable: false, cls: "input-group-nr", data: [{ value: 0, displayValue: this.textNone }, { value: 1, displayValue: this.textStraight }, { value: 2, displayValue: this.textSmooth }] }); this.chMarkers = new Common.UI.CheckBox({ el: $("#chart-dlg-check-markers"), labelText: this.textMarkers }); this.lblLines = $("#chart-dlg-label-lines"); this.cmbMinType = new Common.UI.ComboBox({ el: $("#chart-dlg-combo-mintype"), cls: "input-group-nr", menuStyle: "min-width: 100px;", editable: false, data: [{ displayValue: this.textAuto, value: c_oAscValAxisRule.auto }, { displayValue: this.textFixed, value: c_oAscValAxisRule.fixed }] }).on("selected", _.bind(function (combo, record) { if (this.currentAxisProps) { this.currentAxisProps.putMinValRule(record.value); } }, this)); this.spnMinValue = new Common.UI.MetricSpinner({ el: $("#chart-dlg-input-min-value"), maxValue: 1000000, minValue: -1000000, step: 0.1, defaultUnit: "", defaultValue: 0, value: "" }).on("change", _.bind(function (field, newValue, oldValue) { this.cmbMinType.suspendEvents(); this.cmbMinType.setValue(c_oAscValAxisRule.fixed); this.cmbMinType.resumeEvents(); if (this.currentAxisProps) { this.currentAxisProps.putMinValRule(c_oAscValAxisRule.fixed); this.currentAxisProps.putMinVal(field.getNumberValue()); } }, this)); this.cmbMaxType = new Common.UI.ComboBox({ el: $("#chart-dlg-combo-maxtype"), cls: "input-group-nr", menuStyle: "min-width: 100px;", editable: false, data: [{ displayValue: this.textAuto, value: c_oAscValAxisRule.auto }, { displayValue: this.textFixed, value: c_oAscValAxisRule.fixed }] }).on("selected", _.bind(function (combo, record) { if (this.currentAxisProps) { this.currentAxisProps.putMaxValRule(record.value); } }, this)); this.spnMaxValue = new Common.UI.MetricSpinner({ el: $("#chart-dlg-input-max-value"), maxValue: 1000000, minValue: -1000000, step: 0.1, defaultUnit: "", defaultValue: 0, value: "" }).on("change", _.bind(function (field, newValue, oldValue) { this.cmbMaxType.suspendEvents(); this.cmbMaxType.setValue(c_oAscValAxisRule.fixed); this.cmbMaxType.resumeEvents(); if (this.currentAxisProps) { this.currentAxisProps.putMaxValRule(c_oAscValAxisRule.fixed); this.currentAxisProps.putMaxVal(field.getNumberValue()); } }, this)); this.cmbVCrossType = new Common.UI.ComboBox({ el: $("#chart-dlg-combo-v-crosstype"), cls: "input-group-nr", menuStyle: "min-width: 100px;", editable: false, data: [{ displayValue: this.textAuto, value: c_oAscCrossesRule.auto }, { displayValue: this.textValue, value: c_oAscCrossesRule.value }, { displayValue: this.textMinValue, value: c_oAscCrossesRule.minValue }, { displayValue: this.textMaxValue, value: c_oAscCrossesRule.maxValue }] }).on("selected", _.bind(function (combo, record) { if (this.currentAxisProps) { this.currentAxisProps.putCrossesRule(record.value); } }, this)); this.spnVAxisCrosses = new Common.UI.MetricSpinner({ el: $("#chart-dlg-input-v-axis-crosses"), maxValue: 1000000, minValue: -1000000, step: 0.1, defaultUnit: "", defaultValue: 0, value: "" }).on("change", _.bind(function (field, newValue, oldValue) { this.cmbVCrossType.suspendEvents(); this.cmbVCrossType.setValue(c_oAscCrossesRule.value); this.cmbVCrossType.resumeEvents(); if (this.currentAxisProps) { this.currentAxisProps.putCrossesRule(c_oAscCrossesRule.value); this.currentAxisProps.putCrosses(field.getNumberValue()); } }, this)); this.cmbUnits = new Common.UI.ComboBox({ el: $("#chart-dlg-combo-units"), cls: "input-group-nr", menuStyle: "min-width: 140px;", editable: false, data: [{ displayValue: this.textNone, value: c_oAscValAxUnits.none }, { displayValue: this.textHundreds, value: c_oAscValAxUnits.HUNDREDS }, { displayValue: this.textThousands, value: c_oAscValAxUnits.THOUSANDS }, { displayValue: this.textTenThousands, value: c_oAscValAxUnits.TEN_THOUSANDS }, { displayValue: this.textHundredThousands, value: c_oAscValAxUnits.HUNDRED_THOUSANDS }, { displayValue: this.textMillions, value: c_oAscValAxUnits.MILLIONS }, { displayValue: this.textTenMillions, value: c_oAscValAxUnits.TEN_MILLIONS }, { displayValue: this.textHundredMil, value: c_oAscValAxUnits.HUNDRED_MILLIONS }, { displayValue: this.textBillions, value: c_oAscValAxUnits.BILLIONS }, { displayValue: this.textTrillions, value: c_oAscValAxUnits.TRILLIONS }] }).on("selected", _.bind(function (combo, record) { if (this.currentAxisProps) { this.currentAxisProps.putDispUnitsRule(record.value); } }, this)); this.chVReverse = new Common.UI.CheckBox({ el: $("#chart-dlg-check-v-reverse"), labelText: this.textReverse }).on("change", _.bind(function (checkbox, state) { if (this.currentAxisProps) { this.currentAxisProps.putInvertValOrder(state == "checked"); } }, this)); this.cmbVMajorType = new Common.UI.ComboBox({ el: $("#chart-dlg-combo-v-major-type"), cls: "input-group-nr", menuStyle: "min-width: 140px;", editable: false, data: [{ displayValue: this.textNone, value: c_oAscTickMark.TICK_MARK_NONE }, { displayValue: this.textCross, value: c_oAscTickMark.TICK_MARK_CROSS }, { displayValue: this.textIn, value: c_oAscTickMark.TICK_MARK_IN }, { displayValue: this.textOut, value: c_oAscTickMark.TICK_MARK_OUT }] }).on("selected", _.bind(function (combo, record) { if (this.currentAxisProps) { this.currentAxisProps.putMajorTickMark(record.value); } }, this)); this.cmbVMinorType = new Common.UI.ComboBox({ el: $("#chart-dlg-combo-v-minor-type"), cls: "input-group-nr", menuStyle: "min-width: 140px;", editable: false, data: [{ displayValue: this.textNone, value: c_oAscTickMark.TICK_MARK_NONE }, { displayValue: this.textCross, value: c_oAscTickMark.TICK_MARK_CROSS }, { displayValue: this.textIn, value: c_oAscTickMark.TICK_MARK_IN }, { displayValue: this.textOut, value: c_oAscTickMark.TICK_MARK_OUT }] }).on("selected", _.bind(function (combo, record) { if (this.currentAxisProps) { this.currentAxisProps.putMinorTickMark(record.value); } }, this)); this.cmbVLabelPos = new Common.UI.ComboBox({ el: $("#chart-dlg-combo-v-label-pos"), cls: "input-group-nr", menuStyle: "min-width: 140px;", editable: false, data: [{ displayValue: this.textNone, value: c_oAscTickLabelsPos.TICK_LABEL_POSITION_NONE }, { displayValue: this.textLow, value: c_oAscTickLabelsPos.TICK_LABEL_POSITION_LOW }, { displayValue: this.textHigh, value: c_oAscTickLabelsPos.TICK_LABEL_POSITION_HIGH }, { displayValue: this.textNextToAxis, value: c_oAscTickLabelsPos.TICK_LABEL_POSITION_NEXT_TO }] }).on("selected", _.bind(function (combo, record) { if (this.currentAxisProps) { this.currentAxisProps.putTickLabelsPos(record.value); } }, this)); this.cmbHCrossType = new Common.UI.ComboBox({ el: $("#chart-dlg-combo-h-crosstype"), cls: "input-group-nr", menuStyle: "min-width: 100px;", editable: false, data: [{ displayValue: this.textAuto, value: c_oAscCrossesRule.auto }, { displayValue: this.textValue, value: c_oAscCrossesRule.value }, { displayValue: this.textMinValue, value: c_oAscCrossesRule.minValue }, { displayValue: this.textMaxValue, value: c_oAscCrossesRule.maxValue }] }).on("selected", _.bind(function (combo, record) { if (this.currentAxisProps) { this.currentAxisProps.putCrossesRule(record.value); } }, this)); this.spnHAxisCrosses = new Common.UI.MetricSpinner({ el: $("#chart-dlg-input-h-axis-crosses"), maxValue: 1000000, minValue: -1000000, step: 0.1, defaultUnit: "", defaultValue: 0, value: "" }).on("change", _.bind(function (field, newValue, oldValue) { this.cmbHCrossType.suspendEvents(); this.cmbHCrossType.setValue(c_oAscCrossesRule.value); this.cmbHCrossType.resumeEvents(); if (this.currentAxisProps) { this.currentAxisProps.putCrossesRule(c_oAscCrossesRule.value); this.currentAxisProps.putCrosses(field.getNumberValue()); } }, this)); this.cmbAxisPos = new Common.UI.ComboBox({ el: $("#chart-dlg-combo-axis-pos"), cls: "input-group-nr", menuStyle: "min-width: 140px;", editable: false, data: [{ displayValue: this.textOnTickMarks, value: c_oAscLabelsPosition.byDivisions }, { displayValue: this.textBetweenTickMarks, value: c_oAscLabelsPosition.betweenDivisions }] }).on("selected", _.bind(function (combo, record) { if (this.currentAxisProps) { this.currentAxisProps.putLabelsPosition(record.value); } }, this)); this.chHReverse = new Common.UI.CheckBox({ el: $("#chart-dlg-check-h-reverse"), labelText: this.textReverse }).on("change", _.bind(function (checkbox, state) { if (this.currentAxisProps) { this.currentAxisProps.putInvertCatOrder(state == "checked"); } }, this)); this.cmbHMajorType = new Common.UI.ComboBox({ el: $("#chart-dlg-combo-h-major-type"), cls: "input-group-nr", menuStyle: "min-width: 140px;", editable: false, data: [{ displayValue: this.textNone, value: c_oAscTickMark.TICK_MARK_NONE }, { displayValue: this.textCross, value: c_oAscTickMark.TICK_MARK_CROSS }, { displayValue: this.textIn, value: c_oAscTickMark.TICK_MARK_IN }, { displayValue: this.textOut, value: c_oAscTickMark.TICK_MARK_OUT }] }).on("selected", _.bind(function (combo, record) { if (this.currentAxisProps) { this.currentAxisProps.putMajorTickMark(record.value); } }, this)); this.cmbHMinorType = new Common.UI.ComboBox({ el: $("#chart-dlg-combo-h-minor-type"), cls: "input-group-nr", menuStyle: "min-width: 140px;", editable: false, data: [{ displayValue: this.textNone, value: c_oAscTickMark.TICK_MARK_NONE }, { displayValue: this.textCross, value: c_oAscTickMark.TICK_MARK_CROSS }, { displayValue: this.textIn, value: c_oAscTickMark.TICK_MARK_IN }, { displayValue: this.textOut, value: c_oAscTickMark.TICK_MARK_OUT }] }).on("selected", _.bind(function (combo, record) { if (this.currentAxisProps) { this.currentAxisProps.putMinorTickMark(record.value); } }, this)); this.spnMarksInterval = new Common.UI.MetricSpinner({ el: $("#chart-dlg-input-marks-interval"), width: 140, maxValue: 1000000, minValue: 1, step: 1, defaultUnit: "", value: "" }).on("change", _.bind(function (field, newValue, oldValue) { if (this.currentAxisProps) { this.currentAxisProps.putIntervalBetweenTick(field.getNumberValue()); } }, this)); this.cmbHLabelPos = new Common.UI.ComboBox({ el: $("#chart-dlg-combo-h-label-pos"), cls: "input-group-nr", menuStyle: "min-width: 140px;", editable: false, data: [{ displayValue: this.textNone, value: c_oAscTickLabelsPos.TICK_LABEL_POSITION_NONE }, { displayValue: this.textLow, value: c_oAscTickLabelsPos.TICK_LABEL_POSITION_LOW }, { displayValue: this.textHigh, value: c_oAscTickLabelsPos.TICK_LABEL_POSITION_HIGH }, { displayValue: this.textNextToAxis, value: c_oAscTickLabelsPos.TICK_LABEL_POSITION_NEXT_TO }] }).on("selected", _.bind(function (combo, record) { if (this.currentAxisProps) { this.currentAxisProps.putTickLabelsPos(record.value); } }, this)); this.spnLabelDist = new Common.UI.MetricSpinner({ el: $("#chart-dlg-input-label-dist"), width: 140, maxValue: 1000, minValue: 0, step: 1, defaultUnit: "", value: "" }).on("change", _.bind(function (field, newValue, oldValue) { if (this.currentAxisProps) { this.currentAxisProps.putLabelsAxisDistance(field.getNumberValue()); } }, this)); this.spnLabelInterval = new Common.UI.MetricSpinner({ el: $("#chart-dlg-input-label-int"), width: 140, maxValue: 1000000, minValue: 1, step: 1, defaultUnit: "", value: "" }).on("change", _.bind(function (field, newValue, oldValue) { this.cmbLabelInterval.suspendEvents(); this.cmbLabelInterval.setValue(c_oAscBetweenLabelsRule.manual); this.cmbLabelInterval.resumeEvents(); if (this.currentAxisProps) { this.currentAxisProps.putIntervalBetweenLabelsRule(c_oAscBetweenLabelsRule.manual); this.currentAxisProps.putIntervalBetweenLabels(field.getNumberValue()); } }, this)); this.cmbLabelInterval = new Common.UI.ComboBox({ el: $("#chart-dlg-combo-label-int"), cls: "input-group-nr", menuStyle: "min-width: 140px;", editable: false, data: [{ displayValue: this.textAuto, value: c_oAscBetweenLabelsRule.auto }, { displayValue: this.textManual, value: c_oAscBetweenLabelsRule.manual }] }).on("selected", _.bind(function (combo, record) { if (this.currentAxisProps) { this.currentAxisProps.putIntervalBetweenLabelsRule(record.value); } }, this)); this.btnsCategory[2].on("click", _.bind(this.onVCategoryClick, this)); this.btnsCategory[3].on("click", _.bind(this.onHCategoryClick, this)); this.afterRender(); }, afterRender: function () { if (this.api) { this.updateChartStyles(this.api.asc_getChartPreviews(this._state.ChartType)); } this._setDefaults(this.chartSettings); }, onSelectType: function (btn, picker, itemView, record) { if (this._noApply) { return; } var rawData = {}, isPickerSelect = _.isFunction(record.toJSON); if (isPickerSelect) { if (record.get("selected")) { rawData = record.toJSON(); } else { return; } } else { rawData = record; } this.btnChartType.setIconCls("item-chartlist " + rawData.iconCls); this.updateChartStyles(this.api.asc_getChartPreviews(rawData.type)); this.updateAxisProps(rawData.type, true); this.chartSettings.changeType(rawData.type); this.vertAxisProps = this.chartSettings.getVertAxisProps(); this.horAxisProps = this.chartSettings.getHorAxisProps(); }, updateAxisProps: function (type, isDefault) { var value = (type == c_oAscChartTypeSettings.lineNormal || type == c_oAscChartTypeSettings.lineStacked || type == c_oAscChartTypeSettings.lineStackedPer || type == c_oAscChartTypeSettings.scatter); this.chMarkers.setVisible(value); this.cmbLines.setVisible(value); this.lblLines.toggleClass("hidden", !value); value = (type == c_oAscChartTypeSettings.pie || type == c_oAscChartTypeSettings.doughnut); this.btnsCategory[2].setDisabled(value); this.btnsCategory[3].setDisabled(value); this.cmbHorTitle.setDisabled(value); this.cmbVertTitle.setDisabled(value); this.cmbHorGrid.setDisabled(value); this.cmbVertGrid.setDisabled(value); value = (type == c_oAscChartTypeSettings.hBarNormal || type == c_oAscChartTypeSettings.hBarStacked || type == c_oAscChartTypeSettings.hBarStackedPer); this.btnsCategory[2].options.contentTarget = (value) ? "id-chart-settings-dlg-hor" : "id-chart-settings-dlg-vert"; this.btnsCategory[3].options.contentTarget = (value || type == c_oAscChartTypeSettings.scatter) ? "id-chart-settings-dlg-vert" : "id-chart-settings-dlg-hor"; if (isDefault) { if (value) { this.cmbHorGrid.setValue(c_oAscGridLinesSettings.none); this.cmbVertGrid.setValue(c_oAscGridLinesSettings.major); } else { if (type == c_oAscChartTypeSettings.scatter) { this.cmbHorGrid.setValue(c_oAscGridLinesSettings.major); this.cmbVertGrid.setValue(c_oAscGridLinesSettings.major); this.chMarkers.setValue(true, true); this.cmbLines.setValue(0); } else { if (type == c_oAscChartTypeSettings.barNormal || type == c_oAscChartTypeSettings.barStacked || type == c_oAscChartTypeSettings.barStackedPer || type == c_oAscChartTypeSettings.lineNormal || type == c_oAscChartTypeSettings.lineStacked || type == c_oAscChartTypeSettings.lineStackedPer || type == c_oAscChartTypeSettings.areaNormal || type == c_oAscChartTypeSettings.areaStacked || type == c_oAscChartTypeSettings.areaStackedPer || type == c_oAscChartTypeSettings.stock) { this.cmbHorGrid.setValue(c_oAscGridLinesSettings.major); this.cmbVertGrid.setValue(c_oAscGridLinesSettings.none); if (type == c_oAscChartTypeSettings.lineNormal || type == c_oAscChartTypeSettings.lineStacked || type == c_oAscChartTypeSettings.lineStackedPer) { this.chMarkers.setValue(false, true); this.cmbLines.setValue(1); } } } } } }, onVCategoryClick: function () { (this.vertAxisProps.getAxisType() == c_oAscAxisType.val) ? this.fillVProps(this.vertAxisProps) : this.fillHProps(this.vertAxisProps); }, onHCategoryClick: function () { (this.horAxisProps.getAxisType() == c_oAscAxisType.val) ? this.fillVProps(this.horAxisProps) : this.fillHProps(this.horAxisProps); }, fillVProps: function (props) { if (props.getAxisType() !== c_oAscAxisType.val) { return; } var value = props.getMinValRule(); this.cmbMinType.setValue(value); this.spnMinValue.setValue((value === c_oAscValAxisRule.fixed) ? props.getMinVal() : "", true); value = props.getMaxValRule(); this.cmbMaxType.setValue(value); this.spnMaxValue.setValue((value === c_oAscValAxisRule.fixed) ? props.getMaxVal() : "", true); value = props.getCrossesRule(); this.cmbVCrossType.setValue(value); this.spnVAxisCrosses.setValue((value === c_oAscCrossesRule.value) ? props.getCrosses() : "", true); this.cmbUnits.setValue(props.getDispUnitsRule()); this.chVReverse.setValue(props.getInvertValOrder(), true); this.cmbVMajorType.setValue(props.getMajorTickMark()); this.cmbVMinorType.setValue(props.getMinorTickMark()); this.cmbVLabelPos.setValue(props.getTickLabelsPos()); this.currentAxisProps = props; }, fillHProps: function (props) { if (props.getAxisType() !== c_oAscAxisType.cat) { return; } var value = props.getCrossesRule(); this.cmbHCrossType.setValue(value); this.spnHAxisCrosses.setValue((value === c_oAscCrossesRule.value) ? props.getCrosses() : "", true); this.cmbAxisPos.setValue(props.getLabelsPosition()); this.chHReverse.setValue(props.getInvertCatOrder(), true); this.cmbHMajorType.setValue(props.getMajorTickMark()); this.cmbHMinorType.setValue(props.getMinorTickMark()); this.spnMarksInterval.setValue(props.getIntervalBetweenTick(), true); this.cmbHLabelPos.setValue(props.getTickLabelsPos()); this.spnLabelDist.setValue(props.getLabelsAxisDistance(), true); value = props.getIntervalBetweenLabelsRule(); this.cmbLabelInterval.setValue(value); this.spnLabelInterval.setValue((value === c_oAscBetweenLabelsRule.manual) ? props.getIntervalBetweenLabels() : "", true); this.currentAxisProps = props; }, onSelectStyle: function (btn, picker, itemView, record) { if (this._noApply) { return; } var rawData = {}, isPickerSelect = _.isFunction(record.toJSON); if (isPickerSelect) { if (record.get("selected")) { rawData = record.toJSON(); } else { return; } } else { rawData = record; } var style = "url(" + rawData.imageUrl + ")"; var btnIconEl = this.btnChartStyle.cmpEl.find("span.btn-icon"); btnIconEl.css("background-image", style); this._state.ChartStyle = rawData.data; }, updateChartStyles: function (styles) { var me = this; if (styles && styles.length > 0) { var stylesStore = this.mnuChartStylePicker.store; if (stylesStore) { var stylearray = [], selectedIdx = -1, selectedUrl; _.each(styles, function (item, index) { stylearray.push({ imageUrl: item.asc_getImageUrl(), data: item.asc_getStyle(), tip: me.textStyle + " " + item.asc_getStyle() }); if (me._state.ChartStyle == item.asc_getStyle()) { selectedIdx = index; selectedUrl = item.asc_getImageUrl(); } }); stylesStore.reset(stylearray, { silent: false }); } } this.mnuChartStylePicker.selectByIndex(selectedIdx, true); if (selectedIdx >= 0 && this.btnChartStyle.cmpEl) { var style = "url(" + selectedUrl + ")"; var btnIconEl = this.btnChartStyle.cmpEl.find("span.btn-icon"); btnIconEl.css("background-image", style); } }, _setDefaults: function (props) { var me = this; if (props) { this.chartSettings = props; this._state.ChartType = props.getType(); this._noApply = true; var record = this.mnuChartTypePicker.store.findWhere({ type: this._state.ChartType }); this.mnuChartTypePicker.selectRecord(record, true); if (record) { this.btnChartType.setIconCls("item-chartlist " + record.get("iconCls")); } this.updateChartStyles(this.api.asc_getChartPreviews(this._state.ChartType)); this._noApply = false; this._state.ChartStyle = props.getStyle(); record = this.mnuChartStylePicker.store.findWhere({ data: this._state.ChartStyle }); this.mnuChartStylePicker.selectRecord(record, true); if (record) { var btnIconEl = this.btnChartStyle.cmpEl.find("span.btn-icon"); btnIconEl.css("background-image", "url(" + record.get("imageUrl") + ")"); } var value = props.getRange(); this.txtDataRange.setValue((value) ? value : ""); this.dataRangeValid = value; this.txtDataRange.validation = function (value) { if (_.isEmpty(value)) { if (!me.cmbDataDirect.isDisabled()) { me.cmbDataDirect.setDisabled(true); } return true; } if (me.cmbDataDirect.isDisabled()) { me.cmbDataDirect.setDisabled(false); } var isvalid = me.api.asc_checkDataRange(c_oAscSelectionDialogType.Chart, value, false); return (isvalid == c_oAscError.ID.DataRangeError) ? me.textInvalidRange : true; }; this.cmbDataDirect.setDisabled(value === null); this.cmbDataDirect.setValue(props.getInColumns() ? 1 : 0); this.cmbChartTitle.setValue(props.getTitle()); this.cmbLegendPos.setValue(props.getLegendPos()); this.cmbHorTitle.setValue(props.getHorAxisLabel()); this.cmbVertTitle.setValue(props.getVertAxisLabel()); this.cmbHorGrid.setValue(props.getHorGridLines()); this.cmbVertGrid.setValue(props.getVertGridLines()); this.cmbDataLabels.setValue(props.getDataLabelsPos()); this.onSelectDataLabels(this.cmbDataLabels, { value: props.getDataLabelsPos() }); this.chSeriesName.setValue(this.chartSettings.getShowSerName(), true); this.chCategoryName.setValue(this.chartSettings.getShowCatName(), true); this.chValue.setValue(this.chartSettings.getShowVal(), true); value = props.getSeparator(); this.txtSeparator.setValue((value) ? value : ""); value = (this._state.ChartType == c_oAscChartTypeSettings.lineNormal || this._state.ChartType == c_oAscChartTypeSettings.lineStacked || this._state.ChartType == c_oAscChartTypeSettings.lineStackedPer || this._state.ChartType == c_oAscChartTypeSettings.scatter); this.chMarkers.setVisible(value); this.cmbLines.setVisible(value); this.lblLines.toggleClass("hidden", !value); if (value) { this.chMarkers.setValue(this.chartSettings.getShowMarker(), true); this.cmbLines.setValue(props.getLine() ? (props.getSmooth() ? 2 : 1) : 0); } this.vertAxisProps = props.getVertAxisProps(); this.horAxisProps = props.getHorAxisProps(); this.updateAxisProps(this._state.ChartType); } }, getSettings: function () { var value, type = this.mnuChartTypePicker.getSelectedRec()[0].get("type"); this.chartSettings.putType(type); this.chartSettings.putStyle(this._state.ChartStyle); this.chartSettings.putInColumns(this.cmbDataDirect.getValue() == 1); this.chartSettings.putRange(this.txtDataRange.getValue()); this.chartSettings.putTitle(this.cmbChartTitle.getValue()); this.chartSettings.putLegendPos(this.cmbLegendPos.getValue()); this.chartSettings.putHorAxisLabel(this.cmbHorTitle.getValue()); this.chartSettings.putVertAxisLabel(this.cmbVertTitle.getValue()); this.chartSettings.putHorGridLines(this.cmbHorGrid.getValue()); this.chartSettings.putVertGridLines(this.cmbVertGrid.getValue()); this.chartSettings.putDataLabelsPos(this.cmbDataLabels.getValue()); this.chartSettings.putShowSerName(this.chSeriesName.getValue() == "checked"); this.chartSettings.putShowCatName(this.chCategoryName.getValue() == "checked"); this.chartSettings.putShowVal(this.chValue.getValue() == "checked"); this.chartSettings.putSeparator(_.isEmpty(this.txtSeparator.getValue()) ? " " : this.txtSeparator.getValue()); this.chartSettings.putShowMarker(this.chMarkers.getValue() == "checked"); value = (type == c_oAscChartTypeSettings.lineNormal || type == c_oAscChartTypeSettings.lineStacked || type == c_oAscChartTypeSettings.lineStackedPer || type == c_oAscChartTypeSettings.scatter); if (value) { value = this.cmbLines.getValue(); this.chartSettings.putLine(value !== 0); if (value > 0) { this.chartSettings.putSmooth(value == 2); } } this.chartSettings.putVertAxisProps(this.vertAxisProps); this.chartSettings.putHorAxisProps(this.horAxisProps); return { chartSettings: this.chartSettings }; }, isRangeValid: function () { var isvalid; if (!_.isEmpty(this.txtDataRange.getValue())) { isvalid = this.api.asc_checkDataRange(c_oAscSelectionDialogType.Chart, this.txtDataRange.getValue(), true, this.cmbDataDirect.getValue() == 0, this.mnuChartTypePicker.getSelectedRec()[0].get("type")); if (isvalid == c_oAscError.ID.No) { return true; } } else { this.txtDataRange.showError([this.txtEmpty]); } this.btnsCategory[0].toggle(true); this.onCategoryClick(this.btnsCategory[0]); if (isvalid == c_oAscError.ID.StockChartError) { Common.UI.warning({ msg: this.errorStockChart }); } else { if (isvalid == c_oAscError.ID.MaxDataSeriesError) { Common.UI.warning({ msg: this.errorMaxRows }); } else { this.txtDataRange.cmpEl.find("input").focus(); } } return false; }, onSelectData: function () { var me = this; if (me.api) { var handlerDlg = function (dlg, result) { if (result == "ok") { me.dataRangeValid = dlg.getSettings(); me.txtDataRange.setValue(me.dataRangeValid); me.txtDataRange.checkValidate(); } }; var win = new SSE.Views.CellRangeDialog({ handler: handlerDlg }).on("close", function () { me.show(); }); var xy = me.$window.offset(); me.hide(); win.show(xy.left + 160, xy.top + 125); win.setSettings({ api: me.api, isRows: (me.cmbDataDirect.getValue() == 0), range: (!_.isEmpty(me.txtDataRange.getValue()) && (me.txtDataRange.checkValidate() == true)) ? me.txtDataRange.getValue() : me.dataRangeValid }); } }, onSelectDataLabels: function (obj, rec, e) { var disable = rec.value == c_oAscChartDataLabelsPos.none; this.chSeriesName.setDisabled(disable); this.chCategoryName.setDisabled(disable); this.chValue.setDisabled(disable); this.txtSeparator.setDisabled(disable); }, show: function () { Common.Views.AdvancedSettingsWindow.prototype.show.apply(this, arguments); var me = this; _.delay(function () { me.txtDataRange.cmpEl.find("input").focus(); }, 50); }, textTitle: "Chart - Advanced Settings", textShowValues: "Display chart values", textShowBorders: "Display chart borders", textLine: "Line", textColumn: "Column", textBar: "Bar", textArea: "Area", textPie: "Pie", textPoint: "Point", textStock: "Stock", textDataRows: "in rows", textDataColumns: "in columns", textDisplayLegend: "Display Legend", textLegendBottom: "Bottom", textLegendTop: "Top", textLegendRight: "Right", textLegendLeft: "Left", textShowAxis: "Display Axis", textShowGrid: "Grid Lines", textDataRange: "Data Range", textChartTitle: "Chart Title", textXAxisTitle: "X Axis Title", textYAxisTitle: "Y Axis Title", txtEmpty: "This field is required", textInvalidRange: "ERROR! Invalid cells range", cancelButtonText: "Cancel", textTypeStyle: "Chart Type, Style &
Data Range", textChartElementsLegend: "Chart Elements &
Chart Legend", textLayout: "Layout", textLegendPos: "Legend", textHorTitle: "Horizontal Axis Title", textVertTitle: "Vertical Axis Title", textDataLabels: "Data Labels", textSeparator: "Data Labels Separator", textSeriesName: "Series Name", textCategoryName: "Category Name", textValue: "Value", textAxisOptions: "Axis Options", textMinValue: "Minimum Value", textMaxValue: "Maximum Value", textAxisCrosses: "Axis Crosses", textUnits: "Display Units", textTickOptions: "Tick Options", textMajorType: "Major Type", textMinorType: "Minor Type", textLabelOptions: "Label Options", textLabelPos: "Label Position", textReverse: "Values in reverse order", textVertAxis: "Vertical Axis", textHorAxis: "Horizontal Axis", textMarksInterval: "Interval between Marks", textLabelDist: "Axis Label Distance", textLabelInterval: "Interval between Labels", textAxisPos: "Axis Position", textLeftOverlay: "Left Overlay", textRightOverlay: "Right Overlay", textOverlay: "Overlay", textNoOverlay: "No Overlay", textRotated: "Rotated", textHorizontal: "Horizontal", textInnerBottom: "Inner Bottom", textInnerTop: "Inner Top", textOuterTop: "Outer Top", textNone: "None", textCenter: "Center", textFixed: "Fixed", textAuto: "Auto", textCross: "Cross", textIn: "In", textOut: "Out", textLow: "Low", textHigh: "High", textNextToAxis: "Next to axis", textHundreds: "Hundreds", textThousands: "Thousands", textTenThousands: "10 000", textHundredThousands: "100 000", textMillions: "Millions", textTenMillions: "10 000 000", textHundredMil: "100 000 000", textBillions: "Billions", textTrillions: "Trillions", textCustom: "Custom", textManual: "Manual", textBetweenTickMarks: "Between Tick Marks", textOnTickMarks: "On Tick Marks", textHorGrid: "Horizontal Gridlines", textVertGrid: "Vertical Gridlines", textLines: "Lines", textMarkers: "Markers", textMajor: "Major", textMinor: "Minor", textMajorMinor: "Major and Minor", textStraight: "Straight", textSmooth: "Smooth", textType: "Type", textTypeData: "Type & Data", textStyle: "Style", textSelectData: "Select Data", textDataSeries: "Data series", errorMaxRows: "ERROR! The maximum number of data series per chart is 255.", errorStockChart: "Incorrect row order. To build a stock chart place the data on the sheet in the following order:
opening price, max price, min price, closing price." }, SSE.Views.ChartSettingsDlg || {})); });