function getDateTimeStringWithLeadingZeros(pDate) { var dateStr = getDateStringWithLeadingZeros(pDate); var hh = (pDate.getHours() < 10 ? "0" : "") + pDate.getHours(); var m = (pDate.getMinutes() < 10 ? "0" : "") + pDate.getMinutes(); var ss = (pDate.getSeconds() < 10 ? "0" : "") + pDate.getSeconds(); return dateStr + " " + hh + ":" + m + ":" + ss; } function getDateStringWithLeadingZeros(pDate) { var dd = (pDate.getDate() < 10 ? "0" : "") + pDate.getDate().toString(); var mm = ((pDate.getMonth() + 1) < 10 ? "0" : "") + (pDate.getMonth() + 1); var yyyy = pDate.getFullYear(); return dd + "." + mm + "." + yyyy; } function subtractDates(date1, date2) { var t1 = date1.getTime(); var t2 = date2.getTime(); var diff = (t2 - t1) / 60000; return Math.abs(diff); } function addMinutes(date, minutes) { return new Date(date.getTime() + minutes * 60000); } function stringToTime(str) { var defaultResult = [-1, -1]; str = str.replace(":", ""); str = str.replace(".", ""); str = str.replace(" ", ""); if(str.length < 3) { if(str.length < 2) { //str = `0${str}`; str = '0' + str; } while(str.length < 4) { str = str + "0"; } } else { while(str.length < 4) { //str = `0${str}`; str = '0' + str; } } var minutes = str.slice(2, 4); var hours = str.slice(0, 2); defaultResult[0] = parseInt(hours); defaultResult[1] = parseInt(minutes); return defaultResult; } function actualDurationWithEndDate() { if($("#enddatum_textbox").val() !== "") { if($("#enddatum_textbox").val() !== $("#datum_textbox").val()) { var endDateObj = getEndDateObj(); var startDateObj = getDateObj(true); if(endDateObj < startDateObj) { endDateObj = setHoursAndMinutes(new Date(startDateObj.getTime()), $("#ende_textbox").val()); //console.log(`start date: ${startDateObj}`); //console.log(`end date: ${endDateObj}`); console.log('start date: ' + startDateObj); console.log('end date: ' + endDateObj); } var endDate = endDateObj.getDate(); var startDate = startDateObj.getDate(); var diffInMs = endDateObj - startDateObj; var diffInS = diffInMs / 1000; var diffInMins = diffInS / 60; //console.log(`end date: ${endDate}`); //console.log(`difference in minutes: ${diffInMins}`); console.log('end date: ' + endDate); console.log('difference in minutes: ' + diffInMins); var dateDifference = endDate - startDate; var endDateString = $("#ende_textbox").val(); var startDateString = $("#start_textbox").val(); var duration = diffInMins;// - startDateString; //console.log(`dateDifference: ${dateDifference}`); console.log('dateDifference: ' + dateDifference); var rest = duration % 100; duration = duration - rest; duration = duration / 100 * 60; duration = dateDifference * 24 * 60 + duration + rest; $("#duration_textbox").val(duration).trigger("change"); } } } function getEndDateObj() { var rawEnddate = $("#enddatum_textbox").val(); var day = parseInt(rawEnddate.slice(0, 2)); var month = parseInt(rawEnddate.slice(3, 5)); var year = parseInt(rawEnddate.slice(6, 10)); var hoursAndMinutes = [0, 0]; var date = new Date(); if(!isNaN(day) && !isNaN(month) && !isNaN(year)) { date = new Date(year, month - 1, day); } var endDateString = $("#ende_textbox").val(); if(endDateString !== "") { hoursAndMinutes = stringToTime(endDateString); } date.setHours(hoursAndMinutes[0]); date.setMinutes(hoursAndMinutes[1]); return date; } function setHoursAndMinutes(date, timeString) { var hoursAndMinutes = [0, 0]; if(timeString !== "") { hoursAndMinutes = stringToTime(timeString); } date.setHours(hoursAndMinutes[0]); date.setMinutes(hoursAndMinutes[1]); return date; } function getHoursAndMinutesWithLeadingZeros(pDate) { var hours = pDate.getHours(); var minutes = pDate.getMinutes(); //var hoursString = hours < 10 ? `0${hours.toString()}` : hours.toString(); //var minutesString = minutes < 10 ? `0${minutes.toString()}` : minutes.toString(); var hoursString = hours < 10 ? '0' + hours.toString() : hours.toString(); var minutesString = minutes < 10 ? '0' + minutes.toString() : minutes.toString(); return hoursString + ":" + minutesString; } function toShortDateString(dateString, trennzeichen) { var geteilt = dateString.split(trennzeichen); var yyyy = ""; var mm = geteilt[1]; var dd = geteilt[0]; for(var i = 0; i < 4 - geteilt[2].split(" ")[0].length; i++) { yyyy += "0"; } yyyy += geteilt[2].split(" ")[0]; return (dd < 10 ? "0" : "") + dd + "." + (mm < 10 ? "0" : "") + mm + "." + yyyy; } function toDateStringYearMonthDay(pDate) { var dd2 = pDate.getDate(); var mm2 = pDate.getMonth() + 1; var yyyy2 = pDate.getFullYear(); var ddStr2 = dd2 < 10 ? "0" + dd2 : dd2; var mmStr2 = mm2 < 10 ? "0" + mm2 : mm2; return yyyy2 + "-" + mmStr2 + "-" + ddStr2; } function checkEndDate() { $.ajax({ type: "GET", url: CheckEndDateUrl, success: function(json) { var endDateSettingsString = $.parseJSON(json); var endDateSetting = parseInt(endDateSettingsString); if(endDateSetting === 1) { $("#EndDate_div").css("display", "block"); $("#enddatum_textbox").val($("#datum_textbox").val()); } else { $("#EndDate_div").css("display", "none"); } } }); } function endDateVisibleEh() { return $("#EndDate_div").css("display") !== "none"; } function calcDurationByStartEnd() { //console.log(`is end date visible: ${endDateVisibleEh()}`); console.log('is end date visible: ' + endDateVisibleEh()); if($("#enddatum_textbox").val() === $("#datum_textbox").val() || $("#enddatum_textbox").val() === "") { var shm = getDateObj(true); var ehm = getDateObj(false); var dur = 0; if(shm.getTime() < ehm.getTime()) { dur = parseInt(subtractDates(ehm, shm)); } $("#duration_textbox").val(dur).trigger("change"); } else { actualDurationWithEndDate(); } } function calcEndByStartDuration() { if($("#enddatum_textbox").val() === $("#datum_textbox").val() || $("#enddatum_textbox").val() === "") { var shm2 = getDateObj(true); var dauer = parseInt($("#duration_textbox").val()); if(isNaN(dauer)) { return; } var neu = addMinutes(shm2, dauer); var ende = (neu.getHours() < 10 ? "0" : "") + neu.getHours() + ":" + (neu.getMinutes() < 10 ? "0" : "") + neu.getMinutes(); $("#ende_textbox").val(ende).trigger("change"); } else { actualDurationWithEndDate(); } } function calcStartByEndDuration() { var ehm2 = getDateObj(false); var dauer2 = parseInt($("#duration_textbox").val()); if(isNaN(dauer2)) { return; } var neu2 = addMinutes(ehm2, dauer2 * -1); $("#start_textbox").val((neu2.getHours() < 10 ? "0" : "") + neu2.getHours() + (neu2.getMinutes() < 10 ? "0" : "") + neu2.getMinutes()).trigger("change"); } function getDateObj(isFromStart) { var roh = $("#datum_textbox").val(); var dd = parseInt(roh.slice(0, 2)); var mm = parseInt(roh.slice(3, 5)); var yyyy = parseInt(roh.slice(6, 10)); var date = new Date(); if(!isNaN(dd) && !isNaN(mm) && !isNaN(yyyy)) { date = new Date(yyyy, mm - 1, dd); } var hm = [0, 0]; var ds = $("#ende_textbox").val(); if(isFromStart) { ds = $("#start_textbox").val(); } if(ds !== "") { hm = stringToTime(ds); } date.setHours(hm[0]); date.setMinutes(hm[1]); return date; }