// vim: set tw=80 ts=2 sw=2 sts=2 : import { Component, OnInit } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; import { Observable } from 'rxjs/Rx'; import { Logger } from '@nsalaun/ng-logger'; import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; import { ToastrService } from 'ngx-toastr'; import { Account } from '../accounts/account'; import { AccountService } from '../accounts/account.service'; import { Operation } from './operation'; import { OperationService } from './operation.service'; import { OperationEditModalComponent } from './operationEditModal.component'; @Component({ selector: 'operation-list', template: `
# Date d'op. Libellé de l'opération Montant Solde Catégorie Actions
` }) export class OperationListComponent implements OnInit { private account: Account; public operations: Operation[]; constructor( private toastrService: ToastrService, private operationService: OperationService, private accountService: AccountService, private logger: Logger, private ngbModal: NgbModal, private route: ActivatedRoute ) {} ngOnInit() { this.accountService.get( +this.route.snapshot.paramMap.get('accountId') ).subscribe(account => { this.account = account; }); this.route.queryParamMap.subscribe(() => { this.loadData(); }); this.loadData(); } /* * Add an empty operation. */ add() { var operation = new Operation(); let accountId = this.route.snapshot.paramMap.get('accountId'); operation.account_id = +accountId; // FIXME Alexis Lahouze 2017-06-15 i18n const modal = this.ngbModal.open(OperationEditModalComponent, { size: 'lg' }); modal.componentInstance.operation = operation; modal.result.then((operation: Operation) => { this.save(operation); }, (reason) => { }); } /* * Load operations. */ loadData() { let accountId = this.route.snapshot.paramMap.get('accountId'); let fromDay = this.route.snapshot.queryParamMap.get('from'); let toDay = this.route.snapshot.queryParamMap.get('to'); return this.operationService.query( +accountId, fromDay, toDay ).subscribe((operations: Operation[]) => { this.operations = operations.reverse(); }); } /* * Save an operation and return a promise. */ save(operation) { operation.confirmed = true; return this.operationService.create(operation).subscribe( (operation) => { this.toastrService.success('Operation #' + operation.id + ' saved.'); this.loadData(); }, (result) => { this.toastrService.error( 'Error while saving operation: ' + result.message ); } ); } }