diff --git a/apps/presentationeditor/main/app/view/ChartSettings.js b/apps/presentationeditor/main/app/view/ChartSettings.js
index 9ac998a65..9650c68c3 100644
--- a/apps/presentationeditor/main/app/view/ChartSettings.js
+++ b/apps/presentationeditor/main/app/view/ChartSettings.js
@@ -486,6 +486,7 @@ define([
(new PE.Views.ChartSettingsAdvanced(
{
chartProps: elValue,
+ slideSize: PE.getController('Toolbar').currentPageSize,
handler: function(result, value) {
if (result == 'ok') {
if (me.api) {
diff --git a/apps/presentationeditor/main/app/view/ChartSettingsAdvanced.js b/apps/presentationeditor/main/app/view/ChartSettingsAdvanced.js
index 5b5a0155a..4064fba12 100644
--- a/apps/presentationeditor/main/app/view/ChartSettingsAdvanced.js
+++ b/apps/presentationeditor/main/app/view/ChartSettingsAdvanced.js
@@ -50,13 +50,15 @@ define([ 'text!presentationeditor/main/app/template/ChartSettingsAdvanced.tem
height: 342,
toggleGroup: 'chart-adv-settings-group',
properties: null,
- storageName: 'pe-chart-settings-adv-category'
+ storageName: 'pe-chart-settings-adv-category',
+ sizeMax: {width: 55.88, height: 55.88},
},
initialize : function(options) {
_.extend(this.options, {
title: this.textTitle,
items: [
+ {panelId: 'id-adv-chart-placement', panelCaption: this.textPlacement},
{panelId: 'id-adv-chart-alttext', panelCaption: this.textAlt}
],
contentTemplate: _.template(contentTemplate)({
@@ -65,7 +67,10 @@ define([ 'text!presentationeditor/main/app/template/ChartSettingsAdvanced.tem
}, options);
Common.Views.AdvancedSettingsWindow.prototype.initialize.call(this, this.options);
+ this.spinners = [];
+
this._originalProps = this.options.chartProps;
+ this.slideSize = this.options.slideSize;
this._changedProps = null;
},
@@ -74,6 +79,125 @@ define([ 'text!presentationeditor/main/app/template/ChartSettingsAdvanced.tem
var me = this;
+ // Placement
+
+ this.spnWidth = new Common.UI.MetricSpinner({
+ el: $('#chart-advanced-spin-width'),
+ step: .1,
+ width: 100,
+ defaultUnit : "cm",
+ value: '3 cm',
+ maxValue: 55.88,
+ minValue: 0
+ });
+ this.spnWidth.on('change', _.bind(function(field){
+ if (this.btnRatio.pressed) {
+ var w = field.getNumberValue();
+ var h = w/this._nRatio;
+ if (h>this.sizeMax.height) {
+ h = this.sizeMax.height;
+ w = h * this._nRatio;
+ this.spnWidth.setValue(w, true);
+ }
+ this.spnHeight.setValue(h, true);
+ }
+ if (this._changedProps) {
+ this._changedProps.put_Width(Common.Utils.Metric.fnRecalcToMM(field.getNumberValue()));
+ this._changedProps.put_Height(Common.Utils.Metric.fnRecalcToMM(this.spnHeight.getNumberValue()));
+ }
+ }, this));
+ this.spinners.push(this.spnWidth);
+
+ this.spnHeight = new Common.UI.MetricSpinner({
+ el: $('#chart-advanced-spin-height'),
+ step: .1,
+ width: 100,
+ defaultUnit : "cm",
+ value: '3 cm',
+ maxValue: 55.88,
+ minValue: 0
+ });
+ this.spnHeight.on('change', _.bind(function(field, newValue, oldValue, eOpts){
+ var h = field.getNumberValue(), w = null;
+ if (this.btnRatio.pressed) {
+ w = h * this._nRatio;
+ if (w>this.sizeMax.width) {
+ w = this.sizeMax.width;
+ h = w/this._nRatio;
+ this.spnHeight.setValue(h, true);
+ }
+ this.spnWidth.setValue(w, true);
+ }
+ if (this._changedProps) {
+ this._changedProps.put_Height(Common.Utils.Metric.fnRecalcToMM(field.getNumberValue()));
+ this._changedProps.put_Width(Common.Utils.Metric.fnRecalcToMM(this.spnWidth.getNumberValue()));
+ }
+ }, this));
+ this.spinners.push(this.spnHeight);
+
+ this.btnRatio = new Common.UI.Button({
+ parentEl: $('#chart-advanced-button-ratio'),
+ cls: 'btn-toolbar',
+ iconCls: 'toolbar__icon advanced-btn-ratio',
+ style: 'margin-bottom: 1px;',
+ enableToggle: true,
+ hint: this.textKeepRatio
+ });
+ this.btnRatio.on('click', _.bind(function(btn, e) {
+ if (btn.pressed && this.spnHeight.getNumberValue()>0) {
+ this._nRatio = this.spnWidth.getNumberValue()/this.spnHeight.getNumberValue();
+ }
+ if (this._changedProps) {
+ this._changedProps.asc_putLockAspect(btn.pressed);
+ }
+ }, this));
+
+ this.spnX = new Common.UI.MetricSpinner({
+ el: $('#chart-advanced-spin-x'),
+ step: .1,
+ width: 85,
+ defaultUnit : "cm",
+ defaultValue : 0,
+ value: '0 cm',
+ maxValue: 55.87,
+ minValue: -55.87
+ });
+ this.spinners.push(this.spnX);
+
+ this.spnY = new Common.UI.MetricSpinner({
+ el: $('#chart-advanced-spin-y'),
+ step: .1,
+ width: 85,
+ defaultUnit : "cm",
+ defaultValue : 0,
+ value: '0 cm',
+ maxValue: 55.87,
+ minValue: -55.87
+ });
+ this.spinners.push(this.spnY);
+
+ this.cmbFromX = new Common.UI.ComboBox({
+ el: $('#chart-advanced-combo-from-x'),
+ cls: 'input-group-nr',
+ style: "width: 100px;",
+ menuStyle: 'min-width: 100px;',
+ data: [
+ { value: 'left', displayValue: this.textTopLeftCorner },
+ { value: 'center', displayValue: this.textCenter }
+ ]
+ });
+
+ this.cmbFromY = new Common.UI.ComboBox({
+ el: $('#chart-advanced-combo-from-y'),
+ cls: 'input-group-nr',
+ style: "width: 100px;",
+ menuStyle: 'min-width: 100px;',
+ data: [
+ { value: 'left', displayValue: this.textTopLeftCorner },
+ { value: 'center', displayValue: this.textCenter }
+ ]
+ });
+
// Alt Text
this.inputAltTitle = new Common.UI.InputField({
@@ -97,6 +221,7 @@ define([ 'text!presentationeditor/main/app/template/ChartSettingsAdvanced.tem
},
afterRender: function() {
+ this.updateMetricUnit();
this._setDefaults(this._originalProps);
if (this.storageName) {
var value = Common.localStorage.getItem(this.storageName);
@@ -125,6 +250,28 @@ define([ 'text!presentationeditor/main/app/template/ChartSettingsAdvanced.tem
_setDefaults: function(props) {
if (props ){
+ this.spnWidth.setMaxValue(this.sizeMax.width);
+ this.spnHeight.setMaxValue(this.sizeMax.height);
+ this.spnWidth.setValue(Common.Utils.Metric.fnRecalcFromMM(props.get_Width()).toFixed(2), true);
+ this.spnHeight.setValue(Common.Utils.Metric.fnRecalcFromMM(props.get_Height()).toFixed(2), true);
+
+ var value = props.asc_getLockAspect();
+ this.btnRatio.toggle(value);
+ if (props.get_Height()>0)
+ this._nRatio = props.get_Width()/props.get_Height();
+
+ this.cmbFromX.setValue('left');
+ this.cmbFromY.setValue('left');
+
+ /*if (props.get_Position()) {
+ var Position = {X: props.get_Position().get_X(), Y: props.get_Position().get_Y()};
+ this.spnX.setValue((Position.X !== null && Position.X !== undefined) ? Common.Utils.Metric.fnRecalcFromMM(Position.X) : '', true);
+ this.spnY.setValue((Position.Y !== null && Position.Y !== undefined) ? Common.Utils.Metric.fnRecalcFromMM(Position.Y) : '', true);
+ } else {*/
+ this.spnX.setValue('', true);
+ this.spnY.setValue('', true);
+ /*}*/
+
var value = props.asc_getTitle();
this.inputAltTitle.setValue(value ? value : '');
@@ -136,6 +283,23 @@ define([ 'text!presentationeditor/main/app/template/ChartSettingsAdvanced.tem
},
getSettings: function() {
+ /*var Position = new Asc.CPosition();
+ if (this.spnX.getValue() !== '') {
+ var x = Common.Utils.Metric.fnRecalcToMM(this.spnX.getNumberValue());
+ if (this.cmbFromX.getValue() === 'center') {
+ x = (this.slideSize.width/36000)/2 + x;
+ }
+ Position.put_X(x);
+ }
+ if (this.spnY.getValue() !== '') {
+ var y = Common.Utils.Metric.fnRecalcToMM(this.spnY.getNumberValue());
+ if (this.cmbFromY.getValue() === 'center') {
+ y = (this.slideSize.height/36000)/2 + y;
+ }
+ Position.put_Y(y);
+ }
+ this._changedProps.put_Position(Position);*/
+
if (this.isAltTitleChanged)
this._changedProps.asc_putTitle(this.inputAltTitle.getValue());
@@ -145,11 +309,36 @@ define([ 'text!presentationeditor/main/app/template/ChartSettingsAdvanced.tem
return { chartProps: this._changedProps} ;
},
+ updateMetricUnit: function() {
+ if (this.spinners) {
+ for (var i=0; i