import { Component, Inject, OnInit } from '@angular/core';
import { Observable } from 'rxjs/Rx';
import { Logger } from '@nsalaun/ng-logger';
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
import { ToastrService } from 'ngx-toastr';
import { ScheduleService } from './schedule.service';
import { Schedule } from './schedule';
var scheduleFormTmpl = require('./schedule.form.tmpl.html');
@Component({
selector: 'schedule-list',
template: `
Date de début |
Date de fin |
Jour |
Fréq. |
Libellé de l'opération |
Montant |
Catégorie |
Actions |
|
`
})
export class ScheduleListComponent implements OnInit {
accountId: number;
schedules = [];
constructor(
private toastrService: ToastrService,
private scheduleService: ScheduleService,
private logger: Logger,
@Inject('$modal') private $modal,
@Inject('accountIdService') private accountIdService
) {}
$onInit() {
this.ngOnInit();
}
ngOnInit() {
this.logger.log("ngOnInit");
this.accountId = this.accountIdService.get();
// Load operations on controller initialization.
this.load();
}
/*
* Add a new operation at the beginning of th array.
*/
add() {
var schedule = new Schedule();
schedule.account_id = this.accountId;
var title = "New schedule";
this.$modal({
templateUrl: scheduleFormTmpl,
controller: function($scope, title, schedule, $save) {
$scope.title = title;
$scope.operation = schedule;
$scope.$save = () => {
$scope.$hide();
$save($scope.operation);
};
},
locals: {
title: title,
schedule: schedule,
$save: (schedule) => {
this.save(schedule);
}
}
});
};
load() {
this.logger.log("Loading schedules for accountId", this.accountId);
if(!this.accountId) {
return;
}
this.scheduleService.query(this.accountId)
.subscribe((schedules: Schedule[]) => {
this.logger.log("Schedules loaded.", schedules);
this.schedules = schedules;
}, (reason) => {
this.logger.log("Got error", reason);
}
);
};
save(schedule: Schedule) {
return this.scheduleService.update(schedule).subscribe((schedule: Schedule) => {
this.toastrService.success('Schedule #' + schedule.id + ' saved.');
this.load();
}, (result) => {
this.toastrService.error(
'Error while saving schedule: ' + result.message
);
});
};
};