[SSE] Add "Print titles" option to print dialog and page options

This commit is contained in:
Julia Radzhabova 2020-03-17 17:55:37 +03:00
parent c7f6ede2a4
commit a882b4530c
4 changed files with 223 additions and 5 deletions

View file

@ -72,6 +72,7 @@ define([
onAfterRender: function(view) {
this.printSettings.cmbSheet.on('selected', _.bind(this.comboSheetsChange, this, this.printSettings));
this.printSettings.btnOk.on('click', _.bind(this.querySavePrintSettings, this));
this.fillComponents(this.printSettings);
this.registerControlEvents(this.printSettings);
},
@ -157,6 +158,14 @@ define([
panel.chPrintGrid.setValue(props.asc_getGridLines(), true);
panel.chPrintRows.setValue(props.asc_getHeadings(), true);
// var value = props.asc_getPrintTitlesWidth();
// panel.txtRangeTop.setValue((value) ? value : '');
// panel.dataRangeTop = value;
//
// value = props.asc_getPrintTitlesHeight();
// panel.txtRangeLeft.setValue((value) ? value : '');
// panel.dataRangeLeft = value;
},
fillPrintOptions: function(props) {
@ -214,6 +223,9 @@ define([
props.asc_setPageMargins(opt);
props.asc_setPrintTitlesWidth(panel.txtRangeTop.getValue());
props.asc_setPrintTitlesHeight(panel.txtRangeLeft.getValue());
return props;
},
@ -253,6 +265,7 @@ define([
this._changedProps = [];
this.updateSettings(this.printSettingsDlg);
this.printSettingsDlg.cmbSheet.on('selected', _.bind(this.comboSheetsChange, this, this.printSettingsDlg));
this.fillComponents(this.printSettingsDlg, true);
this.fillPrintOptions(this.adjPrintParams);
this.registerControlEvents(this.printSettingsDlg);
},this)
@ -353,6 +366,8 @@ define([
panel.spnMarginRight.on('change', _.bind(this.propertyChange, this, panel));
panel.chPrintGrid.on('change', _.bind(this.propertyChange, this, panel));
panel.chPrintRows.on('change', _.bind(this.propertyChange, this, panel));
panel.btnPresetsTop.menu.on('item:click', _.bind(this.onPresetSelect, this, panel, 'top'));
panel.btnPresetsLeft.menu.on('item:click', _.bind(this.onPresetSelect, this, panel, 'left'));
},
propertyChange: function(panel, scale, combo, record) {
@ -407,9 +422,104 @@ define([
panel.cmbLayout.setValue(value, true);
},
fillComponents: function(panel, selectdata) {
var me = this;
panel.txtRangeTop.validation = function(value) {
if (_.isEmpty(value)) {
return true;
}
var isvalid = me.api.asc_checkDataRange(Asc.c_oAscSelectionDialogType.Chart, value, false);
return (isvalid==Asc.c_oAscError.ID.DataRangeError) ? me.textInvalidRange : true;
};
panel.txtRangeLeft.validation = function(value) {
if (_.isEmpty(value)) {
return true;
}
var isvalid = me.api.asc_checkDataRange(Asc.c_oAscSelectionDialogType.Chart, value, false);
return (isvalid==Asc.c_oAscError.ID.DataRangeError) ? me.textInvalidRange : true;
};
var data = ((selectdata) ? [{caption: this.textSelectRange, value: 'select'}] : []).concat([
{caption: this.textFrozenRows, value: 'frozen'},
{caption: this.textFirstRow, value: 'first'},
{caption: '--'},
{caption: this.textNoRepeat, value: 'empty'}
]);
panel.btnPresetsTop.setMenu(new Common.UI.Menu({
style: 'min-width: 100px;',
maxHeight: 200,
items: data
}));
data = ((selectdata) ? [{caption: this.textSelectRange, value: 'select'}] : []).concat([
{caption: this.textFrozenCols, value: 'frozen'},
{caption: this.textFirstCol, value: 'first'},
{caption: '--'},
{caption: this.textNoRepeat, value: 'empty'}
]);
panel.btnPresetsLeft.setMenu(new Common.UI.Menu({
style: 'min-width: 100px;',
maxHeight: 200,
items: data
}));
},
onPresetSelect: function(panel, type, menu, item) {
var txtRange = (type=='top') ? panel.txtRangeTop : panel.txtRangeLeft;
if (item.value == 'select') {
var me = this;
if (me.api) {
var handlerDlg = function(dlg, result) {
if (result == 'ok') {
var valid = dlg.getSettings();
if (type=='top')
panel.dataRangeTop = valid;
else
panel.dataRangeLeft = valid;
txtRange.setValue(valid);
txtRange.checkValidate();
}
};
var win = new SSE.Views.CellRangeDialog({
handler: handlerDlg
}).on('close', function() {
panel.show();
});
var xy = panel.$window.offset();
panel.hide();
win.show(xy.left + 160, xy.top + 125);
win.setSettings({
api : me.api,
range : (!_.isEmpty(txtRange.getValue()) && (txtRange.checkValidate()==true)) ? txtRange.getValue() : ((type=='top') ? panel.dataRangeTop : panel.dataRangeLeft),
type : Asc.c_oAscSelectionDialogType.Chart
});
}
} else {
var value = '';
if (item.value == 'frozen')
value = this.api.asc_getFrozen(type=='top');
else if (item.value == 'first')
value = this.api.asc_getFirst(type=='top');
txtRange.setValue(value);
txtRange.checkValidate();
if (type=='top')
panel.dataRangeTop = value;
else
panel.dataRangeLeft = value;
}
},
warnCheckMargings: 'Margins are incorrect',
strAllSheets: 'All Sheets',
textWarning: 'Warning',
txtCustom: 'Custom'
txtCustom: 'Custom',
textInvalidRange: 'ERROR! Invalid cells range',
textRepeat: 'Repeat...',
textNoRepeat: 'Not repeat',
textSelectRange: 'Select range...',
textFrozenRows: 'Frozen rows',
textFrozenCols: 'Frozen columns',
textFirstRow: 'First row',
textFirstCol: 'First column'
}, SSE.Controllers.Print || {}));
});

View file

@ -17,6 +17,24 @@
<span id="printadv-dlg-combo-layout" />
</div>
<div id="printadv-dlg-content-to-hide">
<div class="padding-large inner-content" >
<table cols="2" class="no-padding">
<tr>
<td colspan="2" ><label><%= scope.textRepeatTop %></label></td>
</tr>
<tr>
<td class="padding-small"><div id="printadv-dlg-txt-top" style="margin-right: 10px;"></div></td>
<td class="padding-small"><div id="printadv-dlg-presets-top"></div></td>
</tr>
<tr>
<td colspan="2" ><label><%= scope.textRepeatLeft %></label></td>
</tr>
<tr>
<td><div id="printadv-dlg-txt-left" style="margin-right: 10px;"></div></td>
<td><div id="printadv-dlg-presets-left"></div></td>
</tr>
</table>
</div>
<div class="padding-large inner-content" >
<table cols="2" class="no-padding">
<tr>

View file

@ -273,6 +273,27 @@ define([
'<td class="left"><label><%= scope.textPageScaling %></label></td>',
'<td class="right"><span id="advsettings-print-combo-layout" /></td>',
'</tr>','<tr class="divider"></tr>',
'<tr>',
'<td class="left" style="vertical-align: top;"><label><%= scope.strPrintTitles %></label></td>',
'<td class="right" style="vertical-align: top;"><div id="advsettings-margins">',
'<table cols="2" class="no-padding">',
'<tr>',
'<td colspan="2" ><label><%= scope.textRepeatTop %></label></td>',
'</tr>',
'<tr>',
'<td class="padding-small"><div id="advsettings-txt-top" style="margin-right: 10px;"></div></td>',
'<td class="padding-small"><div id="advsettings-presets-top"></div></td>',
'</tr>',
'<tr>',
'<td colspan="2" ><label><%= scope.textRepeatLeft %></label></td>',
'</tr>',
'<tr>',
'<td class="padding-small"><div id="advsettings-txt-left" style="margin-right: 10px;"></div></td>',
'<td class="padding-small"><div id="advsettings-presets-left"></div></td>',
'</tr>',
'</table>',
'</div></td>',
'</tr>','<tr class="divider"></tr>',
'<tr>',
'<td class="left" style="vertical-align: top;"><label><%= scope.strMargins %></label></td>',
'<td class="right" style="vertical-align: top;"><div id="advsettings-margins">',
@ -443,6 +464,36 @@ define([
});
this.spinners.push(this.spnMarginRight);
this.txtRangeTop = new Common.UI.InputField({
el : $markup.findById('#advsettings-txt-top'),
style : 'width: 100%;',
allowBlank : true,
validateOnChange: true
});
this.btnPresetsTop = new Common.UI.Button({
cls: 'btn-text-menu-default',
caption: this.textRepeat,
style: 'width: 95px;',
menu: true
});
this.btnPresetsTop.render( $markup.findById('#advsettings-presets-top')) ;
this.txtRangeLeft = new Common.UI.InputField({
el : $markup.findById('#advsettings-txt-left'),
style : 'width: 100%;',
allowBlank : true,
validateOnChange: true
});
this.btnPresetsLeft = new Common.UI.Button({
cls: 'btn-text-menu-default',
caption: this.textRepeat,
style: 'width: 95px;',
menu: true
});
this.btnPresetsLeft.render( $markup.findById('#advsettings-presets-left')) ;
this.btnOk = new Common.UI.Button({
el: $markup.findById('#advsettings-print-button-save')
});
@ -539,7 +590,11 @@ define([
textFitCols: 'Fit All Columns on One Page',
textFitRows: 'Fit All Rows on One Page',
textCustomOptions: 'Custom Options',
textCustom: 'Custom'
textCustom: 'Custom',
strPrintTitles: 'Print Titles',
textRepeatTop: 'Repeat rows at top',
textRepeatLeft: 'Repeat columns at left',
textRepeat: 'Repeat...'
}, SSE.Views.MainSettingsPrint || {}));
SSE.Views.FileMenuPanels.MainSettingsGeneral = Common.UI.BaseView.extend(_.extend({

View file

@ -51,7 +51,7 @@ define([ 'text!spreadsheeteditor/main/app/template/PrintSettings.template',
options: {
alias: 'PrintSettings',
contentWidth: 280,
height: 475,
height: 575,
buttons: null
},
@ -67,6 +67,7 @@ define([ 'text!spreadsheeteditor/main/app/template/PrintSettings.template',
'<div style="height: 38px; line-height: 38px;" class="div-category">' + this.textPageSize + '</div>',
'<div style="height: 38px; line-height: 38px;" class="div-category">' + this.textPageOrientation + '</div>',
'<div style="height: 38px; line-height: 38px;" class="div-category">' + this.textPageScaling + '</div>',
'<div style="height: 98px; line-height: 33px;" class="div-category">' + this.strPrintTitles + '</div>',
'<div style="height: 108px; line-height: 33px;" class="div-category">' + this.strMargins + '</div>',
'<div style="height: 58px; line-height: 40px;" class="div-category">' + ((this.type == 'print') ? this.strPrint : this.strShow) + '</div>',
'</div>',
@ -228,6 +229,36 @@ define([ 'text!spreadsheeteditor/main/app/template/PrintSettings.template',
itemsTemplate: itemsTemplate
});
this.txtRangeTop = new Common.UI.InputField({
el : $('#printadv-dlg-txt-top'),
style : 'width: 100%;',
allowBlank : true,
validateOnChange: true
});
this.btnPresetsTop = new Common.UI.Button({
cls: 'btn-text-menu-default',
caption: this.textRepeat,
style: 'width: 95px;',
menu: true
});
this.btnPresetsTop.render( $('#printadv-dlg-presets-top')) ;
this.txtRangeLeft = new Common.UI.InputField({
el : $('#printadv-dlg-txt-left'),
style : 'width: 100%;',
allowBlank : true,
validateOnChange: true
});
this.btnPresetsLeft = new Common.UI.Button({
cls: 'btn-text-menu-default',
caption: this.textRepeat,
style: 'width: 95px;',
menu: true
});
this.btnPresetsLeft.render( $('#printadv-dlg-presets-left')) ;
this.btnHide = new Common.UI.Button({
el: $('#printadv-dlg-btn-hide')
});
@ -314,7 +345,7 @@ define([ 'text!spreadsheeteditor/main/app/template/PrintSettings.template',
} else {
this.extended = false;
this.panelDetails.css({'display': 'block'});
this.setHeight(475);
this.setHeight(585);
btn.setCaption(this.textHideDetails);
Common.localStorage.setItem("sse-hide-print-settings", 0);
}
@ -355,7 +386,11 @@ define([ 'text!spreadsheeteditor/main/app/template/PrintSettings.template',
textRange: 'Range',
textIgnore: 'Ignore Print Area',
textCustomOptions: 'Custom Options',
textCustom: 'Custom'
textCustom: 'Custom',
strPrintTitles: 'Print Titles',
textRepeatTop: 'Repeat rows at top',
textRepeatLeft: 'Repeat columns at left',
textRepeat: 'Repeat...'
}, SSE.Views.PrintSettings || {}));
});