Folder restructuring; grouped view logic together
This commit is contained in:
parent
b18c50c205
commit
ea994df145
@ -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;
|
||||
@ -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(
|
||||
@ -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
|
||||
|
||||
@ -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,
|
||||
@ -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);
|
||||
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
@ -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,
|
||||
@ -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);
|
||||
|
||||
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 { Event, Groups } from "../../types";
|
||||
import EventGrouping from "../../Abstract/EventGrouping";
|
||||
import { Event, Groups } from "../../../types";
|
||||
import {
|
||||
add,
|
||||
differenceInCalendarWeeks,
|
||||
@ -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);
|
||||
|
||||
@ -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 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;
|
||||
|
||||
@ -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", () => {
|
||||
|
||||
@ -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", () => {
|
||||
|
||||
@ -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", () => {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user