{"version":3,"file":"sowatech-shared-scheduler-year.mjs","sources":["../../../projects/shared/scheduler-year/scheduler-year-calendar.component.ts","../../../projects/shared/scheduler-year/scheduler-year-calendar.component.html","../../../projects/shared/scheduler-year/scheduler-year.module.ts","../../../projects/shared/scheduler-year/sowatech-shared-scheduler-year.ts"],"sourcesContent":["\r\nimport { DatePipe } from '@angular/common';\r\nimport { Component, EventEmitter, Input, OnInit, Output, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { LoggerService } from '@sowatech/shared/logger';\r\nimport { LoadingIndicatorComponent } from '@sowatech/shared/swt-controls';\r\nimport moment from 'moment';\r\nimport 'moment/locale/de';\r\n\r\nconst CLASS = 'SchedulerYearCalendarComponent';\r\n\r\n@Component({\r\n    selector: 'scheduler-year-calendar',\r\n    templateUrl: 'scheduler-year-calendar.component.html',\r\n    styleUrls: ['./scheduler-year.scss'],\r\n    encapsulation: ViewEncapsulation.None,\r\n    providers: [DatePipe],\r\n    standalone: false\r\n})\r\n\r\nexport class SchedulerYearCalendarComponent implements OnInit {\r\n    constructor(private datePipe: DatePipe,\r\n        private logger: LoggerService\r\n    ) { }\r\n\r\n    public months: Month[] = [];\r\n    ngOnInit() {\r\n        this.initTable();\r\n    }\r\n\r\n    public CELLHEIGHTPX = 34;\r\n    public CELLHEIGHTPERCENT = 100;\r\n\r\n    @ViewChild('loadingIndicator', { static: true })\r\n    public loadingIndicator: LoadingIndicatorComponent;\r\n\r\n    @Input()\r\n    public year: number;\r\n\r\n    @Input()\r\n    public occupationLegend: OccupationLegend[]; // farb-legende zu einzelnen Aktivitäten\r\n\r\n    private _slotDataItems = new Array<DateDataItem>();\r\n    @Input('slotItems')\r\n    public set _slotItems(values: Array<DateDataItem>) {\r\n        this._slotDataItems = values;\r\n    }\r\n\r\n    @Output()\r\n    public cellClick = new EventEmitter<DateCellClickEvent>();\r\n\r\n\r\n    public initTable() {\r\n        this.months = [];\r\n        if (!this.year) this.year = moment().year();\r\n        const yearMoment = this.year ? moment().year(this.year) : moment();\r\n        this.logger.log(CLASS + '.initTable');\r\n        for (let tMonth = 0; tMonth < 12; tMonth++) {\r\n\r\n            const month = new Month();\r\n            month.index = tMonth;\r\n            month.name = this.datePipe.transform(yearMoment.month(tMonth).toDate(), 'MMMM');\r\n            const days: Day[] = [];\r\n            for (let day = 1; day <= 31; day++) {\r\n                const thisDay = this.createDay(day, tMonth);\r\n                days.push(thisDay);\r\n            }\r\n            month.days = days;\r\n            this.months.push(month);\r\n        }\r\n    }\r\n\r\n    public createDay(day: number, tMonth: TMonth): Day {\r\n        const monthMoment = this.year ? moment().year(this.year).month(tMonth) : moment();\r\n        const thisDay: Day = new Day();\r\n        if (day <= monthMoment.daysInMonth()) {\r\n            thisDay.exists = true;\r\n            thisDay.number = day;\r\n            thisDay.date = moment().year(this.year).month(tMonth).date(day).toDate();\r\n            thisDay.dataItems = this.getDateDataItems(day, tMonth);\r\n            thisDay.cssClass = 'day-of-week-' + monthMoment.date(day).toDate().getDay();\r\n        }\r\n        else {\r\n            thisDay.exists = false;\r\n            thisDay.number = null;\r\n        }\r\n        return thisDay;\r\n    }\r\n\r\n    public getDateDataItems(day: number, month: TMonth): Array<DateDataItem> {\r\n        const arrayOfDataItems = new Array<DateDataItem>();\r\n        this._slotDataItems.forEach(item => {\r\n            const yearOfItem = moment(item.date).year();\r\n            const dayOfItem = moment(item.date).date();\r\n            const monthOfItem = moment(item.date).month();\r\n\r\n            if (month == monthOfItem && day == dayOfItem && this.year == yearOfItem)\r\n                arrayOfDataItems.push(item);\r\n\r\n        });\r\n        return arrayOfDataItems;\r\n    }\r\n\r\n    public getTitle(arr: DateDataItem[]): string {\r\n        let title = '';\r\n        if (arr)\r\n            title = arr.map(d => d.title).join('; ');\r\n\r\n        return title;\r\n    }\r\n\r\n    public setCssClasses(day: Day): string {\r\n        let cssClasses = '';\r\n        if (!day.exists)\r\n            cssClasses = 'not-existing-day';\r\n\r\n        else\r\n            cssClasses += 'clickable ' + day.cssClass;\r\n\r\n        return cssClasses;\r\n    }\r\n\r\n    public onCellClick(event: MouseEvent, month: Month, day: Day) {\r\n        this.logger.log(month, day);\r\n        if (day.exists) {\r\n            event.stopPropagation();\r\n            const e = new DateCellClickEvent();\r\n            e.date = day.date;\r\n            e.dataItems = day.dataItems;\r\n            this.logger.log(CLASS + 'onCellClick' + e.date + ' ' + e.dataItems);\r\n            this.cellClick.emit(e);\r\n        }\r\n    }\r\n\r\n    public increaseYear() {\r\n        this.year++;\r\n        this.initTable();\r\n    }\r\n\r\n    public decreaseYear() {\r\n        this.year--;\r\n        this.initTable();\r\n    }\r\n}\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nenum TMonth { Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec }\r\n\r\nexport class DateCellClickEvent {\r\n    public date: Date;\r\n    public dataItems: Array<DateDataItem> = [];\r\n}\r\nexport class Month {\r\n    public days: Day[];\r\n    public index: TMonth;\r\n    public name: string;\r\n}\r\nexport class Day {\r\n    public number: number;\r\n    public exists: boolean;\r\n    public cssClass: string;\r\n    public dataItems: Array<DateDataItem> = [];\r\n    public date: Date;\r\n}\r\nexport class DateDataItem {\r\n    public month?: TMonth;\r\n    public date: Date;\r\n\r\n    public cssClass?: string; // css class will be added to class of day cell\r\n    public proportion: number; // 0-100% is used to determine how much % of the cell\r\n    // has to be filled up.\r\n    public title?: string; // title will be added to title attribute of day cell\r\n    public text?: string; // text will be added to text content of day cell\r\n}\r\n\r\nexport class OccupationLegend {\r\n    public cssClass: string;\r\n    public name: string;\r\n}\r\n","<div>\r\n  <div style=\"width:5%; float:left;\">\r\n    <div class=\"btn-group\">\r\n      <button class=\"btn btn-default btn-xs\" (click)=\"decreaseYear()\" data-toggle=\"tooltip\" title=\"{{year-1}}\"><i\r\n      class=\"fas fa-angle-left\"></i></button>\r\n    </div>\r\n  </div>\r\n  <div [style.width.%]=\"90\" style=\"float:left;\" class=\"text-center\"><p class=\"title-size-4\"><b>{{year}}</b></p></div>\r\n  <div style=\"float:right; width:5%;\">\r\n    <div class=\"btn-group pull-right\">\r\n      <button class=\"btn btn-default btn-xs\" (click)=\"increaseYear()\" data-toggle=\"tooltip\" title=\"{{year+1}}\"><i\r\n      class=\"fas fa-angle-right\"></i></button>\r\n    </div>\r\n  </div>\r\n</div>\r\n<div>\r\n  <loading-indicator #loadingIndicator>\r\n    <table class=\"scheduler-year table table-bordered table-hover dataTable\">\r\n      <thead>\r\n        <tr>\r\n          <th class=\"row-month\"></th>\r\n          @for (day of months[0].days; track day) {\r\n            <th class=\"row-day text-center\">{{day.number}}</th>\r\n          }\r\n        </tr>\r\n      </thead>\r\n      <tbody>\r\n        @for (month of months; track month) {\r\n          <tr>\r\n            <td class=\"row-month\">{{month.name}}</td>\r\n            @for (day of month.days; track day) {\r\n              <td (click)=\"onCellClick($event, month, day)\"\r\n                class=\"text-center row-day\" [ngClass]=\"setCssClasses(day)\"\r\n                [attr.title]=\"getTitle(day.dataItems)\" style=\"position:relative\">\r\n                @for (dayItem of day.dataItems; track dayItem) {\r\n                  <div [ngClass]=\"dayItem.cssClass\"\r\n                  [style.height.px]=\"(CELLHEIGHTPX/CELLHEIGHTPERCENT)*dayItem.proportion\"></div>\r\n                }\r\n                <div style=\"position:absolute; top:-2px; right:3px;\">\r\n                  @if (day.exists) {\r\n                    <small class=\"day\">{{day.number}}</small>\r\n                  }\r\n                </div>\r\n              </td>\r\n            }\r\n          </tr>\r\n        }\r\n      </tbody>\r\n    </table>\r\n    <div class=\"pull-right\">\r\n      @for (occupation of occupationLegend; track occupation) {\r\n        <small style=\"padding-right:3px;\">\r\n          <span  [ngClass]=\"occupation?.cssClass\">&nbsp;&nbsp;</span>\r\n          {{occupation.name}}\r\n        </small>\r\n      }\r\n    </div>\r\n  </loading-indicator>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { LayoutModule } from '@sowatech/shared/layout';\r\nimport { SwtControlsModule } from '@sowatech/shared/swt-controls';\r\nimport { PopoverModule } from 'ngx-bootstrap/popover';\r\nimport { NgScrollbarModule } from 'ngx-scrollbar';\r\n\r\nimport { SchedulerYearCalendarComponent } from './scheduler-year-calendar.component';\r\n\r\nexport const PopoverModuleForRoot = PopoverModule.forRoot();\r\n\r\n@NgModule({\r\n    imports: [\r\n        CommonModule,\r\n        FormsModule,\r\n        NgScrollbarModule,\r\n        SwtControlsModule,//loadingIndicator\r\n        LayoutModule,\r\n        PopoverModuleForRoot,\r\n    ],\r\n    declarations: [\r\n        SchedulerYearCalendarComponent\r\n    ],\r\n    exports: [\r\n        SchedulerYearCalendarComponent\r\n    ]\r\n})\r\n\r\nexport class SchedulerYearModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}