| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- import dayjs from "dayjs";
- import { isString } from "lodash";
- import { Event } from "jc-timeline";
- export interface ICreneau {
- event: Event;
- penibility: number;
- minAttendee: number;
- maxAttendee: number;
- benevoleIdList: Array<number>;
- competencesIdList: Array<number>;
- description: string;
- }
- class Creneau implements ICreneau {
- event: Event;
- public get title(): string {
- return this.event.title;
- }
- public set title(value: string) {
- this.event.title = value;
- }
- _minAttendee: number;
- public get minAttendee(): number {
- return this._minAttendee;
- }
- public set minAttendee(value: number) {
- this._minAttendee = value;
- this.updateEventContent();
- }
- maxAttendee: number;
- penibility: number;
- _benevoleIdList: number[];
- public get benevoleIdList(): number[] {
- return this._benevoleIdList;
- }
- public set benevoleIdList(value: number[]) {
- this._benevoleIdList = value;
- this.updateEventContent();
- }
- competencesIdList: number[];
- description: string;
- constructor(obj: ICreneau) {
- if (!isString(obj.event.id) || obj.event.id == "") {
- throw new TypeError(
- "missing argument 0 (event.id:String) when calling function Creneau.constructor"
- );
- }
- if (!isString(obj.event.ressourceId) || obj.event.ressourceId == "") {
- throw new TypeError(
- "missing argument 0 (event.ressourceId:String) when calling function Creneau.constructor"
- );
- }
- this.event = obj.event;
- this.description = "description" in obj ? obj.description : "";
- this.penibility = "penibility" in obj ? obj.penibility : 12;
- this._minAttendee = "minAttendee" in obj ? obj.minAttendee : 0;
- this.maxAttendee = "maxAttendee" in obj ? obj.maxAttendee : 0;
- this._benevoleIdList = "benevoleIdList" in obj ? obj.benevoleIdList : [];
- this.competencesIdList = "competencesIdList" in obj ? obj.competencesIdList : [];
- this.updateEventContent();
- }
- get id(): string {
- return this.event.id;
- }
- get ressourceId(): string {
- return this.event.ressourceId;
- }
- set ressourceId(value: string) {
- this.event.ressourceId = value;
- }
- get start(): Date {
- return this.event.start;
- }
- set start(value: Date) {
- this.event.start = value;
- }
- get end(): Date {
- return this.event.end;
- }
- set end(value: Date) {
- this.event.end = value;
- }
- get durationMs(): number {
- return this.event.end.getTime() - this.event.start.getTime();
- }
- get durationMin(): number {
- return this.durationMs / 1000 / 60;
- }
- get durationH(): number {
- return this.durationMin / 60;
- }
- get horaire(): string {
- return (
- "De " +
- dayjs(this.event.start).format("HH:mm") +
- " à " +
- dayjs(this.event.end).format("HH:mm")
- );
- }
- updateEventContent() {
- const missingbenevole = Math.max(this.minAttendee - this.benevoleIdList.length, 0);
- const spanClass = this.benevoleIdList.length == 0 ? "red" : missingbenevole > 0 ? "orange" : "";
- this.event.content = `<div class="bubble ${spanClass}">${missingbenevole}</div>`;
- }
- toPlainObject(): ICreneau {
- return {
- event: this.event,
- penibility: this.penibility,
- minAttendee: this.minAttendee,
- maxAttendee: this.maxAttendee,
- benevoleIdList: this.benevoleIdList,
- competencesIdList: this.competencesIdList,
- description: this.description,
- };
- }
- }
- export default Creneau;
|