diff --git a/apps/presentationeditor/main/app/controller/Animation.js b/apps/presentationeditor/main/app/controller/Animation.js index dfa5e5763..37ff4d86d 100644 --- a/apps/presentationeditor/main/app/controller/Animation.js +++ b/apps/presentationeditor/main/app/controller/Animation.js @@ -72,7 +72,9 @@ define([ 'animation:addanimation': _.bind(this.onAddAnimation, this), 'animation:startselect': _.bind(this.onStartSelect, this), 'animation:checkrewind': _.bind(this.onCheckRewindChange,this), - 'animation:repeat': _.bind(this.onRepeatChange, this) + 'animation:repeat': _.bind(this.onRepeatChange, this), + 'animation:trigger': _.bind(this.onTriggerClick, this), + 'animation:triggerclickof': _.bind(this.onTriggerClickOfClick, this) }, 'Toolbar': { 'tab:active': _.bind(this.onActiveTab, this) @@ -173,6 +175,32 @@ define([ this.api.asc_SetAnimationProperties(this.AnimationProperties); } }, + + onTriggerClick: function (value) { + if(this.api) { + if(value==this.view.triggers.ClickSequence) + { + this._state.Trigger = this.view.triggers.ClickSequence; + this._state.TriggerValue = true; + this.AnimationProperties.asc_putTriggerClickSequence(this._state.TriggerValue); + this.api.asc_SetAnimationProperties(this.AnimationProperties); + } + } + }, + + onTriggerClickOfClick: function (value) + { + if(this.api) + { + this._state.Trigger = this.view.triggers.ClickOf; + this._state.TriggerValue = value.caption; + this.AnimationProperties.asc_putTriggerClickSequence(false); + this.AnimationProperties.asc_putTriggerObjectClick(this._state.TriggerValue); + this.api.asc_SetAnimationProperties(this.AnimationProperties); + } + + }, + onEffectSelect: function (combo, record) { if (this.api) { var type = record.get('value'); @@ -280,6 +308,16 @@ define([ this._state.Repeat = value; } + if(this.AnimationProperties.asc_getTriggerClickSequence()) { + this._state.trigger = this.view.triggers.ClickSequence; + this._state.TriggerValue = true; + } + else + { + this._state.trigger = this.view.triggers.ClickOf; + this._state.TriggerValue = this.AnimationProperties.asc_getTriggerObjectClick(); + } + this._state.StartSelect = this.AnimationProperties.asc_getStartType(); this._state.RepeatCount = this.AnimationProperties.asc_getRepeatCount(); this._state.Rewind = this.AnimationProperties.asc_getRewind(); @@ -305,12 +343,14 @@ define([ }, setSettings: function () { + var me = this.view; var item; + this.setTriggerList(); if (this._state.Effect !== undefined) { item = me.listEffects.store.findWhere({value: this._state.Effect}); me.listEffects.menuPicker.selectRecord(item ? item : me.listEffects.menuPicker.items[0]); - this.view.btnParameters.setIconCls('toolbar__icon icon ' + item.get('imageUrl')); + this.view.btnParameters.setIconCls('toolbar__icon icon ' + item.get('iconCls')); } if (this._state.EffectOption !== undefined) @@ -324,6 +364,26 @@ define([ item = me.cmbStart.store.findWhere({value: this._state.StartSelect}); me.cmbStart.selectRecord(item); me.chRewind.setValue(this._state.Rewind, true); + + var obj; + obj =(this._state.trigger == me.triggers.ClickSequence)?me.cmbTrigger.menu.items[0] : _.findWhere(me.btnClickOf.menu.items,{caption: this._state.TriggerValue}); + if(obj) { + obj.setChecked(true); + //me.cmbTrigger.setCaption(obj.caption); + } + + + }, + + setTriggerList: function (){ + this.objectNames = this.api.asc_getCurSlideObjectsNames(); + if(this.countObjects == this.objectNames.length) return; + this.view.btnClickOf.menu.removeAll(); + var btnMemnu=this.view.btnClickOf.menu; + this.objectNames.forEach(function (item){ + btnMemnu.addItem({ caption: item, checkable: true, toggleGroup: 'animtrigger'}); + }); + } }, PE.Controllers.Animation || {})); diff --git a/apps/presentationeditor/main/app/template/Toolbar.template b/apps/presentationeditor/main/app/template/Toolbar.template index b7aee5d06..d575277ee 100644 --- a/apps/presentationeditor/main/app/template/Toolbar.template +++ b/apps/presentationeditor/main/app/template/Toolbar.template @@ -216,7 +216,7 @@
-
+
diff --git a/apps/presentationeditor/main/app/view/Animation.js b/apps/presentationeditor/main/app/view/Animation.js index 7b6c5fead..a5c23725f 100644 --- a/apps/presentationeditor/main/app/view/Animation.js +++ b/apps/presentationeditor/main/app/view/Animation.js @@ -69,6 +69,16 @@ define([ }, me)); } + if(me.cmbTrigger) + { + me.cmbTrigger.menu.on('item:click', _.bind(function(menu, item, e) { + me.fireEvent('animation:trigger', [item]); + }, me)); + me.btnClickOf.menu.on('item:click', _.bind(function(menu, item, e) { + me.fireEvent('animation:triggerclickof', [item]); + }, me)); + } + if (me.btnParameters) { me.btnParameters.menu.on('item:click', function (menu, item, e) { me.fireEvent('animation:parameters', [item.value]); @@ -121,6 +131,12 @@ define([ initialize: function (options) { + this.triggers= { + ClickSequence: 0, + ClickOf: 1 + } + + Common.UI.BaseView.prototype.initialize.call(this, options); this.toolbar = options.toolbar; this.appConfig = options.mode; @@ -145,7 +161,7 @@ define([ groups: new Common.UI.DataViewGroupStore([{id: 'none', value: -10, caption: this.textNone}].concat(Common.define.effectData.getEffectGroupData())), store: new Common.UI.DataViewStore(this._arrEffectName), enableKeyEvents: true, - //lock: [_set.slideDeleted, _set.noSlides, _set.disableOnStart, _set.transitLock], + lock: [_set.slideDeleted, _set.noSlides, _set.disableOnStart], dataHint: '1', dataHintDirection: 'bottom', dataHintOffset: '-16, 0', @@ -178,7 +194,7 @@ define([ caption: this.txtPreview, split: false, iconCls: 'toolbar__icon preview-transitions', - //lock: [_set.slideDeleted, _set.noSlides, _set.disableOnStart], + lock: [_set.slideDeleted, _set.noSlides], dataHint: '1', dataHintDirection: 'left', dataHintOffset: 'medium' @@ -190,7 +206,7 @@ define([ caption: this.txtParameters, iconCls: 'toolbar__icon icon transition-none', menu: new Common.UI.Menu({items: []}), - //lock: [_set.slideDeleted, _set.noSlides, _set.disableOnStart, _set.transitLock], + lock: [_set.slideDeleted, _set.noSlides, _set.disableOnStart], dataHint: '1', dataHintDirection: 'bottom', dataHintOffset: 'small' @@ -202,7 +218,7 @@ define([ caption: this.txtAnimationPane, split: true, iconCls: 'toolbar__icon transition-apply-all', - //lock: [_set.slideDeleted, _set.noSlides, _set.disableOnStart, _set.transitLock], + lock: [_set.slideDeleted, _set.noSlides, _set.disableOnStart], dataHint: '1', dataHintDirection: 'left', dataHintOffset: 'medium' @@ -214,7 +230,7 @@ define([ caption: this.txtAddEffect, iconCls: 'toolbar__icon icon btn-addslide', menu: true, - //lock: [_set.slideDeleted, _set.noSlides, _set.disableOnStart, _set.transitLock], + lock: [_set.slideDeleted, _set.noSlides, _set.disableOnStart], dataHint: '1', dataHintDirection: 'bottom', dataHintOffset: 'small' @@ -230,26 +246,42 @@ define([ defaultUnit: this.txtSec, maxValue: 300, minValue: 0, - //lock: [_set.slideDeleted, _set.noSlides, _set.disableOnStart, _set.transitLock], + lock: [_set.slideDeleted, _set.noSlides, _set.disableOnStart], dataHint: '1', dataHintDirection: 'top', dataHintOffset: 'small' }); this.lockedControls.push(this.numDuration); - this.cmbTrigger = new Common.UI.ComboBox({ - cls: 'input-group-nr', - menuStyle: 'width: 150px;', - //lock: [_set.slideDeleted, _set.paragraphLock, _set.lostConnect, _set.noSlides, _set.noTextSelected, _set.shapeLock], - data: [ - {value: 0, displayValue: '1-1'}, - {value: 1, displayValue: '2-2'}, - {value: 2, displayValue: '3-3'} - ], - dataHint: '1', - dataHintDirection: 'top' - }); + this.cmbTrigger = new Common.UI.Button({ + parentEl: $('#animation-trigger'), + cls: 'btn-text-split-default', + split: true, + width: 82, + menu : new Common.UI.Menu({ + style : 'min-width: 150px;', + items: [ + { + caption: this.textOnClickSequence, + checkable: true, + toggleGroup: 'animtrigger', + value: this.triggers.ClickSequence + }, + { + value: this.triggers.ClickOf, + caption: this.textOnClickOf, + menu: new Common.UI.Menu({ + menuAlign: 'tr-br', + items: [] + }) + }] + }), + dataHint: '1', + dataHintDirection: 'bottom', + dataHintOffset: 'big' + }); this.lockedControls.push(this.cmbTrigger); + this.btnClickOf = this.cmbTrigger.menu.items[1]; this.numDelay = new Common.UI.MetricSpinner({ el: this.$el.find('#animation-spin-delay'), @@ -259,7 +291,7 @@ define([ defaultUnit: this.txtSec, maxValue: 300, minValue: 0, - //lock: [_set.slideDeleted, _set.noSlides, _set.disableOnStart, _set.transitLock], + lock: [_set.slideDeleted, _set.noSlides, _set.disableOnStart], dataHint: '1', dataHintDirection: 'bottom', dataHintOffset: 'big' @@ -269,7 +301,7 @@ define([ this.cmbStart = new Common.UI.ComboBox({ cls: 'input-group-nr', menuStyle: 'width: 150px;', - //lock: [_set.slideDeleted, _set.paragraphLock, _set.lostConnect, _set.noSlides, _set.noTextSelected, _set.shapeLock], + lock: [_set.slideDeleted, _set.noSlides, _set.disableOnStart], data: [ {value: AscFormat.NODE_TYPE_CLICKEFFECT, displayValue: this.textStartOnClick}, {value: AscFormat.NODE_TYPE_WITHEFFECT, displayValue: this.textStartWithPrevious}, @@ -283,7 +315,7 @@ define([ this.chRewind = new Common.UI.CheckBox({ el: this.$el.find('#animation-checkbox-rewind'), labelText: this.strRewind, - //lock: [_set.slideDeleted, _set.noSlides, _set.disableOnStart, _set.transitLock], + lock: [_set.slideDeleted, _set.noSlides, _set.disableOnStart], dataHint: '1', dataHintDirection: 'left', dataHintOffset: 'small' @@ -298,7 +330,7 @@ define([ maxValue: 1000, minValue: 0, defaultUnit: '', - //lock: [_set.slideDeleted, _set.noSlides, _set.disableOnStart, _set.transitLock], + lock: [_set.slideDeleted, _set.noSlides, _set.disableOnStart], dataHint: '1', dataHintDirection: 'bottom', dataHintOffset: 'big' @@ -369,7 +401,7 @@ define([ this.btnAnimationPane && this.btnAnimationPane.render(this.$el.find('#animation-button-pane')); this.btnAddAnimation && this.btnAddAnimation.render(this.$el.find('#animation-button-add-effect')); this.cmbStart && this.cmbStart.render(this.$el.find('#animation-start')); - this.cmbTrigger && this.cmbTrigger.render(this.$el.find('#animation-trigger')); + //this.cmbTrigger && this.cmbTrigger.render(this.$el.find('#animation-trigger')); this.renderComponent('#animation-spin-duration', this.numDuration); this.renderComponent('#animation-spin-delay', this.numDelay); this.renderComponent('#animation-spin-repeat', this.numRepeat); @@ -378,7 +410,6 @@ define([ this.$el.find("#animation-label-start").innerText = this.strStart; this.$el.find("#animation-label-trigger").innerText = this.strTrigger; this.$el.find("#animation-repeat").innerText = this.strRepeat; - this.widthRow(this.$el.find("#animation-label-start"), this.$el.find("#animation-delay")); return this.$el; }, @@ -387,20 +418,7 @@ define([ element.parent().append(obj.el); }, - widthRow: function (obj1, obj2, wd) { - if(wd) return wd; - var w1 = obj1.width(), - w2 = obj2.width(); - if(!w1 || !w2) return 0; - if(w1>w2) { - obj2.css('width', w1); - return w1; - } - else { - obj1.css('width', w2); - return w2; - } - }, + show: function () { Common.UI.BaseView.prototype.show.call(this); @@ -419,10 +437,7 @@ define([ }, this); }, - setWidthRow: function () { - this.widthStart = this.widthRow(this.$el.find("#animation-label-start"), this.$el.find("#animation-delay"),this.widthStart); - this.widthDuration = this.widthRow(this.$el.find("#animation-duration"), this.$el.find("#animation-label-trigger"),this.widthDuration); - }, + setMenuParameters: function (effectId, option) { @@ -473,6 +488,8 @@ define([ textStartOnClick: 'On Click', textStartWithPrevious: 'With Previous', textStartAfterPrevious: 'After Previous', + textOnClickSequence: 'On Click Sequence', + textOnClickOf: 'On Click of', textNone: 'None' } }()), PE.Views.Animation || {})); diff --git a/apps/presentationeditor/main/app/view/AnimationDialog.js b/apps/presentationeditor/main/app/view/AnimationDialog.js index e465cc387..f6d2f3862 100644 --- a/apps/presentationeditor/main/app/view/AnimationDialog.js +++ b/apps/presentationeditor/main/app/view/AnimationDialog.js @@ -65,6 +65,8 @@ define([ this.options.tpl = _.template(this.template)(this.options); this.api = this.options.api; this.activeEffect = this.options.Effect; + this.EffectGroupData = Common.define.effectData.getEffectGroupData(); + this.EffectGroupData.forEach(function (item) {item.displayValue = item.caption;}); if (this.activeEffect != undefined) { var itemEffect= this.allEffects.findWhere({value: this.activeEffect}); this.activeGroup = itemEffect.group; @@ -87,7 +89,7 @@ define([ editable: false, style : 'margin-top: 16px; width: 100%;', takeFocusOnClose: true, - data : Common.define.effectData.getEffectGroupData(), + data : this.EffectGroupData, value : (this.activEffect != undefined)?this.activeGroup:undefined }); this.cmbGroup.on('selected', _.bind(this.onGroupSelect,this));