289 lines
7.9 KiB
JavaScript
289 lines
7.9 KiB
JavaScript
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();
|
|
|
|
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());
|
|
|
|
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;
|
|
}
|