[SSE] Fix scale

This commit is contained in:
Julia Svinareva 2019-10-15 15:07:03 +03:00
parent 0eae3533df
commit e424611cfe
6 changed files with 222 additions and 111 deletions

View file

@ -198,6 +198,7 @@ define([
opt.asc_setFitToWidth(fitToWidth);
opt.asc_setFitToHeight(fitToHeight);
!fitToWidth && !fitToHeight && opt.asc_setScale(100);
this.setScaling(panel, fitToWidth, fitToHeight, 100);
} else {
opt.asc_setFitToWidth(this.fitWidth);
opt.asc_setFitToHeight(this.fitHeight);
@ -355,7 +356,7 @@ define([
},
propertyChange: function(panel, scale, combo, record) {
if (scale === 'scale' && record.value === 4) {
if (scale === 'scale' && record.value === 'customoptions') {
var me = this,
props = (me._changedProps.length > 0 && me._changedProps[panel.cmbSheet.getValue()]) ? me._changedProps[panel.cmbSheet.getValue()] : me.api.asc_getPageOptions(panel.cmbSheet.getValue());
var win = new SSE.Views.ScaleDialog({
@ -396,11 +397,14 @@ define([
},
setScaling: function (panel, width, height, scale) {
if (!width && !height && scale === 100) panel.cmbLayout.setValue(0, true);
else if (width === 1 && height === 1) panel.cmbLayout.setValue(1, true);
else if (width === 1 && !height) panel.cmbLayout.setValue(2, true);
else if (!width && height === 1) panel.cmbLayout.setValue(3, true);
else panel.cmbLayout.setValue(4, true);
var value;
if (!width && !height && scale === 100) value = 0;
else if (width === 1 && height === 1) value = 1;
else if (width === 1 && !height) value = 2;
else if (!width && height === 1) value = 3;
else value = 4;
panel.addCustomScale(value === 4);
panel.cmbLayout.setValue(value, true);
},
warnCheckMargings: 'Margins are incorrect',

View file

@ -362,7 +362,9 @@ define([
toolbar.btnPageOrient.menu.on('item:click', _.bind(this.onPageOrientSelect, this));
toolbar.btnPageMargins.menu.on('item:click', _.bind(this.onPageMarginsSelect, this));
toolbar.mnuPageSize.on('item:click', _.bind(this.onPageSizeClick, this));
toolbar.mnuScale.on('item:click', _.bind(this.onScaleClick, this));
toolbar.mnuScale.on('item:click', _.bind(this.onScaleClick, this, 'scale'));
toolbar.menuWidthScale.on('item:click', _.bind(this.onScaleClick, this, 'width'));
toolbar.menuHeightScale.on('item:click', _.bind(this.onScaleClick, this, 'height'));
toolbar.btnPrintArea.menu.on('item:click', _.bind(this.onPrintAreaClick, this));
toolbar.btnPrintArea.menu.on('show:after', _.bind(this.onPrintAreaMenuOpen, this));
toolbar.btnImgGroup.menu.on('item:click', _.bind(this.onImgGroupSelect, this));
@ -1845,33 +1847,52 @@ define([
},
onChangeScaleSettings: function(width, height, scale) {
var me = this;
if (this.toolbar.btnScale.menu) {
this.toolbar.btnScale.menu.clearAll();
if (width !== undefined) {
if ((width === 0 || width === null) && (height === 0 || height === null) && scale === 100) {
this._state.scale = 0;
} else if (width === 1 && height === 1) {
this._state.scale = 1;
} else if (width === 1 && (height === 0 || height === null)) {
this._state.scale = 2;
} else if ((width === 0 || width === null) && height === 1) {
this._state.scale = 3;
} else if ((width === 0 || width === null) && (height === 0 || height === null)) {
this._state.scale = 4;
var isWidth = false,
isHeight = false;
var width = width || 0,
height = height || 0;
if (scale !== undefined) {
this.toolbar.setValueCustomScale(scale);
} else {
this._state.scale = 5;
this.toolbar.setValueCustomScale(this.api.asc_getPageOptions().asc_getPageSetup().asc_getScale());
}
this.toolbar.menuWidthScale.clearAll();
this.toolbar.menuWidthScale.items.forEach(function (item) {
if (item.value === width) {
item.setChecked(true);
isWidth = true;
return false;
}
});
if (!isWidth) {
this.toolbar.menuWidthScale.items[11].setChecked(true);
}
this.toolbar.menuHeightScale.clearAll();
this.toolbar.menuHeightScale.items.forEach(function (item) {
if (item.value === height) {
item.setChecked(true);
isHeight = true;
return false;
}
});
if (!isHeight) {
this.toolbar.menuHeightScale.items[11].setChecked(true);
}
if (this.toolbar.btnCustomScaleUp && this.toolbar.btnCustomScaleDown) {
this.toolbar.btnCustomScaleUp.setDisabled(!(!width && !height));
this.toolbar.btnCustomScaleDown.setDisabled(!(!width && !height));
}
this._state.scaleWidth = width;
this._state.scaleHeight = height;
this._state.scale = scale;
} else {
if (this.toolbar.btnCustomScaleUp && this.toolbar.btnCustomScaleDown) {
this.toolbar.btnCustomScaleUp.setDisabled(!(!this._state.scaleWidth && !this._state.scaleHeight));
this.toolbar.btnCustomScaleDown.setDisabled(!(!this._state.scaleWidth && !this._state.scaleHeight));
}
this.toolbar.setValueCustomScale(scale);
} else if (scale === undefined) {
this.toolbar.setValueCustomScale(this.api.asc_getPageOptions().asc_getPageSetup().asc_getScale());
}
_.each(this.toolbar.btnScale.menu.items, function(item){
if (item.value === me._state.scale) {
item.setChecked(true);
return false;
}
}, this);
}
},
@ -3390,50 +3411,40 @@ define([
}
},
onScaleClick: function(menu, item, event, scale) {
onScaleClick: function(type, menu, item, event, scale) {
var me = this;
if (me.api) {
if (scale !== undefined) {
me.api.asc_SetPrintScale(0, 0, scale);
me._state.scale = 4;
} else {
switch (item.value) {
case 0:
me.api.asc_SetPrintScale(0, 0, 100);
me._state.scale = 0;
break;
case 1:
me.api.asc_SetPrintScale(1, 1, 100);
me._state.scale = 1;
break;
case 2:
me.api.asc_SetPrintScale(1, 0, 100);
me._state.scale = 2;
break;
case 3:
me.api.asc_SetPrintScale(0, 1, 100);
me._state.scale = 3;
break;
case 5:
var win = new SSE.Views.ScaleDialog({
api: me.api,
props: null,
handler: function (dlg, result) {
if (dlg == 'ok') {
if (me.api && result) {
me.api.asc_SetPrintScale(result.width, result.height, result.scale);
me.onChangeScaleSettings(result.width, result.height, result.scale);
}
me._state.scale = 5;
} else {
me.onChangeScaleSettings();
}
Common.NotificationCenter.trigger('edit:complete');
}
});
win.show();
break;
if (type === 'width' && item.value !== 'more') {
if (me._state.scaleHeight === undefined || me._state.scaleHeight === null) {
me._state.scaleHeight = 0;
}
me.api.asc_SetPrintScale(item.value, me._state.scaleHeight, 100);
me.onChangeScaleSettings(item.value, me._state.scaleHeight, 100);
} else if (type === 'height' && item.value !== 'more') {
if (me._state.scaleWidth === undefined || me._state.scaleWidth === null) {
me._state.scaleWidth = 0;
}
me.api.asc_SetPrintScale(me._state.scaleWidth, item.value, 100);
me.onChangeScaleSettings(me._state.scaleWidth, item.value, 100);
} else if (type === 'scale' && scale !== undefined) {
me.api.asc_SetPrintScale(0, 0, scale);
} else if (item.value === 'custom' || item.value === 'more') {
var win = new SSE.Views.ScaleDialog({
api: me.api,
props: null,
handler: function (dlg, result) {
if (dlg == 'ok') {
if (me.api && result) {
me.api.asc_SetPrintScale(result.width, result.height, result.scale);
me.onChangeScaleSettings(result.width, result.height, result.scale);
}
} else {
me.onChangeScaleSettings(me._state.scaleWidth, me._state.scaleHeight, me._state.scale);
}
Common.NotificationCenter.trigger('edit:complete');
}
});
win.show();
}
}

View file

@ -350,6 +350,14 @@ define([
]
});
var itemsTemplate =
_.template([
'<% _.each(items, function(item) { %>',
'<li id="<%= item.id %>" data-value="<%= item.value %>" <% if (item.value === "customoptions") { %> style="border-top: 1px solid #e5e5e5;margin-top: 5px;" <% } %> ><a tabindex="-1" type="menuitem">',
'<%= scope.getDisplayValue(item) %>',
'</a></li>',
'<% }); %>'
].join(''));
this.cmbLayout = new Common.UI.ComboBox({
el : $markup.findById('#advsettings-print-combo-layout'),
style : 'width: 242px;',
@ -361,8 +369,9 @@ define([
{ value: 1, displayValue: this.textFitPage },
{ value: 2, displayValue: this.textFitCols },
{ value: 3, displayValue: this.textFitRows },
{ value: 4, displayValue: this.textCustomOptions}
]
{ value: 'customoptions', displayValue: this.textCustomOptions }
],
itemsTemplate: itemsTemplate
});
this.chPrintGrid = new Common.UI.CheckBox({
@ -438,6 +447,27 @@ define([
return this;
},
addCustomScale: function (add) {
if (add) {
this.cmbLayout.setData([
{ value: 0, displayValue: this.textActualSize },
{ value: 1, displayValue: this.textFitPage },
{ value: 2, displayValue: this.textFitCols },
{ value: 3, displayValue: this.textFitRows },
{ value: 4, displayValue: this.textCustom },
{ value: 'customoptions', displayValue: this.textCustomOptions }
]);
} else {
this.cmbLayout.setData([
{ value: 0, displayValue: this.textActualSize },
{ value: 1, displayValue: this.textFitPage },
{ value: 2, displayValue: this.textFitCols },
{ value: 3, displayValue: this.textFitRows },
{ value: 'customoptions', displayValue: this.textCustomOptions }
]);
}
},
updateMetricUnit: function() {
if (this.spinners) {
for (var i=0; i<this.spinners.length; i++) {
@ -493,7 +523,8 @@ define([
textFitPage: 'Fit Sheet on One Page',
textFitCols: 'Fit All Columns on One Page',
textFitRows: 'Fit All Rows on One Page',
textCustomOptions: 'Custom Options'
textCustomOptions: 'Custom Options',
textCustom: 'Custom'
}, SSE.Views.MainSettingsPrint || {}));
SSE.Views.FileMenuPanels.MainSettingsGeneral = Common.UI.BaseView.extend(_.extend({

View file

@ -204,6 +204,14 @@ define([ 'text!spreadsheeteditor/main/app/template/PrintSettings.template',
});
this.spinners.push(this.spnMarginRight);
var itemsTemplate =
_.template([
'<% _.each(items, function(item) { %>',
'<li id="<%= item.id %>" data-value="<%= item.value %>" <% if (item.value === "customoptions") { %> style="border-top: 1px solid #e5e5e5;margin-top: 5px;" <% } %> ><a tabindex="-1" type="menuitem">',
'<%= scope.getDisplayValue(item) %>',
'</a></li>',
'<% }); %>'
].join(''));
this.cmbLayout = new Common.UI.ComboBox({
el : $('#printadv-dlg-combo-layout'),
style : 'width: 242px;',
@ -215,8 +223,9 @@ define([ 'text!spreadsheeteditor/main/app/template/PrintSettings.template',
{ value: 1, displayValue: this.textFitPage },
{ value: 2, displayValue: this.textFitCols },
{ value: 3, displayValue: this.textFitRows },
{ value: 4, displayValue: this.textCustomOptions}
]
{ value: 'customoptions', displayValue: this.textCustomOptions }
],
itemsTemplate: itemsTemplate
});
this.btnHide = new Common.UI.Button({
@ -233,6 +242,27 @@ define([ 'text!spreadsheeteditor/main/app/template/PrintSettings.template',
this.handlerShowDetails(this.btnHide);
},
addCustomScale: function (add) {
if (add) {
this.cmbLayout.setData([
{ value: 0, displayValue: this.textActualSize },
{ value: 1, displayValue: this.textFitPage },
{ value: 2, displayValue: this.textFitCols },
{ value: 3, displayValue: this.textFitRows },
{ value: 4, displayValue: this.textCustom },
{ value: 'customoptions', displayValue: this.textCustomOptions }
]);
} else {
this.cmbLayout.setData([
{ value: 0, displayValue: this.textActualSize },
{ value: 1, displayValue: this.textFitPage },
{ value: 2, displayValue: this.textFitCols },
{ value: 3, displayValue: this.textFitRows },
{ value: 'customoptions', displayValue: this.textCustomOptions }
]);
}
},
setRange: function(value) {
this.cmbRange.setValue(value);
},
@ -324,7 +354,8 @@ define([ 'text!spreadsheeteditor/main/app/template/PrintSettings.template',
btnDownload: 'Save & Download',
textRange: 'Range',
textIgnore: 'Ignore Print Area',
textCustomOptions: 'Custom Options'
textCustomOptions: 'Custom Options',
textCustom: 'Custom'
}, SSE.Views.PrintSettings || {}));
});

View file

@ -1345,8 +1345,6 @@ define([
'</div>'
].join('')),
stopPropagation: true,
toggleGroup: 'menuScale',
checkable: true,
value: 4
});
@ -1358,39 +1356,58 @@ define([
lock: [_set.docPropsLock, _set.lostConnect, _set.coAuth],
menu: new Common.UI.Menu({
items: [
{
caption: me.textActualSize,
checkable: true,
toggleGroup: 'menuScale',
value: 0
},
{
caption: me.textFitSheetOnOnePage,
checkable: true,
toggleGroup: 'menuScale',
value: 1
},
{
caption: me.textFitAllColumnsOnOnePage,
checkable: true,
toggleGroup: 'menuScale',
value: 2
},
{
caption: me.textFitAllRowsOnOnePage,
checkable: true,
toggleGroup: 'menuScale',
value: 3
},
me.mnuCustomScale,
{caption: '--'},
{ caption: me.textScaleCustom,
checkable: true,
toggleGroup: 'menuScale',
value: 5
}
]})
});
var menuWidthItem = new Common.UI.MenuItem({
caption: me.textWidth,
menu: new Common.UI.Menu({
menuAlign: 'tl-tr',
items: [
{caption: this.textAuto, value: 0, checkable: true, toggleGroup : 'scaleWidth'},
{caption: '1 ' + this.textOnePage, value: 1, checkable: true, toggleGroup : 'scaleWidth'},
{caption: '2 ' + this.textFewPages, value: 2, checkable: true, toggleGroup : 'scaleWidth'},
{caption: '3 ' + this.textFewPages, value: 3, checkable: true, toggleGroup : 'scaleWidth'},
{caption: '4 ' + this.textFewPages, value: 4, checkable: true, toggleGroup : 'scaleWidth'},
{caption: '5 ' + this.textManyPages, value: 5, checkable: true, toggleGroup : 'scaleWidth'},
{caption: '6 ' + this.textManyPages, value: 6, checkable: true, toggleGroup : 'scaleWidth'},
{caption: '7 ' + this.textManyPages, value: 7, checkable: true, toggleGroup : 'scaleWidth'},
{caption: '8 ' + this.textManyPages, value: 8, checkable: true, toggleGroup : 'scaleWidth'},
{caption: '9 ' + this.textManyPages, value: 9, checkable: true, toggleGroup : 'scaleWidth'},
{caption: '--'},
{caption: this.textMorePages, value: 'more', checkable: true, toggleGroup : 'scaleWidth'}
]
})
});
var menuHeightItem = new Common.UI.MenuItem({
caption: me.textHeight,
menu: new Common.UI.Menu({
menuAlign: 'tl-tr',
items: [
{caption: this.textAuto, value: 0, checkable: true, toggleGroup : 'scaleHeight'},
{caption: '1 ' + this.textOnePage, value: 1, checkable: true, toggleGroup : 'scaleHeight'},
{caption: '2 ' + this.textFewPages, value: 2, checkable: true, toggleGroup : 'scaleHeight'},
{caption: '3 ' + this.textFewPages, value: 3, checkable: true, toggleGroup : 'scaleHeight'},
{caption: '4 ' + this.textFewPages, value: 4, checkable: true, toggleGroup : 'scaleHeight'},
{caption: '5 ' + this.textManyPages, value: 5, checkable: true, toggleGroup : 'scaleHeight'},
{caption: '6 ' + this.textManyPages, value: 6, checkable: true, toggleGroup : 'scaleHeight'},
{caption: '7 ' + this.textManyPages, value: 7, checkable: true, toggleGroup : 'scaleHeight'},
{caption: '8 ' + this.textManyPages, value: 8, checkable: true, toggleGroup : 'scaleHeight'},
{caption: '9 ' + this.textManyPages, value: 9, checkable: true, toggleGroup : 'scaleHeight'},
{caption: '--'},
{caption: this.textMorePages, value: 'more', checkable: true, toggleGroup : 'scaleHeight'}
]
})
});
me.btnScale.menu.addItem(menuWidthItem);
me.btnScale.menu.addItem(menuHeightItem);
me.btnScale.menu.addItem(me.mnuCustomScale);
me.btnScale.menu.addItem({caption: '--'});
me.btnScale.menu.addItem(
{ caption: me.textScaleCustom, value: 'custom'
});
me.menuWidthScale = me.btnScale.menu.items[0].menu;
me.menuHeightScale = me.btnScale.menu.items[1].menu;
me.mnuScale = me.btnScale.menu;
me.mnuScale.on('show:after', _.bind(me.onAfterShowMenuScale, me));
@ -1472,7 +1489,7 @@ define([
}
if (!me.itemCustomScale) {
me.itemCustomScale = $('.custom-scale', me.mnuCustomScale.$el).on('click', _.bind(function () {
me.fireEvent('click:customscale', [undefined, undefined, undefined, me.valueCustomScale], this);
me.fireEvent('click:customscale', ['scale', undefined, undefined, undefined, me.valueCustomScale], this);
}, this));
}
if (!me.btnCustomScaleUp) {
@ -1491,6 +1508,7 @@ define([
me.fireEvent('change:scalespn', ['down', me.valueCustomScale], this);
}, this));
}
SSE.getController('Toolbar').onChangeScaleSettings();
},
setValueCustomScale: function(val) {
@ -2495,6 +2513,13 @@ define([
textFitAllColumnsOnOnePage: 'Fit All Columns on One Page',
textFitAllRowsOnOnePage: 'Fit All Rows on One Page',
textScaleCustom: 'Custom',
textScale: 'Scale'
textScale: 'Scale',
textAuto: 'Auto',
textOnePage: 'page',
textFewPages: 'pages',
textManyPages: 'pages',
textHeight: 'Height',
textWidth: 'Width',
textMorePages: 'More pages'
}, SSE.Views.Toolbar || {}));
});

View file

@ -1751,6 +1751,7 @@
"SSE.Views.MainSettingsPrint.textPrintHeadings": "Print Row and Column Headings",
"SSE.Views.MainSettingsPrint.textSettings": "Settings for",
"SSE.Views.MainSettingsPrint.textCustomOptions": "Custom Options",
"SSE.Views.MainSettingsPrint.textCustom": "Custom",
"SSE.Views.NamedRangeEditDlg.errorCreateDefName": "The existing named ranges cannot be edited and the new ones cannot be created<br>at the moment as some of them are being edited.",
"SSE.Views.NamedRangeEditDlg.namePlaceholder": "Defined name",
"SSE.Views.NamedRangeEditDlg.notcriticalErrorTitle": "Warning",
@ -1927,6 +1928,7 @@
"SSE.Views.PrintSettings.textTitle": "Print Settings",
"SSE.Views.PrintSettings.textTitlePDF": "PDF Settings",
"SSE.Views.PrintSettings.textCustomOptions": "Custom Options",
"SSE.Views.PrintSettings.textCustom": "Custom",
"SSE.Views.RightMenu.txtCellSettings": "Cell settings",
"SSE.Views.RightMenu.txtChartSettings": "Chart settings",
"SSE.Views.RightMenu.txtImageSettings": "Image settings",
@ -2410,6 +2412,13 @@
"SSE.Views.Toolbar.txtYen": "¥ Yen",
"SSE.Views.Toolbar.capBtnScale": "Scale to Fit",
"SSE.Views.Toolbar.tipScale": "Scale to Fit",
"SSE.Views.Toolbar.textAuto": "Auto",
"SSE.Views.Toolbar.textOnePage": "page",
"SSE.Views.Toolbar.textFewPages": "pages",
"SSE.Views.Toolbar.textManyPages": "pages",
"SSE.Views.Toolbar.textHeight": "Height",
"SSE.Views.Toolbar.textWidth": "Width",
"SSE.Views.Toolbar.textMorePages": "More pages",
"SSE.Views.Top10FilterDialog.textType": "Show",
"SSE.Views.Top10FilterDialog.txtBottom": "Bottom",
"SSE.Views.Top10FilterDialog.txtItems": "Item",