graph détaillé, listing clés courantes
This commit is contained in:
parent
b771aea541
commit
9eb08073d0
7 changed files with 213 additions and 48 deletions
|
@ -114,36 +114,61 @@ class FollowUpController extends AbstractController
|
|||
$themes = \App\Service\FollowUpService::getFollowUpThemes();
|
||||
$all_completion_data = [];
|
||||
$latest_diffs = [];
|
||||
// Définir les bornes de période
|
||||
$now = new \DateTime();
|
||||
$periods = [
|
||||
'7j' => (clone $now)->modify('-7 days'),
|
||||
'30j' => (clone $now)->modify('-30 days'),
|
||||
'6mois' => (clone $now)->modify('-6 months'),
|
||||
];
|
||||
foreach ($themes as $type => $label) {
|
||||
$all_completion_data[$type] = $series[$type . '_completion'] ?? [];
|
||||
// Calcul du diff sur 7 jours pour le nombre et la complétion
|
||||
$count_series = $series[$type . '_count'] ?? [];
|
||||
$completion_series = $series[$type . '_completion'] ?? [];
|
||||
$count_now = count($count_series) ? $count_series[count($count_series)-1]['value'] : null;
|
||||
$count_7d = null;
|
||||
foreach (array_reverse($count_series) as $point) {
|
||||
$date = \DateTime::createFromFormat('Y-m-d', $point['date']);
|
||||
if ($date && $date <= (new \DateTime('-7 days'))) {
|
||||
$count_7d = $point['value'];
|
||||
break;
|
||||
// Fonction utilitaire pour trouver la valeur la plus proche avant ou égale à une date
|
||||
$findValueAtOrBefore = function($series, \DateTime $date) {
|
||||
$val = null;
|
||||
foreach (array_reverse($series) as $point) {
|
||||
$ptDate = \DateTime::createFromFormat('Y-m-d', $point['date']);
|
||||
if ($ptDate && $ptDate <= $date) {
|
||||
$val = $point['value'];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
$completion_now = count($completion_series) ? $completion_series[count($completion_series)-1]['value'] : null;
|
||||
$completion_7d = null;
|
||||
foreach (array_reverse($completion_series) as $point) {
|
||||
$date = \DateTime::createFromFormat('Y-m-d', $point['date']);
|
||||
if ($date && $date <= (new \DateTime('-7 days'))) {
|
||||
$completion_7d = $point['value'];
|
||||
break;
|
||||
}
|
||||
}
|
||||
return $val;
|
||||
};
|
||||
// Valeurs aux bornes
|
||||
$val_now = count($count_series) ? $count_series[count($count_series)-1]['value'] : null;
|
||||
$val_7j = $findValueAtOrBefore($count_series, $periods['7j']);
|
||||
$val_30j = $findValueAtOrBefore($count_series, $periods['30j']);
|
||||
$val_6mois = $findValueAtOrBefore($count_series, $periods['6mois']);
|
||||
// Différences exclusives
|
||||
$diff_7j = ($val_now !== null && $val_7j !== null) ? $val_now - $val_7j : null;
|
||||
$diff_30j = ($val_7j !== null && $val_30j !== null) ? $val_7j - $val_30j : null;
|
||||
$diff_6mois = ($val_30j !== null && $val_6mois !== null) ? $val_30j - $val_6mois : null;
|
||||
// Idem pour la complétion
|
||||
$comp_now = count($completion_series) ? $completion_series[count($completion_series)-1]['value'] : null;
|
||||
$comp_7j = $findValueAtOrBefore($completion_series, $periods['7j']);
|
||||
$comp_30j = $findValueAtOrBefore($completion_series, $periods['30j']);
|
||||
$comp_6mois = $findValueAtOrBefore($completion_series, $periods['6mois']);
|
||||
$comp_diff_7j = ($comp_now !== null && $comp_7j !== null) ? $comp_now - $comp_7j : null;
|
||||
$comp_diff_30j = ($comp_7j !== null && $comp_30j !== null) ? $comp_7j - $comp_30j : null;
|
||||
$comp_diff_6mois = ($comp_30j !== null && $comp_6mois !== null) ? $comp_30j - $comp_6mois : null;
|
||||
$latest_diffs[$type] = [
|
||||
'count_now' => $count_now,
|
||||
'count_7d' => $count_7d,
|
||||
'count_diff' => ($count_now !== null && $count_7d !== null) ? $count_now - $count_7d : null,
|
||||
'completion_now' => $completion_now,
|
||||
'completion_7d' => $completion_7d,
|
||||
'completion_diff' => ($completion_now !== null && $completion_7d !== null) ? $completion_now - $completion_7d : null,
|
||||
'count_now' => $val_now,
|
||||
'count_7j' => $val_7j,
|
||||
'count_30j' => $val_30j,
|
||||
'count_6mois' => $val_6mois,
|
||||
'count_diff_7j' => $diff_7j,
|
||||
'count_diff_30j' => $diff_30j,
|
||||
'count_diff_6mois' => $diff_6mois,
|
||||
'completion_now' => $comp_now,
|
||||
'completion_7j' => $comp_7j,
|
||||
'completion_30j' => $comp_30j,
|
||||
'completion_6mois' => $comp_6mois,
|
||||
'completion_diff_7j' => $comp_diff_7j,
|
||||
'completion_diff_30j' => $comp_diff_30j,
|
||||
'completion_diff_6mois' => $comp_diff_6mois,
|
||||
'label' => $label,
|
||||
];
|
||||
}
|
||||
|
|
|
@ -31,7 +31,7 @@ class Place
|
|||
#[ORM\Column]
|
||||
private ?bool $dead = null;
|
||||
|
||||
#[ORM\Column(length: 255, nullable: true, options: ['charset' => 'utf8mb4'])]
|
||||
#[ORM\Column(type: Types::TEXT, nullable: true, options: ['charset' => 'utf8mb4'])]
|
||||
private ?string $note = null;
|
||||
|
||||
#[ORM\Column(nullable: true)]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue