Folder restructuring; grouped view logic together
This commit is contained in:
parent
b18c50c205
commit
ea994df145
@ -1,5 +1,5 @@
|
|||||||
import { Event } from "../../../types";
|
import { Event } from "../../types";
|
||||||
import { generateRandomColor } from "../../../utilities";
|
import { generateRandomColor } from "../../utilities";
|
||||||
|
|
||||||
export default abstract class GroupRenderer {
|
export default abstract class GroupRenderer {
|
||||||
protected container: HTMLDivElement;
|
protected container: HTMLDivElement;
|
||||||
@ -1,5 +1,5 @@
|
|||||||
import EventGrouping from "../../EventGrouping/EventGrouping";
|
import EventGrouping from "./EventGrouping";
|
||||||
import { Event } from "../../../types";
|
import { Event } from "../../types";
|
||||||
|
|
||||||
export default abstract class Renderer {
|
export default abstract class Renderer {
|
||||||
protected abstract renderGroups(
|
protected abstract renderGroups(
|
||||||
@ -8,6 +8,15 @@ export default class Events {
|
|||||||
this.sortedEvents = this.processEvents(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[] {
|
private processEvents(events: Event[]): Event[] {
|
||||||
const _events = events.reduce((collection, event) => {
|
const _events = events.reduce((collection, event) => {
|
||||||
// only include valid events
|
// only include valid events
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
import EventGrouping from "./EventGrouping";
|
import EventGrouping from "../../Abstract/EventGrouping";
|
||||||
import { Event, Groups } from "../../types";
|
import { Event, Groups } from "../../../types";
|
||||||
import {
|
import {
|
||||||
add,
|
add,
|
||||||
differenceInCalendarDays,
|
differenceInCalendarDays,
|
||||||
@ -1,9 +1,9 @@
|
|||||||
import { Event } from "../../../types";
|
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) {
|
constructor(group: Event[], groupDate: Date, groupIndex: number) {
|
||||||
super(group, groupDate, groupIndex);
|
super(group, groupDate, groupIndex);
|
||||||
|
|
||||||
@ -1,9 +1,9 @@
|
|||||||
import { Event } from "../../../types";
|
import { Event } from "../../../types";
|
||||||
import DayGrouping from "../../EventGrouping/DayGrouping";
|
import DayGrouping from "./DayGrouping";
|
||||||
import Renderer from "../Abstract/Renderer";
|
import AbstractRenderer from "../../Abstract/Renderer";
|
||||||
import GroupDayRenderer from "./GroupDayRenderer";
|
import DayRenderer from "./DayRenderer";
|
||||||
|
|
||||||
export default class DayRenderer extends Renderer {
|
export default class Renderer extends AbstractRenderer {
|
||||||
constructor(eventGrouping: DayGrouping) {
|
constructor(eventGrouping: DayGrouping) {
|
||||||
super(eventGrouping);
|
super(eventGrouping);
|
||||||
this.container.className += " scale-day";
|
this.container.className += " scale-day";
|
||||||
@ -14,6 +14,6 @@ export default class DayRenderer extends Renderer {
|
|||||||
groupDate: Date,
|
groupDate: Date,
|
||||||
groupIndex: number
|
groupIndex: number
|
||||||
): HTMLDivElement {
|
): HTMLDivElement {
|
||||||
return new GroupDayRenderer(group, groupDate, groupIndex).render();
|
return new DayRenderer(group, groupDate, groupIndex).render();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,5 +1,5 @@
|
|||||||
import EventGrouping from "./EventGrouping";
|
import EventGrouping from "../../Abstract/EventGrouping";
|
||||||
import { Event, Groups } from "../../types";
|
import { Event, Groups } from "../../../types";
|
||||||
import {
|
import {
|
||||||
add,
|
add,
|
||||||
differenceInCalendarMonths,
|
differenceInCalendarMonths,
|
||||||
@ -1,9 +1,9 @@
|
|||||||
import { Event } from "../../../types";
|
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) {
|
constructor(group: Event[], groupDate: Date, groupIndex: number) {
|
||||||
super(group, groupDate, groupIndex);
|
super(group, groupDate, groupIndex);
|
||||||
|
|
||||||
19
src/Calendar/Group/Month/Renderer.ts
Normal file
19
src/Calendar/Group/Month/Renderer.ts
Normal 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();
|
||||||
|
}
|
||||||
|
}
|
||||||
19
src/Calendar/Group/Week/Renderer.ts
Normal file
19
src/Calendar/Group/Week/Renderer.ts
Normal 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();
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,5 +1,5 @@
|
|||||||
import EventGrouping from "./EventGrouping";
|
import EventGrouping from "../../Abstract/EventGrouping";
|
||||||
import { Event, Groups } from "../../types";
|
import { Event, Groups } from "../../../types";
|
||||||
import {
|
import {
|
||||||
add,
|
add,
|
||||||
differenceInCalendarWeeks,
|
differenceInCalendarWeeks,
|
||||||
@ -1,9 +1,9 @@
|
|||||||
import { Event } from "../../../types";
|
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) {
|
constructor(group: Event[], groupDate: Date, groupIndex: number) {
|
||||||
super(group, groupDate, groupIndex);
|
super(group, groupDate, groupIndex);
|
||||||
|
|
||||||
@ -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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,11 +1,11 @@
|
|||||||
import { GroupTypes } from "../types";
|
import { GroupTypes } from "../types";
|
||||||
import Events from "./Events/";
|
import Events from "./Events/";
|
||||||
import DayGrouping from "./EventGrouping/DayGrouping";
|
import DayGrouping from "./Group/Day/DayGrouping";
|
||||||
import MonthGrouping from "./EventGrouping/MonthGrouping";
|
import MonthGrouping from "./Group/Month/MonthGrouping";
|
||||||
import WeekGrouping from "./EventGrouping/MonthGrouping";
|
import WeekGrouping from "./Group/Month/MonthGrouping";
|
||||||
import DayRenderer from "./HtmlRenderer/Day";
|
import DayRenderer from "./Group/Day/Renderer";
|
||||||
import MonthRenderer from "./HtmlRenderer/Month";
|
import MonthRenderer from "./Group/Month/Renderer";
|
||||||
import WeekRenderer from "./HtmlRenderer/Week";
|
import WeekRenderer from "./Group/Week/Renderer";
|
||||||
|
|
||||||
export default class Calendar {
|
export default class Calendar {
|
||||||
public readonly jsonContent: object;
|
public readonly jsonContent: object;
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
const { GroupTypes } = require("../../../types");
|
const { GroupTypes } = require("../../../types");
|
||||||
const DayGrouping = require("../../EventGrouping/DayGrouping").default;
|
const DayGrouping = require("../../Group/Day/DayGrouping").default;
|
||||||
const mockSortedEvents = require("./mockSortedEvents").default;
|
const mockSortedEvents = require("./mockSortedEvents").default;
|
||||||
|
|
||||||
describe("groupEventsByDay should", () => {
|
describe("groupEventsByDay should", () => {
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
const { GroupTypes } = require("../../../types");
|
const { GroupTypes } = require("../../../types");
|
||||||
const MonthGrouping = require("../../EventGrouping/MonthGrouping").default;
|
const MonthGrouping = require("../../Group/Month/MonthGrouping").default;
|
||||||
const mockSortedEvents = require("./mockSortedEvents").default;
|
const mockSortedEvents = require("./mockSortedEvents").default;
|
||||||
|
|
||||||
describe("groupEventsByMonth should", () => {
|
describe("groupEventsByMonth should", () => {
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
const { GroupTypes } = require("../../../types");
|
const { GroupTypes } = require("../../../types");
|
||||||
const WeekGrouping = require("../../EventGrouping/WeekGrouping").default;
|
const WeekGrouping = require("../../Group/Week/WeekGrouping").default;
|
||||||
const mockSortedEvents = require("./mockSortedEvents").default;
|
const mockSortedEvents = require("./mockSortedEvents").default;
|
||||||
|
|
||||||
describe("groupEventsByWeek should", () => {
|
describe("groupEventsByWeek should", () => {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user