debian-image-builder-frontend/src/Utilities/time.js
regexowl fd30e5b634 Wizard: Add release lifecycle charts
This adds information about release lifecycle to the Image Output step of the Wizard. Summary is also shown on the Review step.
2023-12-07 19:39:58 +01:00

49 lines
1.6 KiB
JavaScript

export const timestampToDisplayString = (ts) => {
// timestamp has format 2021-04-27T12:31:12Z
// must be converted to ms timestamp and then reformatted to Apr 27, 2021
if (!ts) {
return '';
}
// get YYYY-MM-DD format
const ms = Date.parse(ts);
const options = { month: 'short', day: 'numeric', year: 'numeric' };
const tsDisplay = new Intl.DateTimeFormat('en-US', options).format(ms);
return tsDisplay;
};
export const convertStringToDate = (createdAtAsString) => {
if (isNaN(Date.parse(createdAtAsString))) {
// converts property created_at of the image object from string to UTC
const [dateValues, timeValues] = createdAtAsString.split(' ');
const datetimeString = `${dateValues}T${timeValues}Z`;
return Date.parse(datetimeString);
} else {
return Date.parse(createdAtAsString);
}
};
export const computeHoursToExpiration = (imageCreatedAt) => {
if (imageCreatedAt) {
const currentTime = Date.now();
// miliseconds in hour - needed for calculating the difference
// between current date and the date of the image creation
const msInHour = 1000 * 60 * 60;
const timeUntilExpiration = Math.floor(
(currentTime - convertStringToDate(imageCreatedAt)) / msInHour
);
return timeUntilExpiration;
} else {
// when creating a new image, the compose.created_at can be undefined when first queued
return 0;
}
};
export const toMonthAndYear = (dateString) => {
const options = {
year: 'numeric',
month: 'long',
};
const date = new Date(dateString);
return date.toLocaleDateString('en-US', options);
};