Add menu zoom

This commit is contained in:
OVSharova 2021-12-15 16:43:21 +03:00
parent 7dd910f13a
commit 2b1d3d761b
3 changed files with 110 additions and 10 deletions

View file

@ -456,6 +456,12 @@
background-position: -@icon-width*4 0;
background-position: -@icon-width*4 @icon-normal-top;
}
&.zoom-in {
background-position: -@icon-width*5 @icon-normal-top;
}
&.zoom-out {
background-position: -@icon-width*6 @icon-normal-top;
}
&.zoom-up {
background-position: -@icon-width*5 -@icon-height;
}
@ -624,6 +630,32 @@
font-size: 11px;
}
.menu-zoom {
line-height: @line-height-base;
.title {
padding: 5px 5px 5px 28px;
float: left;
font-weight: normal;
font-size: 11px;
margin: 0px;
text-overflow: ellipsis;
}
.zoom {
padding: 5px 3px;
float: right;
min-width: 40px;
text-align: center;
font-weight: normal;
font-size: 11px;
padding-bottom: 0px;
}
.mi-icon {
margin: 0;
}
}
.font-size-small {
.fontsize(@font-size-small);
}

View file

@ -103,6 +103,7 @@ define([
this.api.asc_registerCallback('asc_onCountPages', this.onCountPages.bind(this));
this.api.asc_registerCallback('asc_onCurrentPage', this.onCurrentPage.bind(this));
this.api.asc_registerCallback('asc_onDocumentModifiedChanged', _.bind(this.onDocumentModifiedChanged, this));
this.api.asc_registerCallback('asc_onZoomChange', this.onApiZoomChange.bind(this));
// Initialize api gateway
Common.Gateway.on('init', this.loadConfig.bind(this));
@ -1392,6 +1393,26 @@ define([
onThemeClick: function(menu, item) {
(item.value!==null) && Common.UI.Themes.setTheme(item.value);
},
onApiZoomChange: function(percent, type) {
this.view.mnuZoom.items[0].setChecked(type == 2, true);
this.view.mnuZoom.items[1].setChecked(type == 1, true);
this.view.mnuZoom.options.value = percent;
if ( this.view.mnuZoom.$el )
$('.menu-zoom label.zoom', this.view.mnuZoom.$el).html(percent + '%');
},
onMenuZoomClick: function(menu, item, e){
switch ( item.value ) {
case 'zoom:page':
item.isChecked() ? this.api.zoomFitToPage() : this.api.zoomCustomMode();
break;
case 'zoom:width':
item.isChecked() ? this.api.zoomFitToWidth() : this.api.zoomCustomMode();
break;
}
},
onDarkModeClick: function(item) {
Common.UI.Themes.toggleContentTheme();
@ -1444,15 +1465,28 @@ define([
else
last = menuItems[7];
//last = menuItems[8];
// share, location
if (!menuItems[8].isVisible() && !menuItems[9].isVisible())
if (!menuItems[10].isVisible() && !menuItems[11].isVisible())
menuItems[12].setVisible(false);
else
last = menuItems[12];
// embed, fullscreen
if (!menuItems[13].isVisible() && !menuItems[14].isVisible())
last && last.setVisible(false);
// share, location
/*if (!menuItems[8].isVisible() && !menuItems[9].isVisible())
menuItems[10].setVisible(false);
else
last = menuItems[10];
// embed, fullscreen
if (!menuItems[11].isVisible() && !menuItems[12].isVisible())
last && last.setVisible(false);
last && last.setVisible(false);*/
menu.off('show:after', initMenu);
};
@ -1504,22 +1538,22 @@ define([
}
if ( !this.embedConfig.shareUrl || this.appOptions.isOFORM) {
menuItems[8].setVisible(false);
menuItems[10].setVisible(false);
itemsCount--;
}
if (!this.appOptions.canBackToFolder) {
menuItems[9].setVisible(false);
itemsCount--;
}
if ( !this.embedConfig.embedUrl || this.appOptions.isOFORM) {
menuItems[11].setVisible(false);
itemsCount--;
}
if ( !this.embedConfig.embedUrl || this.appOptions.isOFORM) {
menuItems[13].setVisible(false);
itemsCount--;
}
if ( !this.embedConfig.fullscreenUrl || this.appOptions.isOFORM) {
menuItems[12].setVisible(false);
menuItems[14].setVisible(false);
itemsCount--;
}
if (itemsCount<1)
@ -1546,7 +1580,11 @@ define([
// zoom
$('#id-btn-zoom-in').on('click', this.api.zoomIn.bind(this.api));
$('#id-btn-zoom-out').on('click', this.api.zoomOut.bind(this.api));
$('#id-menu-zoom-in').on('click', this.api.zoomIn.bind(this.api));
$('#id-menu-zoom-out').on('click', this.api.zoomOut.bind(this.api));
this.view.btnOptions.menu.on('item:click', _.bind(this.onOptionsClick, this));
this.view.mnuZoom.on('item:click', _.bind(this.onMenuZoomClick, this));
// pages
var $pagenum = this.view.txtGoToPage._input;

View file

@ -32,6 +32,32 @@ define([
})
},
{caption: '--'},
{caption: this.textZoom, value: 'zoomn', conCls: 'mi-icon' ,
menu : this.mnuZoom = new Common.UI.Menu({
cls: 'shifted-right',
menuAlign: 'tl-tr',
items: [
{caption: this.textFitToPage, value: 'zoom:page', toggleGroup: 'view-zoom', checkable: true},
{caption: this.textFitToWidth, value: 'zoom:width', toggleGroup: 'view-zoom', checkable: true},
(new Common.UI.MenuItem({
template: _.template([
'<div id="id-menu-zoom" class="menu-zoom" style="height: 26px;" ',
'<% if(!_.isUndefined(options.stopPropagation)) { %>',
'data-stopPropagation="true"',
'<% } %>', '>',
'<label class="title">' + this.textZoom + '</label>',
'<button id="id-menu-zoom-in" type="button" style="float:right; margin: 2px 5px 0 0;" class="btn btn-toolbar"><i class="mi-icon svg-icon zoom-in">&nbsp;</i></button>',
'<label class="zoom"><%= options.value %>%</label>',
'<button id="id-menu-zoom-out" type="button" style="float:right; margin-top: 2px;" class="btn btn-toolbar"><i class="mi-icon svg-icon zoom-out">&nbsp;</i></button>',
'</div>'
].join('')),
stopPropagation: true,
value: 30
}))
]
})
},
{caption: '--'},
{caption: this.txtShare, value: 'share', iconCls: 'mi-icon svg-icon share'},
{caption: this.txtFileLocation, value: 'close', iconCls: 'mi-icon svg-icon go-to-location'},
{caption: '--'},
@ -42,6 +68,7 @@ define([
});
this.btnOptions.render($('#box-tools'));
this.btnClear = new Common.UI.Button({
cls: 'btn-toolbar',
iconCls: 'svg-icon clear-style',
@ -119,7 +146,10 @@ define([
textPrintSel: 'Print Selection',
txtDarkMode: 'Dark mode',
textUndo: 'Undo',
textRedo: 'Redo'
textRedo: 'Redo',
textZoom: 'Zoom',
textFitToPage: 'Fit to Page',
textFitToWidth: 'Fit to Width'
}, DE.Views.ApplicationView || {}));
});