2020-11-09 17:55:01 +01:00
function initializeYearAndMonths ( ) {
calculateDays ( ) ;
}
function initializeReportView ( ) {
checkForExistingSignature ( ) ;
2023-01-18 13:43:11 +01:00
calculateDays ( ) ;
2020-11-09 17:55:01 +01:00
qbFilterSelectionChange ( ) ;
}
function calculateDays ( ) {
var month = $ ( "#month-select option:selected" ) . val ( ) ;
var year = $ ( "#year-select option:selected" ) . val ( ) ;
var monthInt = parseInt ( month , 10 ) - 1 ;
var begin = moment ( new Date ( year , monthInt , 1 ) ) . date ( ) ;
var end = moment ( new Date ( year , monthInt , 1 ) ) . add ( 1 , "months" ) . add ( - 1 , "days" ) . date ( ) ;
$ ( "#start-day-select" ) . empty ( ) ;
$ ( "#end-day-select" ) . empty ( ) ;
for ( var i = begin ; i <= end ; i ++ ) {
var option = new Option ( i , i ) ;
var option2 = new Option ( i , i ) ;
$ ( "#start-day-select" ) . append ( option ) ;
$ ( "#end-day-select" ) . append ( option2 ) ;
}
$ ( "#start-day-select" ) . val ( 1 ) ;
$ ( "#end-day-select" ) . val ( end ) ;
var startDay = $ ( "#start-day-select option:selected" ) . val ( ) ;
var endDay = $ ( "#end-day-select option:selected" ) . val ( ) ;
if ( startDay === 0 || endDay === 0 || year === 0 || month === 0 || areUndefinedOrNull ( [ month , year , startDay , endDay ] ) ) {
return ;
}
var changeDateSelectionUrl = getChangeDateSelectionUrl ( ) ;
$ . get ( changeDateSelectionUrl , { startDayString : startDay , endDayString : endDay , monthString : month , yearString : year } ) ;
}
2021-03-17 18:44:40 +01:00
function hideSigningParts ( canSign ) {
try {
if ( ! isUndefinedOrNull ( canSign ) ) {
if ( canSign === false ) {
$ ( ".signingContent" ) . hide ( ) ;
} else {
$ ( ".signingContent" ) . show ( ) ;
}
}
2023-03-08 20:17:19 +01:00
} catch ( error ) {
showErrorPopup ( error ) ;
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 ( ) ;
var canvas = document . getElementById ( "sketch-pad" ) ;
var context = canvas . getContext ( "2d" ) ;
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 ( ) ;
checkForExistingSignature ( ) ;
}
function checkForExistingSignature ( ) {
var month = $ ( "#month-select option:selected" ) . val ( ) ;
var year = $ ( "#year-select option:selected" ) . val ( ) ;
var startDay = $ ( "#start-day-select option:selected" ) . val ( ) ;
var endDay = $ ( "#end-day-select option:selected" ) . val ( ) ;
if ( startDay === 0 || endDay === 0 || year === 0 || month === 0 || areUndefinedOrNull ( [ month , year , startDay , endDay ] ) ) {
return ;
}
var changeDateSelectionUrl = getChangeDateSelectionUrl ( ) ;
2021-01-14 16:30:28 +01:00
2020-11-09 17:55:01 +01:00
$ . get ( changeDateSelectionUrl ,
2021-01-14 16:30:28 +01:00
{
startDayString : startDay ,
endDayString : endDay ,
monthString : month ,
yearString : year
2020-11-09 17:55:01 +01:00
} ) ;
}
function qbFilterSelectionChange ( ) {
var selectedOption = $ ( "#qb-filter-select option:selected" ) . val ( ) ;
switch ( selectedOption ) {
case "3" :
$ ( "#team-selection-container" ) . removeClass ( "d-block" ) ;
$ ( "#team-selection-container" ) . addClass ( "d-none" ) ;
$ ( "#customer-selection-container" ) . removeClass ( "d-none" ) ;
$ ( "#customer-selection-container" ) . addClass ( "d-block" ) ;
break ;
case "4" :
$ ( "#customer-selection-container" ) . removeClass ( "d-block" ) ;
$ ( "#customer-selection-container" ) . addClass ( "d-none" ) ;
$ ( "#team-selection-container" ) . removeClass ( "d-none" ) ;
$ ( "#team-selection-container" ) . addClass ( "d-block" ) ;
break ;
default :
$ ( "#customer-selection-container, #team-selection-container" ) . removeClass ( "d-block" ) ;
$ ( "#customer-selection-container, #team-selection-container" ) . addClass ( "d-none" ) ;
break ;
}
var selectedFilterEnumUrl = getSetQbFilterEnumUrl ( ) ;
$ . get ( selectedFilterEnumUrl , { filterEnumString : selectedOption } ) ;
}
2021-02-17 16:59:26 +01:00
function onCustomerSelectionChange ( ) {
var url = getSetCustomerUrl ( ) ;
var selectedCustomerOid = $ ( "#customers-drop-down option:selected" ) . val ( ) ;
$ . get ( url , { customerOid : selectedCustomerOid } ) . done ( function ( ) {
checkForExistingSignature ( ) ;
} ) ;
}
2021-03-17 18:44:40 +01:00
// Lädt die bisher geleisteten Unterschriften
function getSignatures ( signatureOidStrings , containerId ) {
try {
showSpinner ( ) ;
2021-02-17 16:59:26 +01:00
2021-03-17 18:44:40 +01:00
var container = $ ( containerId ) ;
container . html ( "" ) ;
2021-02-17 16:59:26 +01:00
2021-03-17 18:44:40 +01:00
$ . get ( getLoadConfirmationReceiptSignaturesUrl ( ) , { oidsAsString : signatureOidStrings } ) . done ( function ( json ) {
if ( isUndefinedOrNull ( json ) || ! checkJson ( json ) ) {
if ( ! checkJson ( json ) ) {
hideSpinner ( ) ;
2023-01-11 17:26:38 +01:00
logError ( "Ungültiges JSON in loadConfirmationReceiptSignatures. JSON: <" + json + ">" ) ;
}
if ( isUndefinedOrNull ( json ) ) {
logError ( "JSON ist undefined oder null in loadConfirmationReceiptSignatures" ) ;
2021-03-17 18:44:40 +01:00
}
}
2021-02-17 16:59:26 +01:00
2023-01-11 17:26:38 +01:00
logDebug ( "Gültiges JSON in loadConfirmationReceiptSignatures" ) ;
2021-03-17 18:44:40 +01:00
if ( isEmptyOrSpaces ( json ) ) {
hideSpinner ( ) ;
return ;
}
2021-02-17 16:59:26 +01:00
2021-03-17 18:44:40 +01:00
var signatureList = $ . parseJSON ( json ) ;
2021-02-17 16:59:26 +01:00
2021-03-17 18:44:40 +01:00
var newHtml = "" ;
2021-02-17 16:59:26 +01:00
2021-03-17 18:44:40 +01:00
$ . each ( signatureList , function ( index , signature ) {
newHtml += '<div class="row justify-content-md-center mt-2">' +
'<div class="col">' +
'<img src="' + signature + '" class="img-fluid mx-auto d-block"/>' +
"</div>" +
"</div>" ;
} ) ;
2021-02-17 16:59:26 +01:00
2021-03-17 18:44:40 +01:00
container . append ( newHtml ) ;
hideSpinner ( ) ;
} ) ;
} catch ( error ) {
2023-03-08 20:17:19 +01:00
showErrorPopup ( error ) ;
2021-03-17 18:44:40 +01:00
}
}
2021-02-17 16:59:26 +01:00
2021-03-17 18:44:40 +01:00
function cancelSignature ( canSign , signaturePad ) {
try {
if ( canSign === false ) {
hideSignatureContainer ( canSign , signaturePad ) ;
2021-02-17 16:59:26 +01:00
2021-03-17 18:44:40 +01:00
signaturePad . clear ( ) ;
2021-02-17 16:59:26 +01:00
2021-03-17 18:44:40 +01:00
return ;
}
2021-02-17 16:59:26 +01:00
2021-03-17 18:44:40 +01:00
showMessagePopupWithCallback ( "Unterschrift" ,
"Sind Sie sicher, dass Sie die Unterschrift nicht speichern möchten?" ,
2021-02-17 16:59:26 +01:00
function ( ) {
2021-03-17 18:44:40 +01:00
hideSignatureContainer ( canSign , signaturePad ) ;
2021-02-17 16:59:26 +01:00
signaturePad . clear ( ) ;
2021-03-17 18:44:40 +01:00
} ,
false ) ;
2023-03-08 20:17:19 +01:00
} catch ( error ) {
showErrorPopup ( error ) ;
2021-03-17 18:44:40 +01:00
}
2021-02-17 16:59:26 +01:00
}
2021-03-17 18:44:40 +01:00
function hideSignatureContainer ( ) {
$ ( "#report-signature-container-div" ) . removeClass ( "d-block" ) ;
$ ( "#overwriting-signature-alert" ) . removeClass ( "d-block" ) ;
$ ( "#report-form-container" ) . show ( ) ;
2021-02-17 16:59:26 +01:00
}
2022-08-10 14:13:29 +02:00
function showSignaturePad ( overwrite , signatureOidsString , canSign , cardBodyId , customerOid , numberOfEntries , customerName , timeSpan , isEmployeeSignature , employeeName ) {
2021-03-17 18:44:40 +01:00
try {
cardHeaderButtonClick ( cardBodyId ) ;
2022-08-10 14:13:29 +02:00
2021-03-17 18:44:40 +01:00
$ ( "#report-form-container" ) . hide ( ) ;
$ ( "#report-signature-container-div" ) . addClass ( "d-block" ) ;
var plural = "" ;
if ( ! isEmptyOrSpaces ( signatureOidsString ) && signatureOidsString . includes ( "," ) ) {
plural = "en" ;
}
var entryCount = parseInt ( numberOfEntries , 10 ) ;
var leistungPlural = entryCount > 1 ? "en" : "" ;
2022-08-10 14:13:29 +02:00
var signatureGiverName = isEmployeeSignature ? employeeName : customerName ;
$ ( "#report-info-column-h4" ) . html ( "Unterschrift" + plural + " von " + signatureGiverName + " für " + numberOfEntries + " erbrachte Leistung" + leistungPlural + " von " + customerName + " (" + timeSpan + ")" ) ;
2021-03-17 18:44:40 +01:00
if ( overwrite ) {
$ ( "#overwriting-signature-alert" ) . addClass ( "d-block" ) ;
}
getSignatures ( signatureOidsString , "#signature-container-div" ) ;
hideSigningParts ( canSign ) ;
resizeCanvas ( "#report-sketch-pad-canvas" , "#report-canvas-row-div" ) ;
var canvas = document . getElementById ( "report-sketch-pad-canvas" ) ;
2021-02-17 16:59:26 +01:00
2021-03-17 18:44:40 +01:00
var signaturePad = new SignaturePad ( canvas , { backgroundColor : "rgba(255, 255, 255, 0)" } ) ;
var cancelButton = document . getElementById ( "cancel-report-signature-button" ) ;
var saveButton = document . getElementById ( "save-report-signature-button" ) ;
var clearButton = document . getElementById ( "clear-report-canvas-button" ) ;
cancelButton . addEventListener ( "click" , function ( ) {
cancelSignature ( canSign , signaturePad ) ;
} ) ;
saveButton . addEventListener ( "click" , function ( ) {
saveSignature ( customerOid , isEmployeeSignature , overwrite , signaturePad ) ;
} ) ;
clearButton . addEventListener ( "click" , function ( ) {
signaturePad . clear ( ) ;
} ) ;
2023-03-08 20:17:19 +01:00
} catch ( error ) {
showErrorPopup ( error ) ;
2021-03-17 18:44:40 +01:00
}
2021-02-17 16:59:26 +01:00
}
2021-03-17 18:44:40 +01:00
function saveSignature ( customerOid , isEmployeeSignature , overwrite , signaturePad ) {
try {
var clonedCanvas = trimCanvas ( cloneCanvas ( document . getElementById ( "report-sketch-pad-canvas" ) ) ) ;
var context = clonedCanvas . getContext ( "2d" ) ;
context . globalCompositeOperation = "destination-over" ;
context . fillStyle = "white" ;
context . fillRect ( 0 , 0 , clonedCanvas . width , clonedCanvas . height ) ;
var dataUrl = clonedCanvas . toDataURL ( "image/png" ) ;
showMessagePopupWithCallback (
"Unterschrift speichern" ,
"Mit dem Speichern der Unterschrift ist es nicht mehr möglich, die betroffenen Einträge der Zeiterfassung zu ändern." ,
function ( ) {
try {
showSpinner ( ) ;
var url = getCreateSignatureForServiceOverviewUrl ( ) ;
$ . post ( url , { base64SignatureString : dataUrl , customerOidString : customerOid , isCustomerSignature : ! isEmployeeSignature , overwrite : overwrite } ) . done ( function ( json ) {
hideSpinner ( ) ;
if ( isEmptyOrSpaces ( json ) ) {
showMessagePopupWithCallback ( "Unterschrift" ,
"Die Unterschrift wurde erfolgreich gespeichert." ,
function ( ) {
showSpinner ( ) ;
location . reload ( ) ;
} ,
true ) ;
} else {
showMessagePopup ( "Fehler" , json ) ;
signaturePad . clear ( ) ;
}
} ) ;
} catch ( innerEx ) {
2023-03-08 20:17:19 +01:00
showErrorPopup ( innerEx ) ;
2021-03-17 18:44:40 +01:00
}
} ,
false ) ;
} catch ( ex ) {
2023-03-08 20:17:19 +01:00
showErrorPopup ( ex ) ;
2021-03-17 18:44:40 +01:00
}
2020-09-14 19:07:23 +02:00
}