{"version":3,"file":"metromobilite-m-features-time-sheet.mjs","sources":["../../../projects/lib-m-features/time-sheet/src/time-sheet.service.ts","../../../projects/lib-m-features/time-sheet/src/time-sheet/time-sheet.component.ts","../../../projects/lib-m-features/time-sheet/src/time-sheet/time-sheet.component.html","../../../projects/lib-m-features/time-sheet/src/validators/timeSheet-date.validator.ts","../../../projects/lib-m-features/time-sheet/src/time-sheet-dialog/time-sheet-dialog.component.ts","../../../projects/lib-m-features/time-sheet/src/time-sheet-dialog/time-sheet-dialog.component.html","../../../projects/lib-m-features/time-sheet/src/time-sheet-alone/time-sheet-alone.component.ts","../../../projects/lib-m-features/time-sheet/src/time-sheet-alone/time-sheet-alone.component.html","../../../projects/lib-m-features/time-sheet/src/time-sheet.directive.ts","../../../projects/lib-m-features/time-sheet/src/time-sheet.module.ts","../../../projects/lib-m-features/time-sheet/metromobilite-m-features-time-sheet.ts"],"sourcesContent":["import {HttpClient, HttpParams} from '@angular/common/http';\r\nimport {Injectable} from '@angular/core';\r\nimport {LinesService, RouteCalendar} from '@metromobilite/m-features/core';\r\nimport {Observable} from 'rxjs';\r\nimport {TimeSheetResponse} from './time-sheet.model';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class TimeSheetService {\r\n\tconstructor(private http: HttpClient, private linesService: LinesService) {\r\n\t}\r\n\r\n\tgetCalendar(line: string): RouteCalendar {\r\n\t\tif (this.linesService.lineCalendar.has(line)) {\r\n\t\t\treturn this.linesService.lineCalendar.get(line);\r\n\t\t}\r\n\t}\r\n\r\n\tconvertDate(date: Date): number {\r\n\t\tlet hours = date.getHours();\r\n\t\tconst minutes = date.getMinutes();\r\n\t\tconst _hours = new Date().getHours();\r\n\t\tif (hours < 12 && _hours > 12) {\r\n\t\t\thours = _hours;\r\n\t\t}\r\n\t\treturn 0;\r\n\t\t// const hour = this.hour.split(':');\r\n\t\t// if (hour[0] < 12 && new Date().getHours() > 12) {\r\n\t\t// \thour[0] = new Date().getHours();\r\n\t\t// }\r\n\t\t// const heureCourant = (hour[0] * 3600000) + (hour[1] * 60000);\r\n\t\t// const time = this.date.value.getTime() - (new Date().getTimezoneOffset() * 60000) + heureCourant;\r\n\t}\r\n\r\n\tmergeDateAndTime(date: string, time: string): Date {\r\n\t\tconst merged = new Date(date);\r\n\t\tconst [hours, minutes] = time.split(':');\r\n\t\tmerged.setHours(+hours);\r\n\t\tmerged.setMinutes(+minutes);\r\n\t\treturn merged;\r\n\t}\r\n\r\n\tgetTimeSheet(route: string, date: Date, nbTrips = 3, extraParams = {}): Observable<TimeSheetResponse> {\r\n\t\treturn this.http.get<TimeSheetResponse>(`@domain/@api/ficheHoraires/json`, {\r\n\t\t\tparams: new HttpParams({\r\n\t\t\t\tfromObject: {\r\n\t\t\t\t\troute,\r\n\t\t\t\t\ttime: (date.getTime() - (date.getTimezoneOffset() * 60000)).toString(),\r\n\t\t\t\t\tnbTrips: nbTrips.toString(), ...extraParams,\r\n\t\t\t\t},\r\n\t\t\t}),\r\n\t\t});\r\n\t}\r\n}\r\n","import {Component, EventEmitter, HostBinding, Input, OnInit, Output} from '@angular/core';\r\nimport {RouteCalendar} from '@metromobilite/m-features/core';\r\nimport {tap} from 'rxjs/operators';\r\nimport {TimeSheet, TimeSheetComputedProperties, TimeSheetResponse} from '../time-sheet.model';\r\nimport {TimeSheetService} from '../time-sheet.service';\r\n\r\n@Component({\r\n\tselector: 'mf-time-sheet',\r\n\ttemplateUrl: './time-sheet.component.html',\r\n\texportAs: 'timeSheet',\r\n})\r\nexport class TimeSheetComponent implements OnInit {\r\n\r\n\t@Input() line: string;\r\n\tpublic calendar: RouteCalendar;\r\n\tloading: boolean;\r\n\tdisplayLoader: boolean;\r\n\tloaderTimer: any;\r\n\t@Output() dateChange = new EventEmitter<Date>();\r\n\t@Output() dataLoad = new EventEmitter<void>();\r\n\t@HostBinding('class.time-sheet-container') containerClass = true;\r\n\ttimeSheets: TimeSheet[] = [];\r\n\t// Message to display when no time sheet is available\r\n\tunavailableContent: string;\r\n\t// Next time sheet to display\r\n\tnextTime: string;\r\n\r\n\tconstructor(private timeSheetService: TimeSheetService) {\r\n\t\tthis.timeSheets = [];\r\n\t\tthis.unavailableContent = '';\r\n\t}\r\n\r\n\tprivate _date: Date;\r\n\r\n\tget date(): Date {\r\n\t\treturn this._date;\r\n\t}\r\n\r\n\t@Input() set date(value: Date) {\r\n\t\tif (value !== this._date) {\r\n\t\t\tthis._date = value;\r\n\t\t\tthis.loadTimeSheet();\r\n\t\t}\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t}\r\n\r\n\tloadTimeSheet() {\r\n\t\tthis.loading = true;\r\n\t\tthis.displayLoader = false;\r\n\t\tthis.loaderTimer = undefined;\r\n\t\tthis.unavailableContent = null;\r\n\t\tthis.nextTime = null;\r\n\r\n\t\tif (this.line && this.date) {\r\n\t\t\tconst dateStr: { date: string, time: string } = this.dateToString(this.date);\r\n\t\t\tthis.calendar = this.timeSheetService.getCalendar(this.line);\r\n\t\t\tif (this.calendar) {\r\n\t\t\t\tconst startDate: Date = new Date(this.calendar.startDate);\r\n\t\t\t\tconst endDate: Date = new Date(this.calendar.endDate);\r\n\t\t\t\tconst date = new Date(this.date);\r\n\t\t\t\tif (date.setHours(12,0,0,0) >= startDate.setHours(12,0,0,0) && date.setHours(12,0,0,0) <= endDate.setHours(12,0,0,0)) {\r\n\t\t\t\t\tif (this.isInCalendar(this.date)) {\r\n\t\t\t\t\t\t// The line is active we can get the time sheet\r\n\t\t\t\t\t\tthis.unavailableContent = null;\r\n\t\t\t\t\t\tthis.nextTime = null;\r\n\t\t\t\t\t\tthis.getTimeSheet(this.line, this.date);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// This line is not active we need to get the next active date\r\n\t\t\t\t\t\tthis.nextTime = this.getNextDateAvailable(this.date, this.calendar.calendar);\r\n\t\t\t\t\t\tif (this.nextTime) {\r\n\t\t\t\t\t\t\tthis.unavailableContent = `Cette ligne ne circule pas le ${dateStr.date}.`;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// The next date is not in the calendar (last day of the calendar)\r\n\t\t\t\t\t\t\tthis.unavailableContent = `L'information n'est pas disponible sur cette période.`;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthis.timeSheets = [];\r\n\t\t\t\t\t\tconsole.warn(`La ligne ne circule pas le ${dateStr.date}, prochain passage le ${this.nextTime}`);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// No calendar info\r\n\t\t\tthis.unavailableContent = `L'information n'est pas disponible sur cette période.`;\r\n\t\t\tthis.nextTime = null;\r\n\t\t\tthis.timeSheets = [];\r\n\t\t\treturn;\r\n\t\t} else {\r\n\t\t\tconsole.error('A line id and a date object must be given to this component for it to work properly.');\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Check if a date is in the calendar\r\n\t * @param date - Date object\r\n\t * @returns boolean\r\n\t */\r\n\tisInCalendar(date: Date): boolean {\r\n\t\tthis.calendar = this.timeSheetService.getCalendar(this.line);\r\n\t\tif (this.calendar && this.calendar.calendar && this.calendar.calendar.length > 0) {\r\n\t\t\tconst dateToCheck: Date = new Date(date);\r\n\t\t\tconst dateToCheckWithoutTime: Date = new Date(dateToCheck.getFullYear(), dateToCheck.getMonth(), dateToCheck.getDate());\r\n\t\t\tfor (const dateStr of this.calendar.calendar) {\r\n\t\t\t\tconst dateCalendar: Date = new Date(dateStr);\r\n\t\t\t\tconst dateCalendarWithoutTime: Date = new Date(dateCalendar.getFullYear(), dateCalendar.getMonth(), dateCalendar.getDate());\r\n\t\t\t\tif (dateToCheckWithoutTime.getTime() === dateCalendarWithoutTime.getTime()) return true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Get the next Date available in the calendar\r\n\t * @param date - Date object\r\n\t * @param calendar - Array of dates\r\n\t * @returns Date object\r\n\t */\r\n\tgetNextDateAvailable(date: Date, calendar: string[]): string {\r\n\t\tconst dateToCheck: Date = new Date(date);\r\n\t\tif (calendar && calendar.length > 0) {\r\n\t\t\tlet dateNext: Date = new Date(calendar[0]);\r\n\r\n\t\t\tfor (const dateString of calendar.sort()) {\r\n\t\t\t\tconst currentDate = new Date(dateString);\r\n\r\n\t\t\t\tif (currentDate.getTime() > dateToCheck.getTime()) {\r\n\t\t\t\t\tdateNext = currentDate;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// If the next date is lower than the date to check, we return null\r\n\t\t\tif (dateNext.getTime() > dateToCheck.getTime()) {\r\n\t\t\t\treturn this.dateToString(dateNext).date;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Get sheet time for a line and a date\r\n\t * @param line - Line id\r\n\t * @param date - Date object\r\n\t */\r\n\tgetTimeSheet(line: string, date: Date): void {\r\n\t\tthis.unavailableContent = null;\r\n\t\tthis.nextTime = null;\r\n\r\n\t\tthis.timeSheetService.getTimeSheet(line, date)\r\n\t\t\t.pipe(\r\n\t\t\t\ttap(() => {\r\n\t\t\t\t\tthis.loaderTimer = setTimeout(() => { this.displayLoader = true; }, 500);\r\n\t\t\t\t})\r\n\t\t\t)\r\n\t\t\t.subscribe((response: TimeSheetResponse) => {\r\n\t\t\t\tif (!response) {\r\n\t\t\t\t\t// We don't have any data for this line and this date\r\n\t\t\t\t\tthis.unavailableContent = `Nous n'avons pas encore de données pour cette période.`;\r\n\t\t\t\t\tthis.nextTime = null;\r\n\t\t\t\t\tthis.timeSheets = [];\r\n\t\t\t\t\treturn;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tObject.entries(response).forEach(([index, timeSheet]: [string, TimeSheet]) => {\r\n\t\t\t\t\t\tif (timeSheet.arrets.length === 0) {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\ttimeSheet.computed = this.getComputedValues(timeSheet);\r\n\t\t\t\t\t\tconst ts = this.timeSheets[+index] || undefined;\r\n\t\t\t\t\t\tif (ts) {\r\n\t\t\t\t\t\t\tconst isNext = ts.nextTime < timeSheet.nextTime;\r\n\t\t\t\t\t\t\tts.arrets = timeSheet.arrets;\r\n\t\t\t\t\t\t\tts.nextTime = timeSheet.nextTime;\r\n\t\t\t\t\t\t\tts.prevTime = timeSheet.prevTime;\r\n\t\t\t\t\t\t\tts.pivot2 = timeSheet.pivot2;\r\n\t\t\t\t\t\t\tts.trips = timeSheet.trips;\r\n\t\t\t\t\t\t\tts.computed = timeSheet.computed;\r\n\t\t\t\t\t\t\tts.computed.updated = true;\r\n\t\t\t\t\t\t\tts.computed.new = false;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthis.timeSheets.push(timeSheet);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\tthis.dataLoad.emit();\r\n\t\t\t}, (err) => {\r\n\t\t\t\t// Empty usage\r\n\t\t\t}, () => {\r\n\t\t\t\tthis.loading = false;\r\n\t\t\t\tthis.displayLoader = false;\r\n\t\t\t\tif (this.loaderTimer) {\r\n\t\t\t\t\tclearTimeout(this.loaderTimer);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\tdateToString(date: Date): { date: string, time: string } {\r\n\t\treturn {\r\n\t\t\tdate: date.toLocaleDateString('fr-FR', { year: 'numeric', month: '2-digit', day: '2-digit' }),\r\n\t\t\ttime: date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }),\r\n\t\t};\r\n\t}\r\n\r\n\tnext(timeSheet: TimeSheet) {\r\n\t\tthis.date = new Date(timeSheet.computed.nextTime);\r\n\t\tthis.dateChange.emit(this.date);\r\n\t}\r\n\r\n\tprevious(timeSheet: TimeSheet) {\r\n\t\tthis.date = new Date(timeSheet.computed.prevTime);\r\n\t\tthis.dateChange.emit(this.date);\r\n\t}\r\n\r\n\tprivate getComputedValues(timeSheet: TimeSheet): TimeSheetComputedProperties {\r\n\t\tconst [lastStopName, lastCity] = timeSheet.arrets[timeSheet.arrets.length - 1].stopName.split(', ').reverse();\r\n\t\treturn {\r\n\t\t\tlastStopName,\r\n\t\t\tid: `${timeSheet.arrets[0].stopId}_${timeSheet.arrets[timeSheet.arrets.length - 1].stopId}`,\r\n\t\t\tnew: true,\r\n\t\t\tupdated: false,\r\n\t\t\tprevTime: timeSheet.prevTime + ((new Date()).getTimezoneOffset() * 60000),\r\n\t\t\tnextTime: timeSheet.nextTime + ((new Date()).getTimezoneOffset() * 60000),\r\n\t\t\tlastCity,\r\n\t\t};\r\n\t}\r\n\r\n}\r\n","<ng-content></ng-content>\r\n","import {FormControl} from '@angular/forms';\r\n\r\n\r\nexport function validDate() {\r\n\treturn (control: FormControl) => {\r\n\t\tif (!control.value.date || !control.value.time) {\r\n\t\t\treturn {invalidDate: true};\r\n\t\t}\r\n\t\tconst date = new Date(control.value.date);\r\n\t\tconst [hours, minutes] = control.value.time.split(':');\r\n\t\tdate.setHours(+hours);\r\n\t\tdate.setMinutes(+minutes);\r\n\t\tif (date.getTime() === date.getTime()) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\treturn {invalidDate: true};\r\n\t};\r\n}\r\n","import {Component, Inject, OnDestroy, TemplateRef, ViewChild} from '@angular/core';\r\nimport {FormControl, FormGroup, Validators} from '@angular/forms';\r\nimport {MAT_DIALOG_DATA, MatDialog} from '@angular/material/dialog';\r\nimport {MatTabGroup} from '@angular/material/tabs';\r\nimport {TAD_LINK} from '@metromobilite/m-features';\r\nimport {Line, LinesService} from '@metromobilite/m-features/core';\r\nimport {Subject} from 'rxjs';\r\nimport {filter, takeUntil} from 'rxjs/operators';\r\nimport {TimeSheetDialogData, Trip} from '../time-sheet.model';\r\nimport {TimeSheetService} from '../time-sheet.service';\r\nimport {validDate} from '../validators/timeSheet-date.validator';\r\n\r\n\r\n@Component({\r\n\ttemplateUrl: './time-sheet-dialog.component.html', styleUrls: ['./time-sheet-dialog.component.scss'],\r\n})\r\nexport class TimeSheetDialogComponent implements OnDestroy {\r\n\tline: Line;\r\n\tdateForm: FormGroup;\r\n\r\n\t@ViewChild(MatTabGroup) tabGroup: MatTabGroup;\r\n\t@ViewChild('noTimeSheets') loader: TemplateRef<any>;\r\n\tprivate _tabIndexInit = false;\r\n\tprivate unSubscriber = new Subject<void>();\r\n\r\n\tconstructor(\r\n\t\tpublic timeSheetService: TimeSheetService,\r\n\t\tprivate linesService: LinesService,\r\n\t\tprivate dialog: MatDialog,\r\n\t\t@Inject(MAT_DIALOG_DATA) private data: TimeSheetDialogData,\r\n\t\t@Inject(TAD_LINK) public tadLink: string\r\n\t) {\r\n\t\tthis.line = this.linesService.find(this.data.line);\r\n\t\tthis.date = this.data.date;\r\n\t\tthis.dateForm = new FormGroup({\r\n\t\t\tdate: new FormControl(this.getLocalDateString(this.date), [Validators.required]),\r\n\t\t\ttime: new FormControl(this.getLocalTimeString(this.date), [Validators.required]),\r\n\t\t}, [validDate]);\r\n\t\tthis.dateForm.valueChanges\r\n\t\t.pipe(filter(() => !this.dateForm.errors), takeUntil(this.unSubscriber))\r\n\t\t.subscribe({\r\n\t\t\tnext: (values) => {\r\n\t\t\t\tthis.date = this.timeSheetService.mergeDateAndTime(values.date, values.time);\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tprivate _date: Date;\r\n\r\n\tget date(): Date {\r\n\t\treturn this._date;\r\n\t}\r\n\r\n\tset date(value: Date) {\r\n\t\tthis._date = value;\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tthis.unSubscriber.next();\r\n\t\tthis.unSubscriber.complete();\r\n\t}\r\n\r\n\tchangeFromChild(date: Date) {\r\n\t\tthis.date = date;\r\n\t\tthis.dateForm.setValue({\r\n\t\t\tdate: this.getLocalDateString(date), time: this.getLocalTimeString(date),\r\n\t\t}, {emitEvent: false});\r\n\t}\r\n\r\n\tonLoad() {\r\n\t\tconst loader = this.dialog.open(this.loader, {\r\n\t\t\t// todo faire en sort que la classe soit prise parce que c'est pas le cas, pour virer le background\r\n\t\t\tid: 'mfTimeSheetLoader',\r\n\t\t});\r\n\t\tsetTimeout(() => {\r\n\t\t\tif (this.tabGroup && !this._tabIndexInit) {\r\n\t\t\t\tthis.tabGroup.selectedIndex = this.data.direction;\r\n\t\t\t\tthis._tabIndexInit = true;\r\n\t\t\t}\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tloader.close();\r\n\t\t\t}, 500);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate getLocalDateString(date: Date): string {\r\n\t\treturn date\r\n\t\t.toLocaleDateString('fr-FR', {\r\n\t\t\tyear: 'numeric', month: '2-digit', day: '2-digit',\r\n\t\t})\r\n\t\t.split('/')\r\n\t\t.reverse()\r\n\t\t.join('-');\r\n\t}\r\n\r\n\tprivate getLocalTimeString(date: Date): string {\r\n\t\treturn date.toLocaleTimeString('fr-FR', {\r\n\t\t\thour: '2-digit', minute: '2-digit',\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Use if at least one is equal to 2\r\n\t * @param trips Trip[]\r\n\t * @returns boolean\r\n\t */\r\n\tisTrip(trips: Trip[]): boolean {\r\n\t\treturn trips.some((trip) => trip.pickupType === '2');\r\n\t}\r\n\r\n}\r\n","<div class=\"m-toolbar multiline\">\r\n\t<div class=\"m-toolbar-row\">\r\n\t\t<m-logo-lines [ligne]=\"line\" class=\"icon-left-large\"></m-logo-lines>\r\n\t\t<h1 class=\"m-toolbar-title ellipsis\">\r\n\t\t\t<span class=\"ellipsis\">Fiche horaire</span>\r\n\t\t</h1>\r\n\t\t<button mat-icon-button mat-dialog-close aria-label=\"Fermer la fiche horaire\">\r\n\t\t\t<m-icons>close</m-icons>\r\n\t\t</button>\r\n\t</div>\r\n\t<div class=\"m-toolbar-row filter-row\" [formGroup]=\"dateForm\">\r\n\t\t<div class=\"m-date-form-field\">\r\n\t\t\t<label for=\"date-field\" class=\"cdk-visually-hidden\">Date</label>\r\n\t\t\t<input id=\"date-field\" type=\"date\" formControlName=\"date\"/>\r\n\t\t\t<m-icons>event</m-icons>\r\n\t\t</div>\r\n\t\t<div class=\"m-time-form-field\">\r\n\t\t\t<label for=\"time-field\" class=\"cdk-visually-hidden\">Heures/minutes</label>\r\n\t\t\t<input id=\"time-field\" type=\"time\" formControlName=\"time\"/>\r\n\t\t\t<m-icons>schedule</m-icons>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n\r\n<mf-time-sheet\r\n\t#ats=\"timeSheet\"\r\n\t[line]=\"line.id\"\r\n\t[date]=\"date\"\r\n\t(dateChange)=\"changeFromChild($event)\"\r\n\t(dataLoad)=\"onLoad()\"\r\n>\r\n\t<mat-tab-group\r\n\t\tmat-stretch-tabs\r\n\t\tclass=\"m-theme\"\r\n\t\t*ngIf=\"ats.timeSheets && ats.timeSheets.length !== 0; else noTimeSheets\"\r\n\t>\r\n\t\t<mat-tab *ngFor=\"let timeSheet of ats.timeSheets\">\r\n\t\t\t<ng-template mat-tab-label>\r\n\t\t\t\t<m-icons class=\"icon-left\">arrow_right_alt</m-icons>\r\n\t\t\t\t<span class=\"layout column align-start\">\r\n\t\t\t\t\t<span class=\"text-secondary small\">{{ timeSheet.computed.lastCity }}</span>\r\n\t\t\t\t\t<span>{{ timeSheet.computed.lastStopName }}</span>\r\n\t\t\t\t</span>\r\n\t\t\t</ng-template>\r\n\t\t\t<div class=\"content\">\r\n\r\n\t\t\t\t<div class=\"informationTad\" *ngIf=\"isTrip(timeSheet.trips)\">\r\n\t\t\t\t\t<p>Passages soumis à réservation.</p>\r\n\r\n\t\t\t\t\t<div class=\"contentTad\">\r\n\t\t\t\t\t\t<a>Dois-je réserver ?</a>\r\n\r\n\t\t\t\t\t\t<ul [class.only-two-pickups]=\"timeSheet.trips.length === 2\">\r\n\t\t\t\t\t\t\t<li *ngFor=\"let trip of timeSheet.trips\">\r\n\t\t\t\t\t\t\t\t<a>\r\n\t\t\t\t\t\t\t\t\t<ng-container *ngIf=\"trip.pickupType === '2'; else noTad\">\r\n\t\t\t\t\t\t\t\t\t\t<m-icons color=\"primary\">call</m-icons>\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"tad\">OUI</span>\r\n\t\t\t\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t<ng-template #noTad>\r\n\t\t\t\t\t\t\t\t\t<m-icons>call</m-icons>\r\n\t\t\t\t\t\t\t\t\t<span>Non</span>\r\n\t\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t</ul>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<ul class=\"schedules\">\r\n\t\t\t\t\t<li *ngFor=\"let stop of timeSheet.arrets; let isLast = last\">\r\n\t\t\t\t\t\t<m-icons class=\"icon-left\" [class.last]=\"isLast\" aria-hidden=\"true\">arrow_right_alt</m-icons>\r\n\t\t\t\t\t\t<div class=\"layout column\">\r\n\t\t\t\t\t\t\t<span class=\"text-secondary small ellipsis\">{{stop.city}}</span>\r\n\t\t\t\t\t\t\t<p class=\"stop-name\">{{ stop.name }}</p>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<ul class=\"trips\">\r\n\t\t\t\t\t\t\t<li class=\"trip\" *ngFor=\"let trip of stop.trips; let i = index\" [attr.data-index]=\"i\">\r\n\t\t\t\t\t\t\t\t<span [class.tad]=\"timeSheet.trips && timeSheet.trips[i] && timeSheet.trips[i].pickupType !== '0' && trip !== '|'\">\r\n\t\t\t\t\t\t\t\t\t{{ trip | timeSchedule }}\r\n\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t</ul>\r\n\t\t\t\t\t</li>\r\n\t\t\t\t</ul>\r\n\t\t\t\t<div class=\"actions\">\r\n\t\t\t\t\t<button mat-fab (click)=\"ats.previous(timeSheet);\">\r\n\t\t\t\t\t\t<m-icons>fast_rewind</m-icons>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t\t<button mat-fab (click)=\"ats.next(timeSheet);\">\r\n\t\t\t\t\t\t<m-icons>fast_forward</m-icons>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t</div>\r\n\t\t\t</div> -->\r\n\r\n\t\t\t<ng-template matTabContent>\r\n\t\t\t\t<ul class=\"pickups\" [class.only-two-pickups]=\"timeSheet.trips.length === 2\">\r\n\t\t\t\t\t<li *ngFor=\"let trip of timeSheet.trips\">\r\n\t\t\t\t\t\t<a *ngIf=\"trip.pickupType === '2'\" [attr.href]=\"tadLink\" target=\"_blank\" mat-icon-button>\r\n\t\t\t\t\t\t\t<m-icons svgIcon=\"tad\"></m-icons>\r\n\t\t\t\t\t\t</a>\r\n\t\t\t\t\t</li>\r\n\t\t\t\t</ul>\r\n\t\t\t\t<p class=\"padding--left---spacing\">Départ</p>\r\n\t\t\t\t<ul class=\"schedules\">\r\n\t\t\t\t\t<li *ngFor=\"let stop of timeSheet.arrets; let isLast = last\">\r\n\t\t\t\t\t\t<m-icons class=\"icon-left\" [class.last]=\"isLast\" aria-hidden=\"true\">arrow_right_alt</m-icons>\r\n\t\t\t\t\t\t<div class=\"layout column\">\r\n\t\t\t\t\t\t\t<span class=\"text-secondary small ellipsis\">{{ stop.parentStation.city }}</span>\r\n\t\t\t\t\t\t\t<p class=\"stop-name\">{{ stop.parentStation.name }}</p>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<ul class=\"trips\">\r\n\t\t\t\t\t\t\t<li class=\"trip\" *ngFor=\"let trip of stop.trips; let i = index\" [attr.data-index]=\"i\">\r\n\t\t\t\t\t\t\t\t{{ trip | timeSchedule }}\r\n\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t</ul>\r\n\t\t\t\t\t</li>\r\n\t\t\t\t</ul>\r\n\t\t\t\t<div class=\"actions\">\r\n\t\t\t\t\t<button mat-fab (click)=\"ats.previous(timeSheet);\">\r\n\t\t\t\t\t\t<m-icons>fast_rewind</m-icons>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t\t<button mat-fab (click)=\"ats.next(timeSheet);\">\r\n\t\t\t\t\t\t<m-icons>fast_forward</m-icons>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t</div>\r\n\t\t\t</ng-template>\r\n\t\t</mat-tab>\r\n\t</mat-tab-group>\r\n</mf-time-sheet>\r\n<ng-template #noTimeSheets>\r\n\t<span class='noContent' *ngIf=\"ats.unavailableContent\">{{ ats.unavailableContent }}</span>\r\n</ng-template>\r\n","import {Component, Inject, Input, OnDestroy, OnInit, TemplateRef, ViewChild} from '@angular/core';\r\nimport {FormControl, FormGroup, Validators} from '@angular/forms';\r\nimport {MatDialog} from '@angular/material/dialog';\r\nimport {MatTabGroup} from '@angular/material/tabs';\r\nimport {TAD_LINK} from '@metromobilite/m-features';\r\nimport {Line, LinesService} from '@metromobilite/m-features/core';\r\nimport {Subject} from 'rxjs';\r\nimport {filter, takeUntil} from 'rxjs/operators';\r\nimport {Trip} from '../time-sheet.model';\r\nimport {TimeSheetService} from '../time-sheet.service';\r\nimport {validDate} from '../validators/timeSheet-date.validator';\r\n\r\n\r\n@Component({\r\n\tselector: 'mf-time-sheet-alone',\r\n\ttemplateUrl: './time-sheet-alone.component.html',\r\n\tstyleUrls: ['./time-sheet-alone.component.scss'],\r\n})\r\nexport class TimeSheetAloneComponent implements OnInit, OnDestroy {\r\n\r\n\t@ViewChild(MatTabGroup) tabGroup: MatTabGroup;\r\n\t@ViewChild('noTimeSheets') loader: TemplateRef<any>;\r\n\tprivate _tabIndexInit = false;\r\n\r\n\t// ====================================================================================\r\n\t// Line name (url params)\r\n\t@Input() lineName: string;\r\n\t// Direction (0 or 1)\r\n\t@Input() aDirection: number | 0 | 1 = 0;\r\n\t// Date (Date object)\r\n\t@Input() date: Date = new Date();\r\n\r\n\t// Line information\r\n\tpublic line: Line;\r\n\t// Date form\r\n\tpublic dateForm: FormGroup;\r\n\t// Unsubscribe\r\n\tprivate unSubscriber = new Subject<void>();\r\n\t// ====================================================================================\r\n\r\n\tconstructor(\r\n\t\tprivate timeSheetService: TimeSheetService,\r\n\t\tprivate linesService: LinesService,\r\n\t\tprivate dialog: MatDialog,\r\n\t\t@Inject(TAD_LINK) public tadLink: string\r\n\t) { }\r\n\r\n\tngOnInit() {\r\n\t\tthis.line = this.linesService.find(this.lineName);\r\n\t\tthis.initFormDate(this.date);\r\n\t}\r\n\r\n\tinitFormDate(currentDate: Date) {\r\n\t\tthis.dateForm = new FormGroup({\r\n\t\t\tdate: new FormControl(this.getLocalDateString(currentDate), [Validators.required]),\r\n\t\t\ttime: new FormControl(this.getLocalTimeString(currentDate), [Validators.required]),\r\n\t\t}, [validDate]);\r\n\r\n\t\tthis.dateForm.valueChanges\r\n\t\t\t.pipe(\r\n\t\t\t\tfilter(() => !this.dateForm.errors),\r\n\t\t\t\ttakeUntil(this.unSubscriber)\r\n\t\t\t)\r\n\t\t\t.subscribe({\r\n\t\t\t\tnext: (values) => {\r\n\t\t\t\t\tthis.date = this.timeSheetService.mergeDateAndTime(values.date, values.time);\r\n\t\t\t\t},\r\n\t\t\t});\r\n\t}\r\n\r\n\r\n\tchangeFromChild(date: Date) {\r\n\t\tthis.date = date;\r\n\t\tthis.dateForm.setValue({\r\n\t\t\tdate: this.getLocalDateString(date), time: this.getLocalTimeString(date),\r\n\t\t}, {emitEvent: false});\r\n\t}\r\n\r\n\r\n\tonLoad() {\r\n\t\tconst loader = this.dialog.open(this.loader, {\r\n\t\t\t// todo faire en sort que la classe soit prise parce que c'est pas le cas, pour virer le background\r\n\t\t\tid: 'mfTimeSheetLoader',\r\n\t\t});\r\n\t\tsetTimeout(() => {\r\n\t\t\tif (this.tabGroup && !this._tabIndexInit) {\r\n\t\t\t\tthis.tabGroup.selectedIndex = this.aDirection;\r\n\t\t\t\tthis._tabIndexInit = true;\r\n\t\t\t}\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tloader.close();\r\n\t\t\t}, 500);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate getLocalDateString(date: Date): string {\r\n\t\treturn date\r\n\t\t\t.toLocaleDateString('fr-FR', {year: 'numeric', month: '2-digit', day: '2-digit'})\r\n\t\t\t.split('/')\r\n\t\t\t.reverse()\r\n\t\t\t.join('-');\r\n\t}\r\n\r\n\r\n\tprivate getLocalTimeString(date: Date): string {\r\n\t\treturn date.toLocaleTimeString('fr-FR', {\r\n\t\t\thour: '2-digit', minute: '2-digit',\r\n\t\t});\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Use if at least one is equal to 2\r\n\t * @param trips Trip[]\r\n\t * @returns boolean\r\n\t */\r\n\tisTrip(trips: Trip[]): boolean {\r\n\t\treturn trips.some((trip) => trip.pickupType === '2');\r\n\t}\r\n\r\n\r\n\tngOnDestroy(): void {\r\n\t\tthis.unSubscriber.next();\r\n\t\tthis.unSubscriber.complete();\r\n\t}\r\n\r\n}\r\n","<div class=\"m-toolbar multiline\">\r\n\t<div class=\"m-toolbar-row filter-row\" [formGroup]=\"dateForm\">\r\n\t\t<div class=\"m-date-form-field\">\r\n\t\t\t<label for=\"date-field\" class=\"cdk-visually-hidden\">Date</label>\r\n\t\t\t<input id=\"date-field\" type=\"date\" formControlName=\"date\"/>\r\n\t\t\t<m-icons>event</m-icons>\r\n\t\t</div>\r\n\t\t<div class=\"m-time-form-field\">\r\n\t\t\t<label for=\"time-field\" class=\"cdk-visually-hidden\">Heures/minutes</label>\r\n\t\t\t<input id=\"time-field\" type=\"time\" formControlName=\"time\"/>\r\n\t\t\t<m-icons>schedule</m-icons>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n\r\n<mf-time-sheet #ats=\"timeSheet\" [line]=\"line.id\" [date]=\"date\" (dateChange)=\"changeFromChild($event)\" (dataLoad)=\"onLoad()\">\r\n\t<mat-tab-group mat-stretch-tabs class=\"m-theme\" *ngIf=\"ats.timeSheets && ats.timeSheets.length !== 0; else noTimeSheets\">\r\n\t\t<mat-tab *ngFor=\"let timeSheet of ats.timeSheets\">\r\n\t\t\t<ng-template mat-tab-label>\r\n\t\t\t\t<m-icons class=\"icon-left\">arrow_right_alt</m-icons>\r\n\t\t\t\t<span class=\"layout column align-start\">\r\n\t\t\t\t\t<span class=\"text-secondary small\">{{ timeSheet.computed.lastCity }}</span>\r\n\t\t\t\t\t<span>{{ timeSheet.computed.lastStopName }}</span>\r\n\t\t\t\t</span>\r\n\t\t\t</ng-template>\r\n\t\t\t<div class=\"content\">\r\n\t\t\t\t<div class=\"informationTad\" *ngIf=\"isTrip(timeSheet.trips)\">\r\n\t\t\t\t\t<p>Passages soumis à réservation.</p>\r\n\t\t\t\t\t<div class=\"contentTad\">\r\n\t\t\t\t\t\t<a>Dois-je réserver ?</a>\r\n\r\n\t\t\t\t\t\t<ul [class.only-two-pickups]=\"timeSheet.trips.length === 2\">\r\n\t\t\t\t\t\t\t<li *ngFor=\"let trip of timeSheet.trips\">\r\n\t\t\t\t\t\t\t\t<a>\r\n\t\t\t\t\t\t\t\t\t<ng-container *ngIf=\"trip.pickupType === '2'; else noTad\">\r\n\t\t\t\t\t\t\t\t\t\t<m-icons color=\"primary\">call</m-icons>\r\n\t\t\t\t\t\t\t\t\t\t<span class=\"tad\">OUI</span>\r\n\t\t\t\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t\t\t</a>\r\n\t\t\t\t\t\t\t\t<ng-template #noTad>\r\n\t\t\t\t\t\t\t\t\t<m-icons>call</m-icons>\r\n\t\t\t\t\t\t\t\t\t<span>Non</span>\r\n\t\t\t\t\t\t\t\t</ng-template>\r\n\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t</ul>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<ul class=\"schedules\">\r\n\t\t\t\t\t<li *ngFor=\"let stop of timeSheet.arrets; let isLast = last\">\r\n\t\t\t\t\t\t<m-icons class=\"icon-left\" [class.last]=\"isLast\" aria-hidden=\"true\">arrow_right_alt</m-icons>\r\n\t\t\t\t\t\t<div class=\"layout column\">\r\n\t\t\t\t\t\t\t<span class=\"text-secondary small ellipsis\">{{stop.city}}</span>\r\n\t\t\t\t\t\t\t<p class=\"stop-name\">{{ stop.name }}</p>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t<ul class=\"trips\">\r\n\t\t\t\t\t\t\t<li class=\"trip\" *ngFor=\"let trip of stop.trips; let i = index\" [attr.data-index]=\"i\">\r\n\t\t\t\t\t\t\t\t<span [class.tad]=\"timeSheet.trips && timeSheet.trips[i] && timeSheet.trips[i].pickupType !== '0' && trip !== '|'\">\r\n\t\t\t\t\t\t\t\t\t{{ trip | timeSchedule }}\r\n\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t</ul>\r\n\t\t\t\t\t</li>\r\n\t\t\t\t</ul>\r\n\t\t\t\t<div class=\"actions\">\r\n\t\t\t\t\t<button mat-fab (click)=\"ats.previous(timeSheet)\">\r\n\t\t\t\t\t\t<m-icons>fast_rewind</m-icons>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t\t<button mat-fab (click)=\"ats.next(timeSheet)\">\r\n\t\t\t\t\t\t<m-icons>fast_forward</m-icons>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</mat-tab>\r\n\t</mat-tab-group>\r\n</mf-time-sheet>\r\n<ng-template #noTimeSheets>\r\n\t<span class='noContent' *ngIf=\"ats.unavailableContent\">{{ ats.unavailableContent }}</span>\r\n</ng-template>\r\n","import { Directive, HostListener, Input, Optional } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { TimeSheetDialogComponent } from './time-sheet-dialog/time-sheet-dialog.component';\r\nimport { TimeSheetDialogData } from './time-sheet.model';\r\nimport { UserSettingsService, THEMES, StatusBarService } from '@metromobilite/m-features/core';\r\n\r\n@Directive({\r\n\tselector: '[mfTimeSheet]'\r\n})\r\nexport class TimeSheetDirective {\r\n\r\n\t@Input() line: string;\r\n\t@Input() direction: number | 0 | 1 = 0;\r\n\t@Input() date: Date = new Date();\r\n\r\n\tconstructor(\r\n\t\tprivate dialog: MatDialog,\r\n\t\tprivate statusBar: StatusBarService,\r\n\t\tprivate userSettings: UserSettingsService,\r\n\t) { }\r\n\r\n\t@HostListener('click') onClick() {\r\n\t\tconst ref = this.dialog.open<TimeSheetDialogComponent, TimeSheetDialogData, void>(TimeSheetDialogComponent, {\r\n\t\t\tdata: {\r\n\t\t\t\tline: this.line,\r\n\t\t\t\tdate: this.date,\r\n\t\t\t\tdirection: this.direction,\r\n\t\t\t},\r\n\t\t\tpanelClass: ['time-sheet-dialog', 'm-theme'],\r\n\t\t});\r\n\t\tlet previousColor: string;\r\n\t\tref.afterOpened().subscribe(() => {\r\n\t\t\tpreviousColor = this.statusBar.getCurrentMetaThemeColor();\r\n\t\t\tthis.statusBar.updateStatusBar(this.getStatusBarColor());\r\n\t\t});\r\n\t\tref.beforeClosed().subscribe(() => {\r\n\t\t\tthis.statusBar.updateStatusBar(previousColor);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate getStatusBarColor() {\r\n\t\treturn this.userSettings.theme === THEMES.DARK ? '#39353c' : '#ffffff';\r\n\t}\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport {MatProgressSpinnerModule} from '@angular/material/progress-spinner';\r\nimport { MIcons } from '@metromobilite/m-ui/lib/m-icons';\r\nimport { MLogoLines } from '@metromobilite/m-ui/lib/m-logo-lines';\r\nimport {TimeSheetAloneComponent} from './time-sheet-alone/time-sheet-alone.component';\r\n\r\nimport { TimeSheetComponent } from './time-sheet/time-sheet.component';\r\nimport { TimeSheetDialogComponent } from './time-sheet-dialog/time-sheet-dialog.component';\r\nimport { TimeSheetDirective } from './time-sheet.directive';\r\nimport { CoreModule } from '@metromobilite/m-features/core';\r\n\r\n\r\n@NgModule({\r\n\tdeclarations: [\r\n\t\tTimeSheetComponent,\r\n\t\tTimeSheetDialogComponent,\r\n\t\tTimeSheetDirective,\r\n\t\tTimeSheetAloneComponent\r\n\t],\r\n    imports: [\r\n        CommonModule,\r\n        CoreModule,\r\n        MatIconModule,\r\n        MatTabsModule,\r\n        MatButtonModule,\r\n        MatDialogModule,\r\n        ReactiveFormsModule,\r\n        MatProgressSpinnerModule,\r\n        MIcons,\r\n        MLogoLines\r\n    ],\r\n\texports: [\r\n\t\tTimeSheetComponent,\r\n\t\tTimeSheetDialogComponent,\r\n\t\tTimeSheetDirective,\r\n\t\tTimeSheetAloneComponent\r\n\t],\r\n\tentryComponents: [\r\n\t\tTimeSheetComponent,\r\n\t\tTimeSheetDialogComponent,\r\n\t\tTimeSheetAloneComponent\r\n\t]\r\n})\r\nexport class TimeSheetModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.TimeSheetService","i10.TimeSheetComponent","i9.TimeSheetComponent","i1"],"mappings":"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"}