2017-07-25 12:03:42 +02:00
|
|
|
import { Component, Inject, OnInit } from '@angular/core';
|
2017-07-22 11:16:04 +02:00
|
|
|
import { Observable } from 'rxjs/Rx';
|
|
|
|
|
2017-07-22 09:17:50 +02:00
|
|
|
import { Logger } from '@nsalaun/ng-logger';
|
|
|
|
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
|
|
|
|
import { ToastrService } from 'ngx-toastr';
|
|
|
|
|
2017-07-25 17:25:50 +02:00
|
|
|
import { ScheduleEditModalComponent } from './scheduleEditModal.component';
|
2017-07-22 11:16:04 +02:00
|
|
|
import { ScheduleService } from './schedule.service';
|
|
|
|
import { Schedule } from './schedule';
|
|
|
|
|
2017-07-25 12:03:42 +02:00
|
|
|
var scheduleFormTmpl = require('./schedule.form.tmpl.html');
|
|
|
|
|
|
|
|
@Component({
|
|
|
|
selector: 'schedule-list',
|
|
|
|
template: `
|
|
|
|
<div class="row">
|
2017-07-25 22:11:16 +02:00
|
|
|
<table class="table table-sm table-striped table-condensed table-hover">
|
2017-07-25 12:03:42 +02:00
|
|
|
<thead>
|
|
|
|
<tr>
|
2017-07-25 22:11:16 +02:00
|
|
|
<th>Date de début</th>
|
|
|
|
<th>Date de fin</th>
|
|
|
|
<th>Jour</th>
|
|
|
|
<th>Fréq.</th>
|
2017-07-25 12:03:42 +02:00
|
|
|
<th>Libellé de l'opération</th>
|
2017-07-25 22:11:16 +02:00
|
|
|
<th>Montant</th>
|
|
|
|
<th>Catégorie</th>
|
|
|
|
<th>Actions</th>
|
2017-07-25 12:03:42 +02:00
|
|
|
</tr>
|
|
|
|
</thead>
|
|
|
|
|
|
|
|
<tbody>
|
|
|
|
<tr>
|
|
|
|
<td colspan="8">
|
|
|
|
<button class="btn btn-success" (click)="add()">
|
|
|
|
Ajouter
|
|
|
|
</button>
|
|
|
|
</td>
|
|
|
|
</tr>
|
|
|
|
|
|
|
|
<tr *ngFor="let schedule of schedules"
|
|
|
|
[schedule-row]="schedule" (needsReload)="load()">
|
|
|
|
</tr>
|
|
|
|
</tbody>
|
|
|
|
</table>
|
|
|
|
</div>
|
|
|
|
`
|
|
|
|
})
|
2017-07-25 16:56:57 +02:00
|
|
|
export class ScheduleListComponent implements OnInit {
|
2017-07-23 00:12:44 +02:00
|
|
|
accountId: number;
|
2017-07-25 12:03:42 +02:00
|
|
|
schedules = [];
|
2017-07-21 23:06:59 +02:00
|
|
|
|
|
|
|
constructor(
|
2017-07-22 09:17:50 +02:00
|
|
|
private toastrService: ToastrService,
|
2017-07-22 11:16:04 +02:00
|
|
|
private scheduleService: ScheduleService,
|
2017-07-22 14:29:29 +02:00
|
|
|
private logger: Logger,
|
2017-07-25 17:25:50 +02:00
|
|
|
private ngbModal: NgbModal,
|
2017-07-25 12:03:42 +02:00
|
|
|
@Inject('accountIdService') private accountIdService
|
2017-07-23 00:12:44 +02:00
|
|
|
) {}
|
|
|
|
|
2017-07-23 07:53:26 +02:00
|
|
|
$onInit() {
|
2017-07-25 12:03:42 +02:00
|
|
|
this.ngOnInit();
|
|
|
|
}
|
|
|
|
|
|
|
|
ngOnInit() {
|
|
|
|
this.logger.log("ngOnInit");
|
2017-07-25 10:06:41 +02:00
|
|
|
this.accountId = this.accountIdService.get();
|
2017-07-21 23:06:59 +02:00
|
|
|
// Load operations on controller initialization.
|
2017-07-22 11:16:04 +02:00
|
|
|
this.load();
|
2017-07-21 23:06:59 +02:00
|
|
|
}
|
2017-07-08 12:20:17 +02:00
|
|
|
|
|
|
|
/*
|
|
|
|
* Add a new operation at the beginning of th array.
|
|
|
|
*/
|
2017-07-23 07:53:26 +02:00
|
|
|
add() {
|
2017-07-22 11:16:04 +02:00
|
|
|
var schedule = new Schedule();
|
2017-07-23 00:12:44 +02:00
|
|
|
schedule.account_id = this.accountId;
|
2017-07-08 12:20:17 +02:00
|
|
|
|
2017-07-25 17:25:50 +02:00
|
|
|
const modal = this.ngbModal.open(ScheduleEditModalComponent, {
|
|
|
|
windowClass: 'in'
|
|
|
|
});
|
|
|
|
|
|
|
|
modal.componentInstance.schedule = schedule;
|
|
|
|
|
|
|
|
modal.result.then((schedule: Schedule) => {
|
|
|
|
this.save(schedule);
|
|
|
|
}, (reason) => function(reason) {
|
2017-07-25 12:03:42 +02:00
|
|
|
});
|
2017-07-08 12:20:17 +02:00
|
|
|
};
|
|
|
|
|
2017-07-23 07:53:26 +02:00
|
|
|
load() {
|
2017-07-25 12:03:42 +02:00
|
|
|
this.logger.log("Loading schedules for accountId", this.accountId);
|
|
|
|
if(!this.accountId) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
this.scheduleService.query(this.accountId)
|
2017-07-22 11:16:04 +02:00
|
|
|
.subscribe((schedules: Schedule[]) => {
|
2017-07-25 12:03:42 +02:00
|
|
|
this.logger.log("Schedules loaded.", schedules);
|
|
|
|
this.schedules = schedules;
|
2017-07-23 00:12:44 +02:00
|
|
|
}, (reason) => {
|
|
|
|
this.logger.log("Got error", reason);
|
2017-07-22 11:16:04 +02:00
|
|
|
}
|
|
|
|
);
|
2017-07-08 12:20:17 +02:00
|
|
|
};
|
|
|
|
|
2017-07-25 12:03:42 +02:00
|
|
|
save(schedule: Schedule) {
|
2017-07-25 17:26:09 +02:00
|
|
|
return this.scheduleService.create(schedule).subscribe((schedule: Schedule) => {
|
2017-07-25 12:03:42 +02:00
|
|
|
this.toastrService.success('Schedule #' + schedule.id + ' saved.');
|
2017-07-08 12:20:17 +02:00
|
|
|
|
2017-07-22 11:16:04 +02:00
|
|
|
this.load();
|
2017-07-22 09:17:50 +02:00
|
|
|
}, (result) => {
|
|
|
|
this.toastrService.error(
|
2017-07-25 12:03:42 +02:00
|
|
|
'Error while saving schedule: ' + result.message
|
2017-07-08 12:20:17 +02:00
|
|
|
);
|
|
|
|
});
|
|
|
|
};
|
|
|
|
};
|