[Back] function latepoint_is_timeframe_in_periods(timeframe_start, timeframe_end, periods_arr) {
var is_inside = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
for (var i = 0; i < periods_arr.length; i++) {
var period_start = 0;
var period_end = 0;
var buffer_before = 0;
var buffer_after = 0;
var period_info = periods_arr[i].split(':');
if (period_info.length == 2) {
period_start = period_info[0];
period_end = period_info[1];
} else {
buffer_before = period_info[2];
buffer_after = period_info[3];
period_start = parseFloat(period_info[0]) - parseFloat(buffer_before);
period_end = parseFloat(period_info[1]) + parseFloat(buffer_after);
}
if (is_inside) {
if (latepoint_is_period_inside_another(timeframe_start, timeframe_end, period_start, period_end)) {
return true;
}
} else {
if (latepoint_is_period_overlapping(timeframe_start, timeframe_end, period_start, period_end)) {
return true;
}
}
}
return false;
}
function latepoint_is_period_overlapping(period_one_start, period_one_end, period_two_start, period_two_end) {
// https://stackoverflow.com/questions/325933/determine-whether-two-date-ranges-overlap/
return period_one_start < period_two_end && period_two_start < period_one_end;
}
function latepoint_is_period_inside_another(period_one_start, period_one_end, period_two_start, period_two_end) {
return period_one_start >= period_two_start && period_one_end <= period_two_end;
}
// Converts time in minutes to hours if possible, if minutes also exists - shows minutes too
function latepoint_minutes_to_hours_preferably(time) {
var army_clock = latepoint_is_army_clock();
var hours = Math.floor(time / 60);
if (!army_clock && hours > 12) hours = hours - 12;
var minutes = time % 60;
if (minutes > 0) hours = hours + ':' + minutes;
return hours;
}
function latepoint_minutes_to_hours(time) {
var army_clock = latepoint_is_army_clock();
var hours = Math.floor(time / 60);
if (!army_clock && hours > 12) hours = hours - 12;
return hours;
}
function latepoint_am_or_pm(minutes) {
if (latepoint_is_army_clock()) return '';
return (minutes < 720 || minutes == 1440) ? 'am' : 'pm';
}
function latepoint_hours_and_minutes_to_minutes(hours_and_minutes, ampm) {
var hours_and_minutes_arr = hours_and_minutes.split(':');
var hours = hours_and_minutes_arr[0];
var minutes = hours_and_minutes_arr[1];
if (ampm == "pm" && hours < 12) hours = parseInt(hours) + 12;
if (ampm == "am" && hours == 12) hours = 0;
minutes = parseInt(minutes) + (hours * 60);
return minutes;
}
function latepoint_get_time_system() {
return latepoint_helper.time_system;
}
function latepoint_is_army_clock() {
return (latepoint_get_time_system() == '24');
}
function latepoint_minutes_to_hours_and_minutes(minutes) {
var army_clock = latepoint_is_army_clock();
var format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '%02d:%02d';
var hours = Math.floor(minutes / 60);
if (!army_clock && (hours > 12)) hours = hours - 12;
if (!army_clock && hours == 0) hours = 12;
minutes = minutes % 60;
// Check if sprintf is available (either native or from a library)
if (typeof sprintf === 'function') {
return sprintf(format, hours, minutes);
} else {
return `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`;
}
}