@credithub/harlan-components 1.83.8 → 1.84.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  import 'chartjs-adapter-date-fns';
2
2
  import { useMemo } from 'react';
3
3
  import { createDatasets, getChartOptions } from '../utils/chartCustomization';
4
- import { addMissingDateEntries, getEarliestDate, getEndDate, getFilteredStartDate, getUniqueDates } from '../utils/dataManipulation';
4
+ import { addMissingDateEntries, fillMonthlyGaps, getEarliestDate, getEndDate, getFilteredStartDate, getUniqueDates } from '../utils/dataManipulation';
5
5
  export var useMixedChartData = function (dataInput, timeFilter) {
6
6
  if (timeFilter === void 0) { timeFilter = '1m'; }
7
7
  return useMemo(function () {
@@ -13,6 +13,7 @@ export var useMixedChartData = function (dataInput, timeFilter) {
13
13
  ccfs: addMissingDateEntries(dataInput.ccfs, fullDataStartDate, endDate),
14
14
  serasa: dataInput.serasa,
15
15
  boaVista: dataInput.boaVista,
16
+ processosJuridicos: fillMonthlyGaps(dataInput.processosJuridicos),
16
17
  dividasPublicasGrafico: addMissingDateEntries(dataInput.dividasPublicasGrafico, fullDataStartDate, endDate)
17
18
  };
18
19
  var processedData = {
@@ -20,6 +21,7 @@ export var useMixedChartData = function (dataInput, timeFilter) {
20
21
  ccfs: fullProcessedData.ccfs.filter(function (d) { return new Date(d.data) >= filteredStartDate; }),
21
22
  serasa: fullProcessedData.serasa.filter(function (d) { return new Date(d.data) >= filteredStartDate; }),
22
23
  boaVista: fullProcessedData.boaVista.filter(function (d) { return new Date(d.data) >= filteredStartDate; }),
24
+ processosJuridicos: fullProcessedData.processosJuridicos.filter(function (d) { return new Date(d.data) >= filteredStartDate; }),
23
25
  dividasPublicasGrafico: fullProcessedData.dividasPublicasGrafico.filter(function (d) { return new Date(d.data) >= filteredStartDate; })
24
26
  };
25
27
  var uniqueDates = getUniqueDates(processedData);
@@ -12,6 +12,7 @@ export interface DataInput {
12
12
  protestos: Consulta[];
13
13
  serasa: Consulta[];
14
14
  boaVista: Consulta[];
15
+ processosJuridicos: Consulta[];
15
16
  dividasPublicasGrafico: Consulta[];
16
17
  pieChartTotalConfig?: {
17
18
  protestos?: {
@@ -43,7 +43,8 @@ export function createDatasets(data, uniqueDates, timeFilter) {
43
43
  createDataSet(data.boaVista, 'Boa Vista - Quantidade', defaultChartColors.pefinBoaVista, 'line', 'quantidade', 'y'),
44
44
  createDataSet(data.boaVista, 'Boa Vista - Valor Total', defaultChartColors.pefinBoaVista, 'bar', 'valorTotal', 'y2'),
45
45
  createDataSet(data.dividasPublicasGrafico, 'Dívidas Públicas - Quantidade', defaultChartColors.dividasPublicas, 'line', 'quantidade', 'y'),
46
- createDataSet(data.dividasPublicasGrafico, 'Dívidas Públicas - Valor Total', defaultChartColors.dividasPublicas, 'bar', 'valorTotal', 'y2')
46
+ createDataSet(data.dividasPublicasGrafico, 'Dívidas Públicas - Valor Total', defaultChartColors.dividasPublicas, 'bar', 'valorTotal', 'y2'),
47
+ createDataSet(data.processosJuridicos, 'Processos Jurídicos', defaultChartColors.processosJuridicos, 'line', 'quantidade', 'y'),
47
48
  ];
48
49
  }
49
50
  export function getChartOptions(timeFilter) {
@@ -8,3 +8,4 @@ export declare const getBarSettings: (timeFilter: TimeFilter) => {
8
8
  categoryPercentage: number;
9
9
  barPercentage: number;
10
10
  };
11
+ export declare function fillMonthlyGaps(records: Consulta[]): Consulta[];
@@ -70,7 +70,7 @@ export var getEndDate = function () {
70
70
  return new Date();
71
71
  };
72
72
  export function getUniqueDates(data) {
73
- var allEntries = union(data.protestos, data.ccfs, data.serasa, data.boaVista, data.dividasPublicasGrafico);
73
+ var allEntries = union(data.protestos, data.ccfs, data.serasa, data.boaVista, data.dividasPublicasGrafico, data.processosJuridicos);
74
74
  var allDates = allEntries
75
75
  .map(function (entry) {
76
76
  var dateString = typeof entry.data === 'string' ? entry.data : '';
@@ -95,3 +95,53 @@ export var getBarSettings = function (timeFilter) {
95
95
  return { categoryPercentage: 1.5, barPercentage: 1.5 };
96
96
  }
97
97
  };
98
+ export function fillMonthlyGaps(records) {
99
+ if (records.length === 0)
100
+ return [];
101
+ var sortedRecords = sortByDate(records);
102
+ var result = [];
103
+ for (var i = 0; i < sortedRecords.length - 1; i++) {
104
+ var current = sortedRecords[i];
105
+ var next = sortedRecords[i + 1];
106
+ result.push(normalizeDateField(current));
107
+ var filled = generateMonthlyCopies(current, next);
108
+ result.push.apply(result, filled);
109
+ }
110
+ result.push(normalizeDateField(sortedRecords.at(-1)));
111
+ return result;
112
+ }
113
+ function sortByDate(records) {
114
+ return __spreadArray([], records, true).sort(function (a, b) {
115
+ var dateA = new Date(a.data).getTime();
116
+ var dateB = new Date(b.data).getTime();
117
+ return dateA - dateB;
118
+ });
119
+ }
120
+ function generateMonthlyCopies(start, end) {
121
+ var filledRecords = [];
122
+ var currentDate = new Date(start.data);
123
+ var endDate = new Date(end.data);
124
+ while (true) {
125
+ var nextDate = addOneMonth(currentDate);
126
+ if (nextDate >= endDate)
127
+ break;
128
+ filledRecords.push(__assign(__assign({}, start), { data: formatDateToISO(nextDate) }));
129
+ currentDate = nextDate;
130
+ }
131
+ return filledRecords;
132
+ }
133
+ function addOneMonth(date) {
134
+ var day = date.getDate();
135
+ var next = new Date(date);
136
+ next.setDate(1);
137
+ next.setMonth(next.getMonth() + 1);
138
+ var lastDayOfMonth = new Date(next.getFullYear(), next.getMonth() + 1, 0).getDate();
139
+ next.setDate(Math.min(day, lastDayOfMonth));
140
+ return next;
141
+ }
142
+ function formatDateToISO(date) {
143
+ return date.toISOString().slice(0, 10);
144
+ }
145
+ function normalizeDateField(record) {
146
+ return __assign(__assign({}, record), { data: formatDateToISO(new Date(record.data)) });
147
+ }
@@ -91,6 +91,15 @@ export var processData = function (data, quantidadeProcessosJuridicos) {
91
91
  .map(function (info) { return (__assign(__assign({}, info), { data: formatDatePtBrToDate(info.data), valorTotal: info.total, total: undefined })); })
92
92
  .filter(function (info) { return info.data; });
93
93
  // ------------------------------------------------------------------
94
+ // PROCESSOS JURIDICOS
95
+ // ------------------------------------------------------------------
96
+ data.processosJuridicos = data.processosJuridicos
97
+ .map(function (entry) {
98
+ var formattedDate = formatDatePtBrToDate(entry.creation);
99
+ return __assign(__assign({}, entry), { data: formattedDate, creation: undefined });
100
+ })
101
+ .filter(function (entry) { return entry.data; });
102
+ // ------------------------------------------------------------------
94
103
  // PIE-CHART EXTRA
95
104
  // ------------------------------------------------------------------
96
105
  data.pieChartTotalConfig = {