Cleanup, indent.

This commit is contained in:
Alexis Lahouze 2017-07-27 14:08:11 +02:00
parent 003b4de822
commit 6ca4c29e38
1 changed files with 172 additions and 190 deletions

View File

@ -1,30 +1,12 @@
// vim: set tw=80 ts=4 sw=4 sts=4:
/*
This file is part of Accountant.
Accountant is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Accountant is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Accountant. If not, see <http://www.gnu.org/licenses/>.
*/
/* jshint node: true */
'use strict';
// vim: set tw=80 ts=2 sw=2 sts=2:
import * as moment from 'moment';
import * as c3 from 'c3';
import {
Component, ElementRef,
Inject, Input, Output, EventEmitter,
OnInit, OnChanges
Component, ElementRef,
Inject, Input, Output, EventEmitter,
OnInit, OnChanges
} from '@angular/core';
import { Logger } from '@nsalaun/ng-logger';
@ -33,185 +15,185 @@ import { Account } from '../accounts/account';
import { DailyBalanceService } from '../accounts/dailyBalance.service';
class DateRange {
minDate: Date;
maxDate: Date;
minDate: Date;
maxDate: Date;
}
class xAxis {
balances: Date[];
expenses: Date[];
revenues: Date[];
balances: Date[];
expenses: Date[];
revenues: Date[];
}
@Component({
selector: 'balance-chart',
template: '<div></div>'
selector: 'balance-chart',
template: '<div></div>'
})
export class BalanceChartComponent implements OnInit, OnChanges {
@Input() account: Account;
@Output() onUpdate: EventEmitter<DateRange> = new EventEmitter<DateRange>();
@Input() account: Account;
@Output() onUpdate: EventEmitter<DateRange> = new EventEmitter<DateRange>();
private chart: c3.ChartAPI;
private balances: number[];
private chart: c3.ChartAPI;
private balances: number[];
constructor(
private elementRef: ElementRef,
private logger: Logger,
private dailyBalanceService: DailyBalanceService,
@Inject('accountIdService') private accountIdService,
) {
this.logger.log("Constructor BalanceChartComponent")
constructor(
private elementRef: ElementRef,
private logger: Logger,
private dailyBalanceService: DailyBalanceService,
@Inject('accountIdService') private accountIdService,
) {
this.logger.log("Constructor BalanceChartComponent")
}
loadData() {
this.dailyBalanceService.query(
this.accountIdService.get()
).subscribe((results) => {
var headers: any[][] = [['date', 'balances', 'expenses', 'revenues']];
var rows = results.map(function(result) {
return [
result.operation_date,
result.balance,
result.expenses,
result.revenues
];
});
this.chart.unload();
this.chart.load({
rows: headers.concat(rows)
});
var x: any;
x = this.chart.x();
this.logger.log("x", x);
var balances = x.balances;
this.onUpdate.emit({
minDate: balances[0],
maxDate: balances[balances.length - 1]
});
});
};
$onInit() {
this.ngOnInit();
}
ngOnInit() {
var tomorrow = moment().endOf('day').valueOf();
this.chart = c3.generate({
bindto: this.elementRef.nativeElement.children[0],
size: {
height: 450,
},
data: {
x: 'date',
rows: [],
axes: {
expenses: 'y2',
revenues: 'y2'
},
type: 'bar',
types: {
balances: 'area'
},
groups: [
['expenses', 'revenues']
],
// Disable for the moment because there is an issue when
// using subchart line is not refreshed after subset
// selection.
//regions: {
// balances: [{
// start: tomorrow,
// style: 'dashed'
// }]
//}
},
regions: [{
start: tomorrow,
}],
axis: {
x: {
type: 'timeseries',
tick: {
format: '%Y-%m-%d',
rotate: 50,
}
},
y: {
label: {
text: 'Amount',
position: 'outer-middle'
}
},
y2: {
show: true,
label: {
text: 'Amount',
position: 'outer-middle'
}
}
},
grid: {
x: {
show: true,
},
y: {
show: true,
}
},
tooltip: {
format: {
value: function(value, ratio, id, index) {
return value + '€';
}
}
},
subchart: {
show: true,
onbrush: function(domain) {
this.onUpdate.emit({minDate: domain[0], maxDate: domain[1]});
}
}
});
this.loadData();
};
setLines(account: Account) {
if(this.chart) {
this.chart.ygrids([
{ value: 0, axis: 'y2' },
{ value: 0, axis: 'y', class: 'zeroline'},
]);
if(account) {
this.chart.ygrids.add({
value: account.authorized_overdraft,
axis: 'y',
class: 'overdraft'
});
}
}
};
loadData() {
this.dailyBalanceService.query(
this.accountIdService.get()
).subscribe((results) => {
var headers: any[][] = [['date', 'balances', 'expenses', 'revenues']];
$onChanges(changes) {
this.ngOnChanges(changes);
}
var rows = results.map(function(result) {
return [
result.operation_date,
result.balance,
result.expenses,
result.revenues
];
});
this.chart.unload();
this.chart.load({
rows: headers.concat(rows)
});
var x: any;
x = this.chart.x();
this.logger.log("x", x);
var balances = x.balances;
this.onUpdate.emit({
minDate: balances[0],
maxDate: balances[balances.length - 1]
});
});
};
$onInit() {
this.ngOnInit();
}
ngOnInit() {
var tomorrow = moment().endOf('day').valueOf();
this.chart = c3.generate({
bindto: this.elementRef.nativeElement.children[0],
size: {
height: 450,
},
data: {
x: 'date',
rows: [],
axes: {
expenses: 'y2',
revenues: 'y2'
},
type: 'bar',
types: {
balances: 'area'
},
groups: [
['expenses', 'revenues']
],
// Disable for the moment because there is an issue when
// using subchart line is not refreshed after subset
// selection.
//regions: {
// balances: [{
// start: tomorrow,
// style: 'dashed'
// }]
//}
},
regions: [{
start: tomorrow,
}],
axis: {
x: {
type: 'timeseries',
tick: {
format: '%Y-%m-%d',
rotate: 50,
}
},
y: {
label: {
text: 'Amount',
position: 'outer-middle'
}
},
y2: {
show: true,
label: {
text: 'Amount',
position: 'outer-middle'
}
}
},
grid: {
x: {
show: true,
},
y: {
show: true,
}
},
tooltip: {
format: {
value: function(value, ratio, id, index) {
return value + '€';
}
}
},
subchart: {
show: true,
onbrush: function(domain) {
this.onUpdate.emit({minDate: domain[0], maxDate: domain[1]});
}
}
});
this.loadData();
};
setLines(account: Account) {
if(this.chart) {
this.chart.ygrids([
{ value: 0, axis: 'y2' },
{ value: 0, axis: 'y', class: 'zeroline'},
]);
if(account) {
this.chart.ygrids.add({
value: account.authorized_overdraft,
axis: 'y',
class: 'overdraft'
});
}
}
};
$onChanges(changes) {
this.ngOnChanges(changes);
}
ngOnChanges(changes) {
if('account' in changes) {
this.setLines(changes.account.currentValue);
} else {
this.setLines(this.account);
}
};
ngOnChanges(changes) {
if('account' in changes) {
this.setLines(changes.account.currentValue);
} else {
this.setLines(this.account);
}
};
}