Skip to content

Instantly share code, notes, and snippets.

@edmondop
Created April 24, 2018 14:18
Show Gist options
  • Save edmondop/a2d18c5dd501df98bb0c82b715d57ebd to your computer and use it in GitHub Desktop.
Save edmondop/a2d18c5dd501df98bb0c82b715d57ebd to your computer and use it in GitHub Desktop.
Duplication
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
import {ChartData} from "chart.js";
import {getDateOfISOWeek, getWeekNumber} from "../../../commons/src";
export interface IMonthlyChartData {
// TODO add pagato/non pagato/effettivamente anticipato
Invoicer__c: string;
year: number;
month: number;
total: number;
}
export interface IWeeklyChartData {
// TODO add pagato/non pagato/effettivamente anticipato
Invoicer__c: string;
year: number;
week: number;
total: number;
}
export interface IChartDataResponse {
frequency: "MONTHLY" | "WEEKLY",
period: string,
data: IMonthlyChartData[] | IWeeklyChartData[]
}
interface IParsedData {
labels: string[];
data: number[]
}
const monthsLabels = ["Gen", "Feb", "Mar", "Apr", "Mag", "Giu", "Lug", "Ago", "Set", "Ott", "Nov", "Dic"];
export function parseMonthlyChartData(data: IMonthlyChartData[], period: string): ChartData {
const initialData: IParsedData = {
labels: [],
data: []
};
// TODO add empty columns
const pardedData = data.reduce( (res: IParsedData, curr: IMonthlyChartData) => {
res.labels.push(`${monthsLabels[curr.month - 1]} ${curr.year}`);
res.data.push(curr.total);
return res;
}, initialData);
return {
labels: pardedData.labels,
datasets: [
{
label: 'Amount',
// TODO gestione colore sulla base di pagato/non pagato ecc
backgroundColor: '#006600',
data: pardedData.data
}
]
};
}
export function parseWeeklyChartData(data: IWeeklyChartData[], period: string): ChartData {
const initialData: IParsedData = {
labels: [],
data: []
};
// TODO add empty columns
const pardedData = data.reduce( (res: IParsedData, curr: IWeeklyChartData) => {
res.labels.push(`${getDateOfISOWeek(curr.week, curr.year)}`);
res.data.push(curr.total);
return res;
}, initialData);
return {
labels: pardedData.labels,
datasets: [
{
label: 'Amount',
// TODO gestione colore sulla base di pagato/non pagato ecc
backgroundColor: '#006600',
data: pardedData.data
}
]
};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment