2022-10-21 20:22:16 +00:00
/ *
*
* ( c ) Copyright Ascensio System SIA 2010 - 2022
*
* This program is a free software product . You can redistribute it and / or
* modify it under the terms of the GNU Affero General Public License ( AGPL )
* version 3 as published by the Free Software Foundation . In accordance with
* Section 7 ( a ) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non - infringement
* of any third - party rights .
*
* This program is distributed WITHOUT ANY WARRANTY ; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . For
* details , see the GNU AGPL at : http : //www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at 20 A - 12 Ernesta Birznieka - Upisha
* street , Riga , Latvia , EU , LV - 1050.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices , as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7 ( b ) of the License you must retain the original Product
* logo when distributing the program . Pursuant to Section 7 ( e ) we decline to
* grant you any rights under trademark law for use of our trademarks .
*
* All the Product ' s GUI elements , including illustrations and icon sets , as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution - ShareAlike 4.0 International . See the License
* terms at http : //creativecommons.org/licenses/by-sa/4.0/legalcode
*
* /
define ( [
'core' ,
'documenteditor/main/app/view/FileMenuPanels'
] , function ( ) {
'use strict' ;
DE . Controllers . Print = Backbone . Controller . extend ( _ . extend ( {
views : [
'PrintWithPreview'
] ,
initialize : function ( ) {
this . adjPrintParams = new Asc . asc _CAdjustPrint ( ) ;
2022-10-26 19:13:10 +00:00
this . _state = {
2022-11-15 13:45:28 +00:00
lock _doc : false ,
firstPrintPage : 0
2022-10-26 19:13:10 +00:00
} ;
2022-10-21 20:22:16 +00:00
this . _navigationPreview = {
pageCount : false ,
currentPage : 0 ,
currentPreviewPage : 0
} ;
this . _isPreviewVisible = false ;
this . addListeners ( {
'PrintWithPreview' : {
'show' : _ . bind ( this . onShowMainSettingsPrint , this ) ,
'render:after' : _ . bind ( this . onAfterRender , this )
}
} ) ;
} ,
onLaunch : function ( ) {
this . printSettings = this . createView ( 'PrintWithPreview' ) ;
} ,
onAfterRender : function ( view ) {
var me = this ;
this . printSettings . menu . on ( 'menu:hide' , _ . bind ( this . onHidePrintMenu , this ) ) ;
2022-10-24 16:02:05 +00:00
this . printSettings . btnPrint . on ( 'click' , _ . bind ( this . onBtnPrint , this , true ) ) ;
this . printSettings . btnPrintPdf . on ( 'click' , _ . bind ( this . onBtnPrint , this , false ) ) ;
2022-10-21 20:22:16 +00:00
this . printSettings . btnPrevPage . on ( 'click' , _ . bind ( this . onChangePreviewPage , this , false ) ) ;
this . printSettings . btnNextPage . on ( 'click' , _ . bind ( this . onChangePreviewPage , this , true ) ) ;
this . printSettings . txtNumberPage . on ( {
'keypress:after' : _ . bind ( this . onKeypressPageNumber , this ) ,
'keyup:after' : _ . bind ( this . onKeyupPageNumber , this )
} ) ;
this . printSettings . txtNumberPage . cmpEl . find ( 'input' ) . on ( 'blur' , _ . bind ( this . onBlurPageNumber , this ) ) ;
this . printSettings . cmbPaperSize . on ( 'selected' , _ . bind ( this . onPaperSizeSelect , this ) ) ;
this . printSettings . cmbPaperOrientation . on ( 'selected' , _ . bind ( this . onPaperOrientSelect , this ) ) ;
this . printSettings . cmbPaperMargins . on ( 'selected' , _ . bind ( this . onPaperMarginsSelect , this ) ) ;
this . printSettings . cmbRange . on ( 'selected' , _ . bind ( this . comboRangeChange , this ) ) ;
2022-10-25 21:22:23 +00:00
this . printSettings . inputPages . on ( 'changing' , _ . bind ( this . inputPagesChanging , this ) ) ;
this . printSettings . inputPages . validation = function ( value ) {
2022-10-25 18:40:16 +00:00
if ( ! _ . isEmpty ( value ) && /[0-9,\-]/ . test ( value ) ) {
var res = [ ] ,
arr = value . split ( ',' ) ;
2022-11-18 11:47:58 +00:00
if ( me . _isPrint && arr . length > 1 )
return me . txtPrintRangeSingleRange ;
2022-10-25 18:40:16 +00:00
for ( var i = 0 ; i < arr . length ; i ++ ) {
var item = arr [ i ] ;
if ( ! item ) // empty
return me . txtPrintRangeInvalid ;
var str = item . match ( /\-/g ) ;
if ( str && str . length > 1 ) // more than 1 symbol '-'
return me . txtPrintRangeInvalid ;
if ( ! str ) { // one number
var num = parseInt ( item ) - 1 ;
( num >= 0 ) && res . push ( num ) ;
} else { // range
var pages = item . split ( '-' ) ,
start = ( pages [ 0 ] ? parseInt ( pages [ 0 ] ) - 1 : 0 ) ,
end = ( pages [ 1 ] ? parseInt ( pages [ 1 ] ) - 1 : me . _navigationPreview . pageCount - 1 ) ;
if ( start > end ) {
var num = start ;
start = end ;
end = num ;
}
for ( var j = start ; j <= end ; j ++ ) {
( j >= 0 ) && res . push ( j ) ;
}
}
}
if ( res . length > 0 ) {
2022-11-15 13:45:28 +00:00
me . _state . firstPrintPage = res [ 0 ] ;
2022-10-25 18:40:16 +00:00
return true ;
}
}
return me . txtPrintRangeInvalid ;
} ;
2022-10-21 20:22:16 +00:00
Common . NotificationCenter . on ( 'window:resize' , _ . bind ( function ( ) {
if ( this . _isPreviewVisible ) {
this . api . asc _drawPrintPreview ( this . _navigationPreview . currentPreviewPage ) ;
}
} , this ) ) ;
2022-10-25 20:56:46 +00:00
Common . NotificationCenter . on ( 'margins:update' , _ . bind ( this . onUpdateLastCustomMargins , this ) ) ;
2022-10-21 20:22:16 +00:00
var eventname = ( /Firefox/i . test ( navigator . userAgent ) ) ? 'DOMMouseScroll' : 'mousewheel' ;
this . printSettings . $previewBox . on ( eventname , _ . bind ( this . onPreviewWheel , this ) ) ;
} ,
setMode : function ( mode ) {
this . mode = mode ;
this . printSettings && this . printSettings . setMode ( mode ) ;
} ,
setApi : function ( o ) {
this . api = o ;
this . api . asc _registerCallback ( 'asc_onDocSize' , _ . bind ( this . onApiPageSize , this ) ) ;
this . api . asc _registerCallback ( 'asc_onPageOrient' , _ . bind ( this . onApiPageOrient , this ) ) ;
this . api . asc _registerCallback ( 'asc_onSectionProps' , _ . bind ( this . onSectionProps , this ) ) ;
this . api . asc _registerCallback ( 'asc_onCountPages' , _ . bind ( this . onCountPages , this ) ) ;
this . api . asc _registerCallback ( 'asc_onCurrentPage' , _ . bind ( this . onCurrentPage , this ) ) ;
2022-10-26 19:13:10 +00:00
this . api . asc _registerCallback ( 'asc_onLockDocumentProps' , _ . bind ( this . onApiLockDocumentProps , this ) ) ;
this . api . asc _registerCallback ( 'asc_onUnLockDocumentProps' , _ . bind ( this . onApiUnLockDocumentProps , this ) ) ;
2022-10-21 20:22:16 +00:00
return this ;
} ,
2022-11-17 19:47:18 +00:00
findPagePreset : function ( w , h ) {
var width = ( w < h ) ? w : h ,
height = ( w < h ) ? h : w ;
var panel = this . printSettings ;
var store = panel . cmbPaperSize . store ,
item = null ;
for ( var i = 0 ; i < store . length - 1 ; i ++ ) {
var rec = store . at ( i ) ,
size = rec . get ( 'size' ) ,
pagewidth = size [ 0 ] ,
pageheight = size [ 1 ] ;
if ( Math . abs ( pagewidth - width ) < 0.1 && Math . abs ( pageheight - height ) < 0.1 ) {
item = rec ;
break ;
}
}
return item ? item . get ( 'caption' ) : undefined ;
} ,
2022-10-21 20:22:16 +00:00
onApiPageSize : function ( w , h ) {
this . _state . pgsize = [ w , h ] ;
if ( this . printSettings . isVisible ( ) ) {
var width = this . _state . pgorient ? w : h ,
height = this . _state . pgorient ? h : w ;
var panel = this . printSettings ;
var store = panel . cmbPaperSize . store ,
item = null ;
for ( var i = 0 ; i < store . length - 1 ; i ++ ) {
var rec = store . at ( i ) ,
size = rec . get ( 'size' ) ,
pagewidth = size [ 0 ] ,
pageheight = size [ 1 ] ;
if ( Math . abs ( pagewidth - width ) < 0.1 && Math . abs ( pageheight - height ) < 0.1 ) {
item = rec ;
break ;
}
}
if ( item )
panel . cmbPaperSize . setValue ( item . get ( 'value' ) ) ;
else
panel . cmbPaperSize . setValue ( this . txtCustom + ' (' + parseFloat ( Common . Utils . Metric . fnRecalcFromMM ( width ) . toFixed ( 2 ) ) + Common . Utils . Metric . getCurrentMetricName ( ) + ' x ' +
parseFloat ( Common . Utils . Metric . fnRecalcFromMM ( height ) . toFixed ( 2 ) ) + Common . Utils . Metric . getCurrentMetricName ( ) + ')' ) ;
} else {
this . isFillProps = false ;
}
} ,
onApiPageOrient : function ( isportrait ) {
2022-10-26 19:13:10 +00:00
this . _state . pgorient = ! ! isportrait ;
2022-10-21 20:22:16 +00:00
if ( this . printSettings . isVisible ( ) ) {
2022-10-26 19:13:10 +00:00
var item = this . printSettings . cmbPaperOrientation . store . findWhere ( { value : this . _state . pgorient ? Asc . c _oAscPageOrientation . PagePortrait : Asc . c _oAscPageOrientation . PageLandscape } ) ;
2022-10-21 20:22:16 +00:00
if ( item ) this . printSettings . cmbPaperOrientation . setValue ( item . get ( 'value' ) ) ;
}
} ,
onSectionProps : function ( props ) {
2022-10-26 19:13:10 +00:00
if ( ! props ) return ;
2022-10-21 20:22:16 +00:00
this . _state . sectionprops = props ;
if ( this . printSettings . isVisible ( ) ) {
var left = props . get _LeftMargin ( ) ,
top = props . get _TopMargin ( ) ,
right = props . get _RightMargin ( ) ,
bottom = props . get _BottomMargin ( ) ;
this . _state . pgmargins = [ top , left , bottom , right ] ;
var store = this . printSettings . cmbPaperMargins . store ,
item = null ;
for ( var i = 0 ; i < store . length - 1 ; i ++ ) {
var rec = store . at ( i ) ,
size = rec . get ( 'size' ) ;
if ( typeof ( size ) == 'object' &&
Math . abs ( size [ 0 ] - top ) < 0.1 && Math . abs ( size [ 1 ] - left ) < 0.1 &&
Math . abs ( size [ 2 ] - bottom ) < 0.1 && Math . abs ( size [ 3 ] - right ) < 0.1 ) {
item = rec ;
break ;
}
}
if ( item )
this . printSettings . cmbPaperMargins . setValue ( item . get ( 'value' ) ) ;
else
this . printSettings . cmbPaperMargins . setValue ( this . txtCustom ) ;
}
} ,
comboRangeChange : function ( combo , record ) {
if ( record . value === - 1 ) {
2022-10-25 18:40:16 +00:00
var me = this ;
setTimeout ( function ( ) {
2022-10-25 21:22:23 +00:00
me . printSettings . inputPages . focus ( ) ;
2022-10-25 18:40:16 +00:00
} , 50 ) ;
2022-10-21 20:22:16 +00:00
} else {
2022-10-25 21:22:23 +00:00
this . printSettings . inputPages . setValue ( '' ) ;
2022-10-21 20:22:16 +00:00
}
2022-10-25 21:22:23 +00:00
this . printSettings . inputPages . showError ( ) ;
2022-10-21 20:22:16 +00:00
} ,
onCountPages : function ( count ) {
this . _navigationPreview . pageCount = count ;
if ( this . _navigationPreview . currentPreviewPage > count - 1 ) {
this . _navigationPreview . currentPreviewPage = Math . max ( 0 , count - 1 ) ;
if ( this . printSettings . isVisible ( ) ) {
this . api . asc _drawPrintPreview ( this . _navigationPreview . currentPreviewPage ) ;
this . updateNavigationButtons ( this . _navigationPreview . currentPreviewPage , count ) ;
}
}
} ,
onCurrentPage : function ( number ) {
this . _navigationPreview . currentPreviewPage = number ;
if ( this . printSettings . isVisible ( ) ) {
this . api . asc _drawPrintPreview ( this . _navigationPreview . currentPreviewPage ) ;
this . updateNavigationButtons ( this . _navigationPreview . currentPreviewPage , this . _navigationPreview . pageCount ) ;
}
} ,
onShowMainSettingsPrint : function ( ) {
var me = this ;
this . printSettings . $previewBox . removeClass ( 'hidden' ) ;
2022-10-25 20:56:46 +00:00
this . onUpdateLastCustomMargins ( this . _state . lastmargins ) ;
2022-10-26 19:13:10 +00:00
this . _state . pgsize && this . onApiPageSize ( this . _state . pgsize [ 0 ] , this . _state . pgsize [ 1 ] ) ;
2022-10-21 20:22:16 +00:00
this . onApiPageOrient ( this . _state . pgorient ) ;
2022-10-26 19:13:10 +00:00
this . _state . sectionprops && this . onSectionProps ( this . _state . sectionprops ) ;
2022-10-21 20:22:16 +00:00
var opts = new Asc . asc _CDownloadOptions ( null , Common . Utils . isChrome || Common . Utils . isOpera || Common . Utils . isGecko && Common . Utils . firefoxVersion > 86 ) ;
opts . asc _setAdvancedOptions ( this . adjPrintParams ) ;
2022-10-24 11:16:34 +00:00
this . api . asc _initPrintPreview ( 'print-preview' , opts ) ;
2022-10-21 20:22:16 +00:00
this . _navigationPreview . currentPreviewPage = this . _navigationPreview . currentPage = this . api . getCurrentPage ( ) ;
this . api . asc _drawPrintPreview ( this . _navigationPreview . currentPreviewPage ) ;
this . updateNavigationButtons ( this . _navigationPreview . currentPreviewPage , this . _navigationPreview . pageCount ) ;
2022-10-26 19:13:10 +00:00
this . SetDisabled ( ) ;
2022-10-27 12:29:06 +00:00
this . _isPreviewVisible = true ;
2022-10-21 20:22:16 +00:00
} ,
onPaperSizeSelect : function ( combo , record ) {
this . _state . pgsize = [ 0 , 0 ] ;
if ( record . value !== - 1 ) {
if ( this . checkPageSize ( record . size [ 0 ] , record . size [ 1 ] ) ) {
var section = this . api . asc _GetSectionProps ( ) ;
this . onApiPageSize ( section . get _W ( ) , section . get _H ( ) ) ;
return ;
} else
this . api . change _DocSize ( record . size [ 0 ] , record . size [ 1 ] ) ;
} else {
var win , props ,
me = this ;
win = new DE . Views . PageSizeDialog ( {
checkPageSize : _ . bind ( this . checkPageSize , this ) ,
handler : function ( dlg , result ) {
if ( result == 'ok' ) {
props = dlg . getSettings ( ) ;
me . api . change _DocSize ( props [ 0 ] , props [ 1 ] ) ;
Common . NotificationCenter . trigger ( 'edit:complete' ) ;
}
}
} ) ;
win . show ( ) ;
win . setSettings ( me . api . asc _GetSectionProps ( ) ) ;
}
Common . NotificationCenter . trigger ( 'edit:complete' ) ;
} ,
onPaperMarginsSelect : function ( combo , record ) {
this . _state . pgmargins = undefined ;
if ( record . value !== - 1 ) {
if ( this . checkPageSize ( undefined , undefined , record . size [ 1 ] , record . size [ 3 ] , record . size [ 0 ] , record . size [ 2 ] ) ) {
this . onSectionProps ( this . api . asc _GetSectionProps ( ) ) ;
return ;
} else {
var props = new Asc . CDocumentSectionProps ( ) ;
props . put _TopMargin ( record . size [ 0 ] ) ;
props . put _LeftMargin ( record . size [ 1 ] ) ;
props . put _BottomMargin ( record . size [ 2 ] ) ;
props . put _RightMargin ( record . size [ 3 ] ) ;
this . api . asc _SetSectionProps ( props ) ;
}
} else {
var win , props ,
me = this ;
win = new DE . Views . PageMarginsDialog ( {
api : me . api ,
handler : function ( dlg , result ) {
if ( result == 'ok' ) {
2022-10-25 20:56:46 +00:00
props = dlg . getSettings ( ) ;
2022-10-21 20:22:16 +00:00
Common . localStorage . setItem ( "de-pgmargins-top" , props . get _TopMargin ( ) ) ;
Common . localStorage . setItem ( "de-pgmargins-left" , props . get _LeftMargin ( ) ) ;
Common . localStorage . setItem ( "de-pgmargins-bottom" , props . get _BottomMargin ( ) ) ;
Common . localStorage . setItem ( "de-pgmargins-right" , props . get _RightMargin ( ) ) ;
2022-10-25 20:56:46 +00:00
Common . NotificationCenter . trigger ( 'margins:update' , props ) ;
2022-10-21 20:22:16 +00:00
me . api . asc _SetSectionProps ( props ) ;
Common . NotificationCenter . trigger ( 'edit:complete' ) ;
}
}
} ) ;
win . show ( ) ;
win . setSettings ( me . api . asc _GetSectionProps ( ) ) ;
}
Common . NotificationCenter . trigger ( 'edit:complete' ) ;
} ,
2022-10-25 20:56:46 +00:00
onUpdateLastCustomMargins : function ( props ) {
this . _state . lastmargins = props ;
if ( this . printSettings . isVisible ( ) ) {
var top = props ? props . get _TopMargin ( ) : Common . localStorage . getItem ( "de-pgmargins-top" ) ,
left = props ? props . get _LeftMargin ( ) : Common . localStorage . getItem ( "de-pgmargins-left" ) ,
bottom = props ? props . get _BottomMargin ( ) : Common . localStorage . getItem ( "de-pgmargins-bottom" ) ,
right = props ? props . get _RightMargin ( ) : Common . localStorage . getItem ( "de-pgmargins-right" ) ;
if ( top !== null && left !== null && bottom !== null && right !== null ) {
var rec = this . printSettings . cmbPaperMargins . store . at ( 0 ) ;
if ( rec . get ( 'value' ) === - 2 )
rec . set ( 'size' , [ parseFloat ( top ) , parseFloat ( left ) , parseFloat ( bottom ) , parseFloat ( right ) ] ) ;
else
this . printSettings . cmbPaperMargins . store . unshift ( { value : - 2 , displayValue : this . textMarginsLast , size : [ parseFloat ( top ) , parseFloat ( left ) , parseFloat ( bottom ) , parseFloat ( right ) ] } ) ;
this . printSettings . cmbPaperMargins . onResetItems ( ) ;
}
}
} ,
2022-10-21 20:22:16 +00:00
onPaperOrientSelect : function ( combo , record ) {
this . _state . pgorient = undefined ;
2022-10-25 21:22:23 +00:00
if ( this . api ) {
2022-10-21 20:22:16 +00:00
this . api . change _PageOrient ( record . value === Asc . c _oAscPageOrientation . PagePortrait ) ;
}
Common . NotificationCenter . trigger ( 'edit:complete' ) ;
} ,
checkPageSize : function ( width , height , left , right , top , bottom ) {
var section = this . api . asc _GetSectionProps ( ) ;
( width === undefined ) && ( width = parseFloat ( section . get _W ( ) . toFixed ( 4 ) ) ) ;
( height === undefined ) && ( height = parseFloat ( section . get _H ( ) . toFixed ( 4 ) ) ) ;
( left === undefined ) && ( left = parseFloat ( section . get _LeftMargin ( ) . toFixed ( 4 ) ) ) ;
( right === undefined ) && ( right = parseFloat ( section . get _RightMargin ( ) . toFixed ( 4 ) ) ) ;
( top === undefined ) && ( top = parseFloat ( section . get _TopMargin ( ) . toFixed ( 4 ) ) ) ;
( bottom === undefined ) && ( bottom = parseFloat ( section . get _BottomMargin ( ) . toFixed ( 4 ) ) ) ;
var gutterLeft = section . get _GutterAtTop ( ) ? 0 : parseFloat ( section . get _Gutter ( ) . toFixed ( 4 ) ) ,
gutterTop = section . get _GutterAtTop ( ) ? parseFloat ( section . get _Gutter ( ) . toFixed ( 4 ) ) : 0 ;
var errmsg = null ;
if ( left + right + gutterLeft > width - 12.7 )
errmsg = this . txtMarginsW ;
else if ( top + bottom + gutterTop > height - 2.6 )
errmsg = this . txtMarginsH ;
if ( errmsg ) {
Common . UI . warning ( {
title : this . notcriticalErrorTitle ,
msg : errmsg ,
callback : function ( ) {
Common . NotificationCenter . trigger ( 'edit:complete' ) ;
}
} ) ;
return true ;
}
} ,
getPrintParams : function ( ) {
return this . adjPrintParams ;
} ,
onHidePrintMenu : function ( ) {
if ( this . _isPreviewVisible ) {
2022-11-18 11:47:58 +00:00
this . api . asc _closePrintPreview && this . api . asc _closePrintPreview ( ) ;
2022-10-21 20:22:16 +00:00
this . _isPreviewVisible = false ;
}
} ,
onChangePreviewPage : function ( next ) {
var index = this . _navigationPreview . currentPreviewPage ;
if ( next ) {
index ++ ;
index = Math . min ( index , this . _navigationPreview . pageCount - 1 ) ;
} else {
index -- ;
index = Math . max ( index , 0 ) ;
}
this . api . goToPage ( index ) ;
} ,
onKeypressPageNumber : function ( input , e ) {
if ( e . keyCode === Common . UI . Keys . RETURN ) {
var box = this . printSettings . $el . find ( '#print-number-page' ) ,
edit = box . find ( 'input[type=text]' ) , page = parseInt ( edit . val ( ) ) ;
if ( ! page || page > this . _navigationPreview . pageCount || page < 0 ) {
edit . select ( ) ;
this . printSettings . txtNumberPage . setValue ( this . _navigationPreview . currentPreviewPage + 1 ) ;
this . printSettings . txtNumberPage . checkValidate ( ) ;
return false ;
}
box . focus ( ) ; // for IE
this . api . goToPage ( page - 1 ) ;
this . api . asc _enableKeyEvents ( true ) ;
return false ;
}
} ,
onKeyupPageNumber : function ( input , e ) {
if ( e . keyCode === Common . UI . Keys . ESC ) {
var box = this . printSettings . $el . find ( '#print-number-page' ) ;
box . focus ( ) ; // for IE
this . api . asc _enableKeyEvents ( true ) ;
return false ;
}
} ,
onBlurPageNumber : function ( ) {
if ( this . printSettings . txtNumberPage . getValue ( ) != this . _navigationPreview . currentPreviewPage + 1 ) {
this . printSettings . txtNumberPage . setValue ( this . _navigationPreview . currentPreviewPage + 1 ) ;
this . printSettings . txtNumberPage . checkValidate ( ) ;
}
} ,
onPreviewWheel : function ( e ) {
if ( e . ctrlKey ) {
e . preventDefault ( ) ;
e . stopImmediatePropagation ( ) ;
}
var forward = ( e . deltaY || ( e . detail && - e . detail ) || e . wheelDelta ) < 0 ;
this . onChangePreviewPage ( forward ) ;
} ,
updateNavigationButtons : function ( page , count ) {
this . _navigationPreview . currentPage = page ;
this . printSettings . updateCurrentPage ( page ) ;
this . _navigationPreview . pageCount = count ;
this . printSettings . updateCountOfPages ( count ) ;
this . disableNavButtons ( ) ;
} ,
disableNavButtons : function ( force ) {
if ( force ) {
this . printSettings . btnPrevPage . setDisabled ( true ) ;
this . printSettings . btnNextPage . setDisabled ( true ) ;
return ;
}
var curPage = this . _navigationPreview . currentPage ,
pageCount = this . _navigationPreview . pageCount ;
this . printSettings . btnPrevPage . setDisabled ( curPage < 1 ) ;
this . printSettings . btnNextPage . setDisabled ( curPage > pageCount - 2 ) ;
} ,
2022-10-24 16:02:05 +00:00
onBtnPrint : function ( print ) {
2022-11-18 11:47:58 +00:00
this . _isPrint = print ;
2022-10-25 21:22:23 +00:00
if ( this . printSettings . cmbRange . getValue ( ) === - 1 && this . printSettings . inputPages . checkValidate ( ) !== true ) {
this . printSettings . inputPages . focus ( ) ;
this . isInputFirstChange = true ;
2022-10-25 18:40:16 +00:00
return ;
}
2022-11-15 13:45:28 +00:00
if ( this . printSettings . cmbRange . getValue ( ) === 'all' )
this . _state . firstPrintPage = 0 ;
else if ( this . printSettings . cmbRange . getValue ( ) === 'current' )
this . _state . firstPrintPage = this . _navigationPreview . currentPage ;
2022-11-16 12:38:00 +00:00
var size = this . api . asc _getPageSize ( this . _state . firstPrintPage ) ;
2022-11-15 13:45:28 +00:00
this . adjPrintParams . asc _setNativeOptions ( {
pages : this . printSettings . cmbRange . getValue ( ) === - 1 ? this . printSettings . inputPages . getValue ( ) : this . printSettings . cmbRange . getValue ( ) ,
2022-11-17 19:47:18 +00:00
paperSize : {
w : size ? size [ 'W' ] : undefined ,
h : size ? size [ 'H' ] : undefined ,
preset : size ? this . findPagePreset ( size [ 'W' ] , size [ 'H' ] ) : undefined
} ,
2022-11-16 12:38:00 +00:00
paperOrientation : size ? ( size [ 'H' ] > size [ 'W' ] ? 'portrait' : 'landscape' ) : null
2022-11-15 13:45:28 +00:00
} ) ;
2022-10-24 16:02:05 +00:00
if ( print ) {
var opts = new Asc . asc _CDownloadOptions ( null , Common . Utils . isChrome || Common . Utils . isOpera || Common . Utils . isGecko && Common . Utils . firefoxVersion > 86 ) ;
opts . asc _setAdvancedOptions ( this . adjPrintParams ) ;
this . api . asc _Print ( opts ) ;
} else {
var opts = new Asc . asc _CDownloadOptions ( Asc . c _oAscFileType . PDF ) ;
opts . asc _setAdvancedOptions ( this . adjPrintParams ) ;
this . api . asc _DownloadAs ( opts ) ;
}
this . printSettings . menu . hide ( ) ;
} ,
2022-10-25 21:22:23 +00:00
inputPagesChanging : function ( input , value ) {
this . isInputFirstChange && this . printSettings . inputPages . showError ( ) ;
this . isInputFirstChange = false ;
2022-10-25 18:40:16 +00:00
if ( value . length < 1 )
2022-11-15 13:45:28 +00:00
this . printSettings . cmbRange . setValue ( 'all' ) ;
2022-10-25 18:40:16 +00:00
else if ( this . printSettings . cmbRange . getValue ( ) !== - 1 )
this . printSettings . cmbRange . setValue ( - 1 ) ;
} ,
2022-10-26 19:13:10 +00:00
onApiLockDocumentProps : function ( ) {
this . _state . lock _doc = true ;
this . SetDisabled ( ) ;
} ,
onApiUnLockDocumentProps : function ( ) {
this . _state . lock _doc = false ;
this . SetDisabled ( ) ;
} ,
SetDisabled : function ( ) {
if ( this . printSettings . isVisible ( ) ) {
var disable = ! this . mode . isEdit || this . _state . lock _doc ;
this . printSettings . cmbPaperSize . setDisabled ( disable ) ;
this . printSettings . cmbPaperMargins . setDisabled ( disable ) ;
this . printSettings . cmbPaperOrientation . setDisabled ( disable ) ;
}
} ,
2022-10-25 18:40:16 +00:00
txtCustom : 'Custom' ,
2022-10-25 20:56:46 +00:00
txtPrintRangeInvalid : 'Invalid print range' ,
2022-11-18 11:47:58 +00:00
textMarginsLast : 'Last Custom' ,
txtPrintRangeSingleRange : 'Enter either a single page number or a single page range (for example, 5-12). Or you can Print to PDF.'
2022-10-21 20:22:16 +00:00
} , DE . Controllers . Print || { } ) ) ;
} ) ;