From ad1c4a2a0e934b25e1815e6ee2a4aae54e7fb6ab Mon Sep 17 00:00:00 2001 From: Julia Radzhabova Date: Tue, 19 Nov 2019 12:02:00 +0300 Subject: [PATCH] [PE] Click on table placeholder --- .../main/app/view/DocumentHolder.js | 81 ++++++++++++++++--- apps/presentationeditor/main/locale/en.json | 1 + 2 files changed, 69 insertions(+), 13 deletions(-) diff --git a/apps/presentationeditor/main/app/view/DocumentHolder.js b/apps/presentationeditor/main/app/view/DocumentHolder.js index 8c56779bf..adf8cee6e 100644 --- a/apps/presentationeditor/main/app/view/DocumentHolder.js +++ b/apps/presentationeditor/main/app/view/DocumentHolder.js @@ -1581,7 +1581,7 @@ define([ me.api.asc_registerPlaceholderCallback(AscCommon.PlaceholderButtonType.Image, _.bind(me.onInsertImage, me, true)); me.api.asc_registerPlaceholderCallback(AscCommon.PlaceholderButtonType.ImageUrl, _.bind(me.onInsertImageUrl, me, true)); me.api.asc_registerPlaceholderCallback(AscCommon.PlaceholderButtonType.Chart, _.bind(me.onClickPlaceholderChart, me)); - me.api.asc_registerPlaceholderCallback(AscCommon.PlaceholderButtonType.Table, _.bind(me.onClickPlaceholder, me, AscCommon.PlaceholderButtonType.Table)); + me.api.asc_registerPlaceholderCallback(AscCommon.PlaceholderButtonType.Table, _.bind(me.onClickPlaceholderTable, me)); me.api.asc_registerPlaceholderCallback(AscCommon.PlaceholderButtonType.Video, _.bind(me.onClickPlaceholder, me, AscCommon.PlaceholderButtonType.Video)); me.api.asc_registerPlaceholderCallback(AscCommon.PlaceholderButtonType.Audio, _.bind(me.onClickPlaceholder, me, AscCommon.PlaceholderButtonType.Audio)); } @@ -3492,24 +3492,78 @@ define([ this._fromShowPlaceholder = false; }, + onClickPlaceholderTable: function(obj, x, y) { + if (!this.api) return; + var menu = this.placeholderMenuTable, + menuContainer = menu ? this.cmpEl.find(Common.Utils.String.format('#menu-container-{0}', menu.id)) : null, + me = this; + this._fromShowPlaceholder = true; + Common.UI.Menu.Manager.hideAll(); + + if (!menu) { + this.placeholderMenuTable = menu = new Common.UI.Menu({ + items: [ + {template: _.template('
')}, + {caption: me.mniCustomTable, value: 'custom'} + ] + }); + // Prepare menu container + menuContainer = $(Common.Utils.String.format('', menu.id)); + this.cmpEl.append(menuContainer); + menu.render(menuContainer); + menu.cmpEl.attr({tabindex: "-1"}); + menu.on('hide:after', function(){ + if (!me._fromShowPlaceholder) + me.api.asc_uncheckPlaceholders(); + }); + + var picker = new Common.UI.DimensionPicker({ + el: $('#id-placeholder-menu-tablepicker'), + minRows: 8, + minColumns: 10, + maxRows: 8, + maxColumns: 10 + }); + picker.on('select', function(picker, columns, rows){ + me.api.put_Table(columns, rows); + me.fireEvent('editcomplete', me); + }); + menu.on('item:click', function(menu, item, e){ + if (item.value === 'custom') { + (new Common.Views.InsertTableDialog({ + handler: function(result, value) { + if (result == 'ok') + me.api.put_Table(value.columns, value.rows); + me.fireEvent('editcomplete', me); + } + })).show(); + } + }); + } + menuContainer.css({left: x, top : y}); + menuContainer.attr('data-value', 'prevent-canvas-click'); + this._preventClick = true; + menu.show(); + + menu.alignPosition(); + _.delay(function() { + menu.cmpEl.focus(); + }, 10); + this._fromShowPlaceholder = false; + }, + onHidePlaceholderActions: function() { this.placeholderMenuChart && this.placeholderMenuChart.hide(); }, onClickPlaceholder: function(type, obj, x, y) { if (!this.api) return; - - switch (type) { - case AscCommon.PlaceholderButtonType.Table: - break; - case AscCommon.PlaceholderButtonType.Video: - // this.api.addVideo(); - break; - case AscCommon.PlaceholderButtonType.Audio: - // this.api.addAudio(); - break; + if (type == AscCommon.PlaceholderButtonType.Video) { + // this.api.addVideo(); + } else if (type == AscCommon.PlaceholderButtonType.Audio) { + // this.api.addAudio(); } - + this.fireEvent('editcomplete', this); }, insertRowAboveText : 'Row Above', @@ -3687,7 +3741,8 @@ define([ toDictionaryText: 'Add to Dictionary', txtPrintSelection: 'Print Selection', addToLayoutText: 'Add to Layout', - txtResetLayout: 'Reset Slide' + txtResetLayout: 'Reset Slide', + mniCustomTable: 'Insert custom table' }, PE.Views.DocumentHolder || {})); }); \ No newline at end of file diff --git a/apps/presentationeditor/main/locale/en.json b/apps/presentationeditor/main/locale/en.json index a2332c607..a3fabd528 100644 --- a/apps/presentationeditor/main/locale/en.json +++ b/apps/presentationeditor/main/locale/en.json @@ -1133,6 +1133,7 @@ "PE.Views.DocumentHolder.txtUnderbar": "Bar under text", "PE.Views.DocumentHolder.txtUngroup": "Ungroup", "PE.Views.DocumentHolder.vertAlignText": "Vertical Alignment", + "PE.Views.DocumentHolder.mniCustomTable": "Insert custom table", "PE.Views.DocumentPreview.goToSlideText": "Go to Slide", "PE.Views.DocumentPreview.slideIndexText": "Slide {0} of {1}", "PE.Views.DocumentPreview.txtClose": "Close slideshow",