From ea994df145de736c4d99f83071f772c915038d15 Mon Sep 17 00:00:00 2001 From: Franco Speziali Date: Thu, 25 May 2023 15:37:23 +0200 Subject: [PATCH] Folder restructuring; grouped view logic together --- .../EventGrouping.ts | 0 .../Abstract/GroupRenderer.ts | 4 ++-- .../{HtmlRenderer => }/Abstract/Renderer.ts | 4 ++-- src/Calendar/Events/index.ts | 9 +++++++++ .../Day}/DayGrouping.ts | 4 ++-- .../Day/DayRenderer.ts} | 6 +++--- .../Day/index.ts => Group/Day/Renderer.ts} | 10 +++++----- .../Month}/MonthGrouping.ts | 4 ++-- .../Month/MonthRenderer.ts} | 6 +++--- src/Calendar/Group/Month/Renderer.ts | 19 +++++++++++++++++++ src/Calendar/Group/Week/Renderer.ts | 19 +++++++++++++++++++ .../Week}/WeekGrouping.ts | 4 ++-- .../Week/WeekRenderer.ts} | 6 +++--- src/Calendar/HtmlRenderer/Month/index.ts | 19 ------------------- src/Calendar/HtmlRenderer/Week/index.ts | 19 ------------------- src/Calendar/index.ts | 12 ++++++------ .../tests/EventGrouping/DayGrouping.test.ts | 2 +- .../tests/EventGrouping/MonthGrouping.test.ts | 2 +- .../tests/EventGrouping/WeekGrouping.test.ts | 2 +- 19 files changed, 80 insertions(+), 71 deletions(-) rename src/Calendar/{EventGrouping => Abstract}/EventGrouping.ts (100%) rename src/Calendar/{HtmlRenderer => }/Abstract/GroupRenderer.ts (96%) rename src/Calendar/{HtmlRenderer => }/Abstract/Renderer.ts (89%) rename src/Calendar/{EventGrouping => Group/Day}/DayGrouping.ts (89%) rename src/Calendar/{HtmlRenderer/Day/GroupDayRenderer.ts => Group/Day/DayRenderer.ts} (81%) rename src/Calendar/{HtmlRenderer/Day/index.ts => Group/Day/Renderer.ts} (50%) rename src/Calendar/{EventGrouping => Group/Month}/MonthGrouping.ts (89%) rename src/Calendar/{HtmlRenderer/Month/GroupMonthRenderer.ts => Group/Month/MonthRenderer.ts} (83%) create mode 100644 src/Calendar/Group/Month/Renderer.ts create mode 100644 src/Calendar/Group/Week/Renderer.ts rename src/Calendar/{EventGrouping => Group/Week}/WeekGrouping.ts (90%) rename src/Calendar/{HtmlRenderer/Week/GroupWeekRenderer.ts => Group/Week/WeekRenderer.ts} (81%) delete mode 100644 src/Calendar/HtmlRenderer/Month/index.ts delete mode 100644 src/Calendar/HtmlRenderer/Week/index.ts diff --git a/src/Calendar/EventGrouping/EventGrouping.ts b/src/Calendar/Abstract/EventGrouping.ts similarity index 100% rename from src/Calendar/EventGrouping/EventGrouping.ts rename to src/Calendar/Abstract/EventGrouping.ts diff --git a/src/Calendar/HtmlRenderer/Abstract/GroupRenderer.ts b/src/Calendar/Abstract/GroupRenderer.ts similarity index 96% rename from src/Calendar/HtmlRenderer/Abstract/GroupRenderer.ts rename to src/Calendar/Abstract/GroupRenderer.ts index 419b12e..1896a34 100644 --- a/src/Calendar/HtmlRenderer/Abstract/GroupRenderer.ts +++ b/src/Calendar/Abstract/GroupRenderer.ts @@ -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; diff --git a/src/Calendar/HtmlRenderer/Abstract/Renderer.ts b/src/Calendar/Abstract/Renderer.ts similarity index 89% rename from src/Calendar/HtmlRenderer/Abstract/Renderer.ts rename to src/Calendar/Abstract/Renderer.ts index bb8af93..ea04a66 100644 --- a/src/Calendar/HtmlRenderer/Abstract/Renderer.ts +++ b/src/Calendar/Abstract/Renderer.ts @@ -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( diff --git a/src/Calendar/Events/index.ts b/src/Calendar/Events/index.ts index a3a0f99..0e00110 100644 --- a/src/Calendar/Events/index.ts +++ b/src/Calendar/Events/index.ts @@ -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 diff --git a/src/Calendar/EventGrouping/DayGrouping.ts b/src/Calendar/Group/Day/DayGrouping.ts similarity index 89% rename from src/Calendar/EventGrouping/DayGrouping.ts rename to src/Calendar/Group/Day/DayGrouping.ts index ff28943..61d60ad 100644 --- a/src/Calendar/EventGrouping/DayGrouping.ts +++ b/src/Calendar/Group/Day/DayGrouping.ts @@ -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, diff --git a/src/Calendar/HtmlRenderer/Day/GroupDayRenderer.ts b/src/Calendar/Group/Day/DayRenderer.ts similarity index 81% rename from src/Calendar/HtmlRenderer/Day/GroupDayRenderer.ts rename to src/Calendar/Group/Day/DayRenderer.ts index 350b890..0472d0f 100644 --- a/src/Calendar/HtmlRenderer/Day/GroupDayRenderer.ts +++ b/src/Calendar/Group/Day/DayRenderer.ts @@ -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); diff --git a/src/Calendar/HtmlRenderer/Day/index.ts b/src/Calendar/Group/Day/Renderer.ts similarity index 50% rename from src/Calendar/HtmlRenderer/Day/index.ts rename to src/Calendar/Group/Day/Renderer.ts index 08c90f4..8a7e14f 100644 --- a/src/Calendar/HtmlRenderer/Day/index.ts +++ b/src/Calendar/Group/Day/Renderer.ts @@ -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(); } } diff --git a/src/Calendar/EventGrouping/MonthGrouping.ts b/src/Calendar/Group/Month/MonthGrouping.ts similarity index 89% rename from src/Calendar/EventGrouping/MonthGrouping.ts rename to src/Calendar/Group/Month/MonthGrouping.ts index 481f162..bb108e3 100644 --- a/src/Calendar/EventGrouping/MonthGrouping.ts +++ b/src/Calendar/Group/Month/MonthGrouping.ts @@ -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, diff --git a/src/Calendar/HtmlRenderer/Month/GroupMonthRenderer.ts b/src/Calendar/Group/Month/MonthRenderer.ts similarity index 83% rename from src/Calendar/HtmlRenderer/Month/GroupMonthRenderer.ts rename to src/Calendar/Group/Month/MonthRenderer.ts index f9e0c43..5f0e057 100644 --- a/src/Calendar/HtmlRenderer/Month/GroupMonthRenderer.ts +++ b/src/Calendar/Group/Month/MonthRenderer.ts @@ -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); diff --git a/src/Calendar/Group/Month/Renderer.ts b/src/Calendar/Group/Month/Renderer.ts new file mode 100644 index 0000000..6b93ac4 --- /dev/null +++ b/src/Calendar/Group/Month/Renderer.ts @@ -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(); + } +} diff --git a/src/Calendar/Group/Week/Renderer.ts b/src/Calendar/Group/Week/Renderer.ts new file mode 100644 index 0000000..a15d4e1 --- /dev/null +++ b/src/Calendar/Group/Week/Renderer.ts @@ -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(); + } +} diff --git a/src/Calendar/EventGrouping/WeekGrouping.ts b/src/Calendar/Group/Week/WeekGrouping.ts similarity index 90% rename from src/Calendar/EventGrouping/WeekGrouping.ts rename to src/Calendar/Group/Week/WeekGrouping.ts index 49a322d..d088155 100644 --- a/src/Calendar/EventGrouping/WeekGrouping.ts +++ b/src/Calendar/Group/Week/WeekGrouping.ts @@ -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, diff --git a/src/Calendar/HtmlRenderer/Week/GroupWeekRenderer.ts b/src/Calendar/Group/Week/WeekRenderer.ts similarity index 81% rename from src/Calendar/HtmlRenderer/Week/GroupWeekRenderer.ts rename to src/Calendar/Group/Week/WeekRenderer.ts index 2059f05..2c41339 100644 --- a/src/Calendar/HtmlRenderer/Week/GroupWeekRenderer.ts +++ b/src/Calendar/Group/Week/WeekRenderer.ts @@ -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); diff --git a/src/Calendar/HtmlRenderer/Month/index.ts b/src/Calendar/HtmlRenderer/Month/index.ts deleted file mode 100644 index 6803e17..0000000 --- a/src/Calendar/HtmlRenderer/Month/index.ts +++ /dev/null @@ -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(); - } -} diff --git a/src/Calendar/HtmlRenderer/Week/index.ts b/src/Calendar/HtmlRenderer/Week/index.ts deleted file mode 100644 index ecafce2..0000000 --- a/src/Calendar/HtmlRenderer/Week/index.ts +++ /dev/null @@ -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(); - } -} diff --git a/src/Calendar/index.ts b/src/Calendar/index.ts index 9b57be4..df69afa 100644 --- a/src/Calendar/index.ts +++ b/src/Calendar/index.ts @@ -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; diff --git a/src/Calendar/tests/EventGrouping/DayGrouping.test.ts b/src/Calendar/tests/EventGrouping/DayGrouping.test.ts index 40fb8e3..d248f09 100644 --- a/src/Calendar/tests/EventGrouping/DayGrouping.test.ts +++ b/src/Calendar/tests/EventGrouping/DayGrouping.test.ts @@ -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", () => { diff --git a/src/Calendar/tests/EventGrouping/MonthGrouping.test.ts b/src/Calendar/tests/EventGrouping/MonthGrouping.test.ts index f6025ad..6108971 100644 --- a/src/Calendar/tests/EventGrouping/MonthGrouping.test.ts +++ b/src/Calendar/tests/EventGrouping/MonthGrouping.test.ts @@ -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", () => { diff --git a/src/Calendar/tests/EventGrouping/WeekGrouping.test.ts b/src/Calendar/tests/EventGrouping/WeekGrouping.test.ts index fc27d45..3f42c96 100644 --- a/src/Calendar/tests/EventGrouping/WeekGrouping.test.ts +++ b/src/Calendar/tests/EventGrouping/WeekGrouping.test.ts @@ -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", () => {