#11 - Modify Utils
This commit is contained in:
parent
c007668002
commit
989a0dbb50
@ -1,28 +1,26 @@
|
||||
import type { CollectionEntry } from 'astro:content';
|
||||
import type { Courses } from '../types/codyops-courses';
|
||||
|
||||
export const getUniqueCategories = (
|
||||
courses: Array<CollectionEntry<'courses'>>
|
||||
courses: Courses[]
|
||||
) => {
|
||||
const coursesEntries = courses.flatMap(
|
||||
// @ts-ignore
|
||||
// eslint-disable-next-line no-unsafe-optional-chaining
|
||||
(course: CollectionEntry<'courses'>) => [...course?.data?.categories]
|
||||
(course: Courses) => [...course.category]
|
||||
);
|
||||
return [...new Set(coursesEntries)];
|
||||
};
|
||||
|
||||
export const getUniqueLevels = (courses: CollectionEntry<'courses'>[]) => {
|
||||
export const getUniqueLevels = (courses: Courses[]) => {
|
||||
const coursesEntries = courses.map(
|
||||
(course: CollectionEntry<'courses'>) => course.data.level
|
||||
(course: Courses) => course.level
|
||||
);
|
||||
return [...new Set(coursesEntries)];
|
||||
};
|
||||
|
||||
export const sortCoursesByDate = (posts: CollectionEntry<'courses'>[]) =>
|
||||
posts
|
||||
.filter(({ data }) => !data?.draft)
|
||||
export const sortCoursesByDate = (courses: Courses[]) =>
|
||||
courses
|
||||
.filter((course) => course.status !== 'draft') // Assuming 'draft' status is used instead of a 'draft' property
|
||||
.sort(
|
||||
(a, b) =>
|
||||
Math.floor(new Date(b?.data?.date).getTime() / 1000) -
|
||||
Math.floor(new Date(a?.data?.date).getTime() / 1000)
|
||||
Math.floor(new Date(b.date_created || '').getTime() / 1000) -
|
||||
Math.floor(new Date(a.date_created || '').getTime() / 1000)
|
||||
);
|
||||
|
@ -1,3 +1,3 @@
|
||||
export const fromSnakeCase = (text: any) => {
|
||||
return text.replace(/-/g, ' ').replace(/\b\w/g, (word) => word.toUpperCase());
|
||||
export const fromSnakeCase = (text: string) => {
|
||||
return text.replace(/-/g, ' ').replace(/\b\w/g, (word: string) => word.toUpperCase());
|
||||
};
|
||||
|
@ -1,23 +1,35 @@
|
||||
function parseTime(time) {
|
||||
const [hours, minutes, milliseconds] = time.split(':').map(Number);
|
||||
interface TimeParts {
|
||||
hours: number;
|
||||
minutes: number;
|
||||
milliseconds: number;
|
||||
}
|
||||
|
||||
interface TimeResult {
|
||||
hours: number;
|
||||
minutes: number;
|
||||
}
|
||||
|
||||
function parseTime(time: string | null | undefined): TimeParts {
|
||||
const safeTime = time || '0:0:0'; // Provide a default string if time is null/undefined/empty
|
||||
const [hours, minutes, milliseconds] = safeTime.split(':').map(Number);
|
||||
return { hours, minutes, milliseconds };
|
||||
}
|
||||
|
||||
function timeToMilliseconds({ hours, minutes, milliseconds }) {
|
||||
function timeToMilliseconds({ hours, minutes, milliseconds }: TimeParts): number {
|
||||
return (hours * 60 * 60 * 1000) + (minutes * 60 * 1000) + milliseconds;
|
||||
}
|
||||
|
||||
function millisecondsToTime(ms) {
|
||||
function millisecondsToTime(ms: number): TimeResult {
|
||||
const totalMinutes = Math.floor(ms / (60 * 1000));
|
||||
const hours = Math.floor(totalMinutes / 60);
|
||||
const minutes = totalMinutes % 60;
|
||||
return { hours, minutes };
|
||||
}
|
||||
|
||||
export function sumTimes(times) {
|
||||
export function sumTimes(times: string[]): TimeResult {
|
||||
const totalMilliseconds = times
|
||||
.map(parseTime)
|
||||
.map(timeToMilliseconds)
|
||||
.reduce((acc, ms) => acc + ms, 0);
|
||||
.reduce((acc: number, ms: number) => acc + ms, 0);
|
||||
return millisecondsToTime(totalMilliseconds);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user