Folder restructuring; grouped view logic together

This commit is contained in:
Franco Speziali 2023-05-25 15:37:23 +02:00
parent b18c50c205
commit ea994df145
19 changed files with 80 additions and 71 deletions

View File

@ -1,5 +1,5 @@
import { Event } from "../../../types";
import { generateRandomColor } from "../../../utilities";
import { Event } from "../../types";
import { generateRandomColor } from "../../utilities";
export default abstract class GroupRenderer {
protected container: HTMLDivElement;

View File

@ -1,5 +1,5 @@
import EventGrouping from "../../EventGrouping/EventGrouping";
import { Event } from "../../../types";
import EventGrouping from "./EventGrouping";
import { Event } from "../../types";
export default abstract class Renderer {
protected abstract renderGroups(

View File

@ -8,6 +8,15 @@ export default class Events {
this.sortedEvents = this.processEvents(events);
}
/**
* processEvents
*
* Drops invalid events from dataset
* Sorts events by date, in ascending order
*
* @param events: Event[]
* @private
*/
private processEvents(events: Event[]): Event[] {
const _events = events.reduce((collection, event) => {
// only include valid events

View File

@ -1,5 +1,5 @@
import EventGrouping from "./EventGrouping";
import { Event, Groups } from "../../types";
import EventGrouping from "../../Abstract/EventGrouping";
import { Event, Groups } from "../../../types";
import {
add,
differenceInCalendarDays,

View File

@ -1,9 +1,9 @@
import { Event } from "../../../types";
import DayGrouping from "../../EventGrouping/DayGrouping";
import DayGrouping from "./DayGrouping";
import GroupRenderer from "../Abstract/GroupRenderer";
import GroupRenderer from "../../Abstract/GroupRenderer";
export default class GroupDayRenderer extends GroupRenderer {
export default class DayRenderer extends GroupRenderer {
constructor(group: Event[], groupDate: Date, groupIndex: number) {
super(group, groupDate, groupIndex);

View File

@ -1,9 +1,9 @@
import { Event } from "../../../types";
import DayGrouping from "../../EventGrouping/DayGrouping";
import Renderer from "../Abstract/Renderer";
import GroupDayRenderer from "./GroupDayRenderer";
import DayGrouping from "./DayGrouping";
import AbstractRenderer from "../../Abstract/Renderer";
import DayRenderer from "./DayRenderer";
export default class DayRenderer extends Renderer {
export default class Renderer extends AbstractRenderer {
constructor(eventGrouping: DayGrouping) {
super(eventGrouping);
this.container.className += " scale-day";
@ -14,6 +14,6 @@ export default class DayRenderer extends Renderer {
groupDate: Date,
groupIndex: number
): HTMLDivElement {
return new GroupDayRenderer(group, groupDate, groupIndex).render();
return new DayRenderer(group, groupDate, groupIndex).render();
}
}

View File

@ -1,5 +1,5 @@
import EventGrouping from "./EventGrouping";
import { Event, Groups } from "../../types";
import EventGrouping from "../../Abstract/EventGrouping";
import { Event, Groups } from "../../../types";
import {
add,
differenceInCalendarMonths,

View File

@ -1,9 +1,9 @@
import { Event } from "../../../types";
import MonthGrouping from "../../EventGrouping/MonthGrouping";
import MonthGrouping from "./MonthGrouping";
import GroupRenderer from "../Abstract/GroupRenderer";
import GroupRenderer from "../../Abstract/GroupRenderer";
export default class GroupMonthRenderer extends GroupRenderer {
export default class MonthRenderer extends GroupRenderer {
constructor(group: Event[], groupDate: Date, groupIndex: number) {
super(group, groupDate, groupIndex);

View File

@ -0,0 +1,19 @@
import { Event } from "../../../types";
import MonthGrouping from "./MonthGrouping";
import AbstractRenderer from "../../Abstract/Renderer";
import MonthRenderer from "./MonthRenderer";
export default class Renderer extends AbstractRenderer {
constructor(eventGrouping: MonthGrouping) {
super(eventGrouping);
this.container.className += " scale-month";
}
protected renderGroups(
group: Event[],
groupDate: Date,
groupIndex: number
): HTMLDivElement {
return new MonthRenderer(group, groupDate, groupIndex).render();
}
}

View File

@ -0,0 +1,19 @@
import { Event } from "../../../types";
import WeekGrouping from "./WeekGrouping";
import AbstractRenderer from "../../Abstract/Renderer";
import WeekRenderer from "./WeekRenderer";
export default class Renderer extends AbstractRenderer {
constructor(eventGrouping: WeekGrouping) {
super(eventGrouping);
this.container.className += " scale-week";
}
protected renderGroups(
group: Event[],
groupDate: Date,
groupIndex: number
): HTMLDivElement {
return new WeekRenderer(group, groupDate, groupIndex).render();
}
}

View File

@ -1,5 +1,5 @@
import EventGrouping from "./EventGrouping";
import { Event, Groups } from "../../types";
import EventGrouping from "../../Abstract/EventGrouping";
import { Event, Groups } from "../../../types";
import {
add,
differenceInCalendarWeeks,

View File

@ -1,9 +1,9 @@
import { Event } from "../../../types";
import WeekGrouping from "../../EventGrouping/WeekGrouping";
import WeekGrouping from "./WeekGrouping";
import GroupRenderer from "../Abstract/GroupRenderer";
import GroupRenderer from "../../Abstract/GroupRenderer";
export default class GroupWeekRenderer extends GroupRenderer {
export default class WeekRenderer extends GroupRenderer {
constructor(group: Event[], groupDate: Date, groupIndex: number) {
super(group, groupDate, groupIndex);

View File

@ -1,19 +0,0 @@
import { Event } from "../../../types";
import MonthGrouping from "../../EventGrouping/MonthGrouping";
import Renderer from "../Abstract/Renderer";
import GroupMonthRenderer from "./GroupMonthRenderer";
export default class MonthRenderer extends Renderer {
constructor(eventGrouping: MonthGrouping) {
super(eventGrouping);
this.container.className += " scale-month";
}
protected renderGroups(
group: Event[],
groupDate: Date,
groupIndex: number
): HTMLDivElement {
return new GroupMonthRenderer(group, groupDate, groupIndex).render();
}
}

View File

@ -1,19 +0,0 @@
import { Event } from "../../../types";
import WeekGrouping from "../../EventGrouping/WeekGrouping";
import Renderer from "../Abstract/Renderer";
import GroupWeekRenderer from "./GroupWeekRenderer";
export default class WeekRenderer extends Renderer {
constructor(eventGrouping: WeekGrouping) {
super(eventGrouping);
this.container.className += " scale-week";
}
protected renderGroups(
group: Event[],
groupDate: Date,
groupIndex: number
): HTMLDivElement {
return new GroupWeekRenderer(group, groupDate, groupIndex).render();
}
}

View File

@ -1,11 +1,11 @@
import { GroupTypes } from "../types";
import Events from "./Events/";
import DayGrouping from "./EventGrouping/DayGrouping";
import MonthGrouping from "./EventGrouping/MonthGrouping";
import WeekGrouping from "./EventGrouping/MonthGrouping";
import DayRenderer from "./HtmlRenderer/Day";
import MonthRenderer from "./HtmlRenderer/Month";
import WeekRenderer from "./HtmlRenderer/Week";
import DayGrouping from "./Group/Day/DayGrouping";
import MonthGrouping from "./Group/Month/MonthGrouping";
import WeekGrouping from "./Group/Month/MonthGrouping";
import DayRenderer from "./Group/Day/Renderer";
import MonthRenderer from "./Group/Month/Renderer";
import WeekRenderer from "./Group/Week/Renderer";
export default class Calendar {
public readonly jsonContent: object;

View File

@ -1,5 +1,5 @@
const { GroupTypes } = require("../../../types");
const DayGrouping = require("../../EventGrouping/DayGrouping").default;
const DayGrouping = require("../../Group/Day/DayGrouping").default;
const mockSortedEvents = require("./mockSortedEvents").default;
describe("groupEventsByDay should", () => {

View File

@ -1,5 +1,5 @@
const { GroupTypes } = require("../../../types");
const MonthGrouping = require("../../EventGrouping/MonthGrouping").default;
const MonthGrouping = require("../../Group/Month/MonthGrouping").default;
const mockSortedEvents = require("./mockSortedEvents").default;
describe("groupEventsByMonth should", () => {

View File

@ -1,5 +1,5 @@
const { GroupTypes } = require("../../../types");
const WeekGrouping = require("../../EventGrouping/WeekGrouping").default;
const WeekGrouping = require("../../Group/Week/WeekGrouping").default;
const mockSortedEvents = require("./mockSortedEvents").default;
describe("groupEventsByWeek should", () => {