-
Notifications
You must be signed in to change notification settings - Fork 1
/
piechart.js
105 lines (105 loc) · 3.38 KB
/
piechart.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
export default function(withCategory) {
Highcharts.chart('chart', {
chart: {
plotBackgroundColor: null,
plotBorderWidth: null,
plotShadow: false,
type: 'pie',
},
title: {
text: 'All',
},
tooltip: {
pointFormat: '{series.name}: <b>{point.y:.0f}</b> ({point.percentage:.1f}%)',
},
plotOptions: {
pie: {
allowPointSelect: true,
cursor: 'pointer',
dataLabels: {
enabled: true,
format: '<b>{point.name}</b>',
style: {
color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black',
},
},
},
},
series: [
{
name: 'Expenses',
colorByPoint: true,
data: [
{
name: 'Groceries',
y: -1 * withCategory.filter(x => x.category === 'Groceries').reduce((prev, curr) => prev + curr.amount, 0),
},
{
name: 'Healthcare',
y: -1 * withCategory.filter(x => x.category === 'Healthcare').reduce((prev, curr) => prev + curr.amount, 0),
},
{
name: 'Cash',
y: -1 * withCategory.filter(x => x.category === 'Cash').reduce((prev, curr) => prev + curr.amount, 0),
},
{
name: 'Entertainment',
y:
-1 *
withCategory.filter(x => x.category === 'Entertainment').reduce((prev, curr) => prev + curr.amount, 0),
},
{
name: 'Utilities',
y: -1 * withCategory.filter(x => x.category === 'Utilities').reduce((prev, curr) => prev + curr.amount, 0),
},
{
name: 'Travel',
y: -1 * withCategory.filter(x => x.category === 'Travel').reduce((prev, curr) => prev + curr.amount, 0),
},
{
name: 'Shopping',
y: -1 * withCategory.filter(x => x.category === 'Shopping').reduce((prev, curr) => prev + curr.amount, 0),
},
{
name: 'Travel savings',
y:
-1 *
withCategory.filter(x => x.category === 'Travel savings').reduce((prev, curr) => prev + curr.amount, 0),
},
{
name: 'Safety savings',
y:
-1 *
withCategory.filter(x => x.category === 'Safety savings').reduce((prev, curr) => prev + curr.amount, 0),
},
{
name: 'Personal care',
y:
-1 *
withCategory.filter(x => x.category === 'Safety savings').reduce((prev, curr) => prev + curr.amount, 0),
},
{
name: 'Restaurant',
y: -1 * withCategory.filter(x => x.category === 'Restaurant').reduce((prev, curr) => prev + curr.amount, 0),
},
{
name: 'Clothing',
y: -1 * withCategory.filter(x => x.category === 'Clothing').reduce((prev, curr) => prev + curr.amount, 0),
},
{
name: 'Sports',
y: -1 * withCategory.filter(x => x.category === 'Sports').reduce((prev, curr) => prev + curr.amount, 0),
},
{
name: 'Other',
y:
-1 *
withCategory
.filter(x => x.category === undefined && x.amount < 0)
.reduce((prev, curr) => prev + curr.amount, 0),
},
],
},
],
});
}