Files
BeWoPlaner/BeWoPlanerMobil/Scripts/dateHelper.js

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;
}