// vim: set tw=80 ts=2 sw=2 sts=2 : import { CurrencyPipe } from '@angular/common'; import { Component, Inject, Input, Output, EventEmitter } from '@angular/core'; import { Logger } from '@nsalaun/ng-logger'; import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; import { ToastrService } from 'ngx-toastr'; import { ScheduleDeleteModalComponent } from './scheduleDeleteModal.component'; import { ScheduleEditModalComponent } from './scheduleEditModal.component'; import { ScheduleService } from './schedule.service'; import { Schedule } from './schedule'; @Component({ selector: 'tr[schedule-row]', host: { "[id]": "schedule.id", }, template: ` {{ schedule.start_date | date: "yyyy-MM-dd" }} {{ schedule.stop_date | date: "yyyy-MM-dd" }} {{ schedule.day }} {{ schedule.frequency }} {{ schedule.label }} {{ schedule.value | currency:"EUR":true }} {{ schedule.category }}
` }) export class ScheduleRowComponent { @Input('schedule-row') schedule: Schedule; @Output() needsReload: EventEmitter = new EventEmitter(); constructor( private scheduleService: ScheduleService, private logger: Logger, private toastrService: ToastrService, private ngbModal: NgbModal ) {} save(schedule: Schedule) { return this.scheduleService.update(schedule).subscribe((schedule: Schedule) => { this.toastrService.success('Schedule #' + schedule.id + ' saved.'); this.needsReload.emit(); }, result => { this.toastrService.error( 'Error while saving schedule: ' + result.message ); }); } confirmDelete() { const modal = this.ngbModal.open(ScheduleDeleteModalComponent, { windowClass: 'in' }); modal.componentInstance.schedule = this.schedule; modal.result.then((schedule: Schedule) => { this.delete(schedule); }, (reason) => function(reason) { }); } delete(schedule: Schedule) { var id = schedule.id; return this.scheduleService.delete(schedule).subscribe(() => { this.toastrService.success('Schedule #' + id + ' deleted.'); this.needsReload.emit(); }, result => { this.toastrService.error( 'An error occurred while trying to delete schedule #' + id + ':
' + result.message ); }); } modify() { const modal = this.ngbModal.open(ScheduleEditModalComponent, { windowClass: 'in' }); modal.componentInstance.schedule = this.schedule; modal.result.then((schedule: Schedule) => { this.save(schedule); }, (reason) => function(reason) { }); } }