group date and slices in display of poll

This commit is contained in:
Tykayn 2021-04-30 15:34:04 +02:00 committed by tykayn
parent 723c774d51
commit c0791d52ac
2 changed files with 655 additions and 605 deletions

View File

@ -61,12 +61,23 @@ class Choice {
}
public function display( $kind = 'text' ): array {
if($kind == 'text'){
$fields = [
'id' => $this->getId(),
'created_at' => $this->getCreatedAtAsString(),
'name' => $this->getName(),
'url' => $this->getUrl(),
];
}
elseif($kind=='date'){
$fields = [
'id' => $this->getId(),
'created_at' => $this->getCreatedAtAsString(),
'name' => $this->getName(),
// 'url' => $this->getUrl(),
];
}
return $fields;
}

View File

@ -277,14 +277,38 @@
'comments' => $displayedComments,
];
if ( $this->getKind() == 'text' ) {
$resp[ 'choices' ] = $computedAnswers[ 'answers' ];
} elseif ( $this->getKind() == 'date' ) {
$resp[ 'choices_grouped' ] = $computedAnswers[ 'grouped_dates' ];
}
return $resp;
}
public function computeAnswers() {
$computedArray = [];
$grouped_dates = [];
$maxScore = 0;
if ( $this->getKind() == 'date' ) {
foreach ( $this->getChoices() as $choice ) {
$boom = explode( ' >>> ', $choice->getName() );
if ( ! isset( $grouped_dates[ $boom[ 0 ] ] ) ) {
$grouped_dates[ $boom[ 0 ] ] = [
"date_string" => $boom[ 0 ],
"time_slices" => [],
];
}
$grouped_dates[ $boom[ 0 ] ][ "time_slices" ][] = [
"choice_id" => $choice->getId(),
"name" => $boom[ 1 ] ];
}
}
$scoreInfos = [
'score' => 0,
'yes' => [
@ -351,9 +375,24 @@
foreach ( $computedArray as $choice_stat ) {
$answersWithStats[] = $choice_stat;
}
$groupsOfDates = [];
foreach ( $grouped_dates as $group ) {
$ii =0;
foreach ( $group["time_slices"] as $slice ) {
$slice['score'] = $computedArray[ $slice['choice_id'] ]['score'];
$slice['yes'] = $computedArray[ $slice['choice_id'] ]['yes'];
$slice['maybe'] = $computedArray[ $slice['choice_id'] ]['maybe'];
$slice['no'] = $computedArray[ $slice['choice_id'] ]['no'];
$group["time_slices"][$ii] = $slice;
$ii++;
}
$groupsOfDates[] = $group ;
}
return [
'answers' => $answersWithStats,
'grouped_dates' => $groupsOfDates,
'max_score' => $maxScore,
];
}