2023-05-02 13:03:46 +02:00
function initializeReportView ( ) {
2024-11-12 18:37:23 +01:00
window . checkForExistingSignature ( ) ;
window . qbFilterSelectionChange ( ) ;
2020-11-09 17:55:01 +01:00
}
function calculateDays ( ) {
2024-11-12 18:37:23 +01:00
const month = $ ( "#month-select option:selected" ) . val ( ) ;
const year = $ ( "#year-select option:selected" ) . val ( ) ;
2020-11-09 17:55:01 +01:00
2024-11-12 18:37:23 +01:00
const monthInt = parseInt ( month , 10 ) - 1 ;
2020-11-09 17:55:01 +01:00
2024-11-12 18:37:23 +01:00
const begin = window . moment ( new Date ( year , monthInt , 1 ) ) . date ( ) ;
const end = window . moment ( new Date ( year , monthInt , 1 ) ) . add ( 1 , "months" ) . add ( - 1 , "days" ) . date ( ) ;
2020-11-09 17:55:01 +01:00
$ ( "#start-day-select" ) . empty ( ) ;
$ ( "#end-day-select" ) . empty ( ) ;
2024-11-12 18:37:23 +01:00
for ( let i = begin ; i <= end ; i ++ ) {
const option = new Option ( i , i ) ;
const option2 = new Option ( i , i ) ;
2020-11-09 17:55:01 +01:00
$ ( "#start-day-select" ) . append ( option ) ;
$ ( "#end-day-select" ) . append ( option2 ) ;
}
$ ( "#start-day-select" ) . val ( 1 ) ;
$ ( "#end-day-select" ) . val ( end ) ;
2024-11-12 18:37:23 +01:00
const startDay = $ ( "#start-day-select option:selected" ) . val ( ) ;
const endDay = $ ( "#end-day-select option:selected" ) . val ( ) ;
2020-11-09 17:55:01 +01:00
if ( startDay === 0 || endDay === 0 || year === 0 || month === 0 || areUndefinedOrNull ( [ month , year , startDay , endDay ] ) ) {
return ;
}
2024-11-12 18:37:23 +01:00
const changeDateSelectionUrl = window . getChangeDateSelectionUrl ( ) ;
2020-11-09 17:55:01 +01:00
$ . get ( changeDateSelectionUrl , { startDayString : startDay , endDayString : endDay , monthString : month , yearString : year } ) ;
}
2021-03-17 18:44:40 +01:00
function hideSigningParts ( canSign ) {
2025-03-25 17:36:15 +01:00
if ( ! isUndefinedOrNull ( canSign ) ) {
if ( canSign === false ) {
$ ( ".signingContent" ) . hide ( ) ;
} else {
$ ( ".signingContent" ) . show ( ) ;
2021-03-17 18:44:40 +01:00
}
2021-02-17 16:59:26 +01:00
}
2020-09-21 11:57:10 +02:00
}
2020-09-23 16:00:51 +02:00
function confirmReportSignatureCancellation ( ) {
showMessagePopupWithCallback ( "Unterschrift" , "Sind Sie sicher, dass Sie die Unterschrift nicht speichern möchten?" ,
function ( ) {
$ ( "#report-signature-container" ) . removeClass ( "d-block" ) ;
$ ( "#report-form-container" ) . show ( ) ;
2024-11-12 18:37:23 +01:00
const canvas = document . getElementById ( "sketch-pad" ) ;
const context = canvas . getContext ( "2d" , { willReadFrequently : true } ) ;
2020-09-23 16:00:51 +02:00
context . clearRect ( 0 , 0 , canvas . width , canvas . height ) ;
2020-09-14 19:07:23 +02:00
2020-09-23 16:00:51 +02:00
} , false ) ;
2020-11-09 17:55:01 +01:00
}
function onMonthOrYearChange ( ) {
calculateDays ( ) ;
2024-11-12 18:37:23 +01:00
window . checkForExistingSignature ( ) ;
2020-11-09 17:55:01 +01:00
}
2023-04-24 19:22:09 +02:00
function cancelSignature ( canSign , signaturePad , canvasId , signatureContainer , overridingAlertId ) {
2025-03-25 17:36:15 +01:00
if ( canSign === false ) {
hideSignatureContainer ( signatureContainer , overridingAlertId ) ;
signaturePad . clear ( ) ;
2023-04-24 19:22:09 +02:00
2025-03-25 17:36:15 +01:00
return ;
}
const canvas = document . getElementById ( canvasId ) ;
const twoDContext = canvas . getContext ( "2d" , { willReadFrequently : true } ) ;
2023-04-24 19:22:09 +02:00
2025-03-25 17:36:15 +01:00
const width = canvas . getBoundingClientRect ( ) . width ;
const height = canvas . getBoundingClientRect ( ) . height ;
2021-02-17 16:59:26 +01:00
2025-03-25 17:36:15 +01:00
if ( width === 0 || height === 0 ) {
hideSignatureContainer ( signatureContainer , overridingAlertId ) ;
signaturePad . clear ( ) ;
2021-02-17 16:59:26 +01:00
2025-03-25 17:36:15 +01:00
return ;
}
2021-02-17 16:59:26 +01:00
2025-03-25 17:36:15 +01:00
const isEmpty = signaturePad . isEmpty ( ) ;
2023-04-24 19:22:09 +02:00
2025-03-25 17:36:15 +01:00
if ( isEmpty === true ) {
hideSignatureContainer ( signatureContainer , overridingAlertId ) ;
signaturePad . clear ( ) ;
2023-04-24 19:22:09 +02:00
2025-03-25 17:36:15 +01:00
return ;
2021-03-17 18:44:40 +01:00
}
2025-03-25 17:36:15 +01:00
showMessagePopupWithCallback ( "Unterschrift" ,
"Sind Sie sicher, dass Sie die Unterschrift nicht speichern möchten?" ,
function ( ) {
hideSignatureContainer ( signatureContainer , overridingAlertId ) ;
signaturePad . clear ( ) ;
} ,
false ) ;
2021-02-17 16:59:26 +01:00
}
2023-04-24 19:22:09 +02:00
function hideSignatureContainer ( signatureContainer , overridingAlertId ) {
2024-11-12 18:37:23 +01:00
$ ( ` # ${ signatureContainer } , # ${ overridingAlertId } ` ) . removeClass ( "d-block" ) ;
2021-03-17 18:44:40 +01:00
$ ( "#report-form-container" ) . show ( ) ;
2021-02-17 16:59:26 +01:00
}
2023-04-24 19:22:09 +02:00
function saveSignature ( customerOid , isEmployeeSignature , overwrite , signaturePad , canvasId ) {
2025-03-25 17:36:15 +01:00
const canvas = document . getElementById ( canvasId ) ;
const clonedCanvas = cloneCanvas ( canvas ) ;
const trimmedCanvas = trimCanvas ( clonedCanvas ) ;
const context = trimmedCanvas . getContext ( "2d" , { willReadFrequently : true } ) ;
context . globalCompositeOperation = "destination-over" ;
context . fillStyle = "white" ;
context . fillRect ( 0 , 0 , trimmedCanvas . width , trimmedCanvas . height ) ;
const dataUrl = trimmedCanvas . toDataURL ( "image/png" ) ;
showSpinner ( ) ;
const url = window . getCreateSignatureForServiceOverviewUrl ( ) ;
$ . post ( url , { base64SignatureString : dataUrl , customerOidString : customerOid , isCustomerSignature : ! isEmployeeSignature , overwrite : overwrite } ) . done ( function ( json ) {
hideSpinner ( ) ;
if ( isEmptyOrSpaces ( json ) ) {
showMessagePopupWithHtmlAndCallback ( "Unterschrift" ,
"Die Unterschrift wurde erfolgreich gespeichert.<br/><br/>Verändern Sie jedoch Einträge der Zeiterfassung in dem ausgewählten Zeitraum, muss die Unterschrift erneut geleistet werden." , false ,
function ( ) {
showSpinner ( ) ;
// ToDo: Seite neuladen und Quittierungsbelegsobjekt neuerstellen!
location . reload ( ) ;
} ,
true ) ;
} else {
showMessagePopup ( "Fehler" , json ) ;
signaturePad . clear ( ) ;
}
} ) ;
2020-09-14 19:07:23 +02:00
}