lint:#13 formatted

This commit is contained in:
Elmar Kresse
2024-06-10 10:50:27 +02:00
parent ee0894d048
commit 439850f69b
127 changed files with 15740 additions and 11990 deletions

View File

@@ -23,7 +23,6 @@ export function formatYearMonthDay(date: Date): string {
return date.toISOString().split("T")[0].replace(/-/g, "");
}
export function removeTZ(date: Date): Date {
return new Date(date.getTime() + date.getTimezoneOffset() * 60000)
}
return new Date(date.getTime() + date.getTimezoneOffset() * 60000);
}

View File

@@ -18,124 +18,106 @@ import { expect, test } from "vitest";
import { exportedForTesting } from "@/helpers/ical.ts";
import { CalendarComponent } from "ical";
// colorizeEvents has only the function to colorize the events that are passed to it
test("colorizeEventsSameSummary", () => {
const events: CalendarComponent[] = [
{
type: "VEVENT",
summary: "Operations Research",
},
{
type: "VEVENT",
summary: "Operations Research",
},
];
const events: CalendarComponent[] =
[
{
type: "VEVENT",
summary: "Operations Research",
},
{
type: "VEVENT",
summary: "Operations Research",
},
];
expect(exportedForTesting.colorizeEvents(
events
)
).toEqual([{ summary: "Operations Research", color: "var(--htwk-rot-200)" },{ summary: "Operations Research", color: "var(--htwk-rot-200)" }]);
}
);
expect(exportedForTesting.colorizeEvents(events)).toEqual([
{ summary: "Operations Research", color: "var(--htwk-rot-200)" },
{ summary: "Operations Research", color: "var(--htwk-rot-200)" },
]);
});
test("colorizeEventsDifferentSummary", () => {
const events: CalendarComponent[] = [
{
type: "VEVENT",
summary: "Algorithmische Mathematik",
},
{
type: "VEVENT",
summary: "Funktionale Programmierung",
},
];
const events: CalendarComponent[] =
[
{
type: "VEVENT",
summary: "Algorithmische Mathematik",
},
{
type: "VEVENT",
summary: "Funktionale Programmierung",
},
];
expect(exportedForTesting.colorizeEvents(
events
)
).toEqual([{ summary: "Algorithmische Mathematik", color: "var(--htwk-rot-200)" },{ summary: "Funktionale Programmierung", color: "var(--htwk-gruen-300)" }]);
}
);
expect(exportedForTesting.colorizeEvents(events)).toEqual([
{ summary: "Algorithmische Mathematik", color: "var(--htwk-rot-200)" },
{ summary: "Funktionale Programmierung", color: "var(--htwk-gruen-300)" },
]);
});
test("filterEventsDistinct", () => {
const events: CalendarComponent[] =
[
{
type: "VEVENT",
summary: "Operations Research",
},
{
type: "VEVENT",
summary: "Operations Research",
},
];
const events: CalendarComponent[] = [
{
type: "VEVENT",
summary: "Operations Research",
},
{
type: "VEVENT",
summary: "Operations Research",
},
];
expect(exportedForTesting.filterEventsDistinct(
events
)
).toEqual([{ type: "VEVENT", summary: "Operations Research" }]);
expect(exportedForTesting.filterEventsDistinct(events)).toEqual([
{ type: "VEVENT", summary: "Operations Research" },
]);
});
test("filterEventsDistinctDifferentSummary", () => {
const events: CalendarComponent[] =
[
{
type: "VEVENT",
summary: "Algorithmische Mathematik",
},
{
type: "VEVENT",
summary: "Funktionale Programmierung",
},
];
const events: CalendarComponent[] = [
{
type: "VEVENT",
summary: "Algorithmische Mathematik",
},
{
type: "VEVENT",
summary: "Funktionale Programmierung",
},
];
expect(exportedForTesting.filterEventsDistinct(
events
)
).toEqual(events);
expect(exportedForTesting.filterEventsDistinct(events)).toEqual(events);
});
test("extractedColorizedEvents", () => {
const events: CalendarComponent[] =
[
{
type: "VEVENT",
summary: "Operations Research",
},
{
type: "VEVENT",
summary: "Operations Research",
},
];
const events: CalendarComponent[] = [
{
type: "VEVENT",
summary: "Operations Research",
},
{
type: "VEVENT",
summary: "Operations Research",
},
];
expect(exportedForTesting.extractedColorizedEvents(
events
)
).toEqual([{ summary: "Operations Research", color: "var(--htwk-rot-200)" }]);
expect(exportedForTesting.extractedColorizedEvents(events)).toEqual([
{ summary: "Operations Research", color: "var(--htwk-rot-200)" },
]);
});
test("extractedColorizedEventsDifferentSummary", () => {
const events: CalendarComponent[] =
[
{
type: "VEVENT",
summary: "Algorithmische Mathematik",
},
{
type: "VEVENT",
summary: "Funktionale Programmierung",
},
];
const events: CalendarComponent[] = [
{
type: "VEVENT",
summary: "Algorithmische Mathematik",
},
{
type: "VEVENT",
summary: "Funktionale Programmierung",
},
];
expect(exportedForTesting.extractedColorizedEvents(
events
)
).toEqual([{ summary: "Algorithmische Mathematik", color: "var(--htwk-rot-200)" },{ summary: "Funktionale Programmierung", color: "var(--htwk-gruen-300)" }]);
});
expect(exportedForTesting.extractedColorizedEvents(events)).toEqual([
{ summary: "Algorithmische Mathematik", color: "var(--htwk-rot-200)" },
{ summary: "Funktionale Programmierung", color: "var(--htwk-gruen-300)" },
]);
});

View File

@@ -23,7 +23,7 @@ import { CalendarComponent } from "ical";
* @param color Color code for the event
*/
export interface ColorDistinctionEvent {
summary: string;
summary: string | undefined;
color: string;
}
@@ -32,13 +32,15 @@ export interface ColorDistinctionEvent {
* @param icalData iCal data to parse
* @returns Array of calendar components
*/
export function parseICalData(icalData: string | undefined): CalendarComponent[] {
export function parseICalData(
icalData: string | undefined,
): CalendarComponent[] {
if (icalData === undefined || !icalData) {
return [];
} else {
const jCalData = ICAL.parse(icalData);
const comp = new ICAL.Component(jCalData);
const vEvents = comp.getAllSubcomponents('vevent');
const vEvents = comp.getAllSubcomponents("vevent");
const colorDistinctionEvents = extractedColorizedEvents(vEvents);
return vEvents.map((vevent: CalendarComponent) => {
@@ -50,7 +52,9 @@ export function parseICalData(icalData: string | undefined): CalendarComponent[]
end: event.endDate.toJSDate(),
notes: event.description,
allDay: event.startDate.isDate,
color: colorDistinctionEvents.find((e: ColorDistinctionEvent) => e.summary === event.summary)?.color,
color: colorDistinctionEvents.find(
(e: ColorDistinctionEvent) => e.summary === event.summary,
)?.color,
id: event.uid,
location: event.location,
};
@@ -63,32 +67,37 @@ export function parseICalData(icalData: string | undefined): CalendarComponent[]
* @param vEvents Array of calendar components
* @returns Array of objects with event name and color
*/
function extractedColorizedEvents(vEvents: CalendarComponent[]): ColorDistinctionEvent[] {
function extractedColorizedEvents(
vEvents: CalendarComponent[],
): ColorDistinctionEvent[] {
return colorizeEvents(filterEventsDistinct(vEvents));
}
/**
* Filters out duplicate events
* @param vEvents Array of calendar components
* @returns Array of calendar components without duplicates
*/
function filterEventsDistinct(vEvents: CalendarComponent[]): CalendarComponent[] {
return vEvents.filter((vevent: CalendarComponent, index: number, self: CalendarComponent[]) => {
return self.findIndex((v) => {
return v.summary === vevent.summary;
}) === index;
});
function filterEventsDistinct(
vEvents: CalendarComponent[],
): CalendarComponent[] {
return vEvents.filter(
(vevent: CalendarComponent, index: number, self: CalendarComponent[]) => {
return (
self.findIndex((v) => {
return v.summary === vevent.summary;
}) === index
);
},
);
}
/**
* Assigns a color to each event
* @param vEvents Array of calendar components
* @returns Array of objects with event name and color
*/
function colorizeEvents(vEvents: CalendarComponent[]): ColorDistinctionEvent[] {
return vEvents.map((vevent: CalendarComponent) => {
const colors: string[] = [
"var(--htwk-rot-200)",
@@ -101,16 +110,19 @@ function colorizeEvents(vEvents: CalendarComponent[]): ColorDistinctionEvent[] {
"var(--htwk-dunkelblau-200)",
"var(--htwk-rot-400)",
"var(--htwk-gruen-400)",
"var(--htwk-blau-200)"
"var(--htwk-blau-200)",
];
const randomColor = colors[vEvents.findIndex((e: CalendarComponent) => {
return e.summary === vevent.summary?? "";
}) % colors.length];
const randomColor =
colors[
vEvents.findIndex((e: CalendarComponent) => {
return e.summary === vevent.summary;
}) % colors.length
];
return {
summary: vevent.summary?? "",
color: randomColor
summary: vevent.summary,
color: randomColor,
};
});
}
@@ -118,5 +130,5 @@ function colorizeEvents(vEvents: CalendarComponent[]): ColorDistinctionEvent[] {
export const exportedForTesting = {
extractedColorizedEvents,
filterEventsDistinct,
colorizeEvents
};
colorizeEvents,
};

View File

@@ -32,4 +32,4 @@ export function extractToken(token: string): string {
}
throw new Error("Invalid token");
}
}