juggl/src/services/helper.service.js

151 lines
3.5 KiB
JavaScript
Raw Normal View History

2021-01-03 12:29:41 +01:00
/**
* Contains a bunch of helper functions.
*/
export const helperService = {
/**
* Converts number into a human readable percent integer.
*
* @param {*} r Floating point percent number
*/
asPercent(r) {
return Math.floor(r * 100);
},
/**
* Converts number into a human readable floating point number with a digit behind the delimiter.
*
* @param {*} r Floating point number
*/
asFloat(r) {
return Math.floor(r * 10) / 10;
},
/**
* Converts timestamp into a human readable date format.
*
* @param {*} d ISO Timestamp
*/
asDateFromISO(d) {
return helperService.asDateFromObj(new Date(d));
},
/**
* Converts timestamp into a human readable date format.
*
* @param {*} d Date object
*/
asDateFromObj(d) {
return new Intl.DateTimeFormat("de").format(d);
},
/**
* Makes sure, that the given text is not too long.
*
* @param {*} text Some text that might be shortened
* @param {*} maxLength Max number of characters
*
* @returns The shortened or same text
*/
keepItShort(text, maxLength = 20, ellipsis = "...") {
if (text.length > maxLength) {
// Adding ellipsis
var short = text.substring(0, maxLength - ellipsis.length).trim();
return short + ellipsis;
} else return text;
},
/**
* Converts a date object into a date-time-timezone string, and sets times and timezone to zero.
*
* @source https://stackoverflow.com/a/43528844/7376120
*
* @param {*} date A date object
*
* @returns Date as string in the used format
*/
toISODate(date) {
var timezoneOffset = date.getMinutes() + date.getTimezoneOffset();
var timestamp = date.getTime() + timezoneOffset * 1000;
var correctDate = new Date(timestamp);
correctDate.setUTCHours(0, 0, 0, 0);
return correctDate.toISOString();
},
/**
* Adds current duration to a record.
* Copied from original juggl code.
* @param {*} record The record instance to update.
*/
addDuration(record) {
if (record.end_time != null) return record;
record.duration =
(new Date().getTime() - new Date(record.start_time).getTime()) / 1000;
return record;
},
/**
* Converts a datetime object into the necessary string format for server requests.
* Copied from original juggl code.
* @param {*} date
*/
dateToString(date) {
return (
date.getFullYear() +
"-" +
(date.getMonth() + 1) +
"-" +
date.getDate() +
" " +
date.getHours() +
":" +
date.getMinutes() +
":" +
date.getSeconds()
);
},
getDurationTimestamp(totalSeconds) {
totalSeconds = Math.ceil(totalSeconds);
var days = Math.floor(totalSeconds / 86400);
var hours = Math.floor((totalSeconds - days * 86400) / 3600);
var minutes = Math.floor((totalSeconds - days * 86400 - hours * 3600) / 60);
var seconds = totalSeconds - days * 86400 - hours * 3600 - minutes * 60;
if (days < 10) {
days = "0" + days;
}
if (hours < 10) {
hours = "0" + hours;
}
if (minutes < 10) {
minutes = "0" + minutes;
}
if (seconds < 10) {
seconds = "0" + seconds;
}
var timestamp = minutes + ":" + seconds;
if (totalSeconds >= 3600) {
timestamp = hours + ":" + timestamp;
}
if (totalSeconds >= 86400) {
timestamp = days + ":" + timestamp;
}
return timestamp;
2021-01-03 20:37:15 +01:00
},
toISOTime(dateTime) {
return (
dateTime.getHours() +
":" +
dateTime.getMinutes() +
":" +
dateTime.getSeconds()
);
2021-01-03 12:29:41 +01:00
}
};