summaryrefslogtreecommitdiff
path: root/resources/views/statistics/families
diff options
context:
space:
mode:
Diffstat (limited to 'resources/views/statistics/families')
-rw-r--r--resources/views/statistics/families/age-difference.phtml55
-rw-r--r--resources/views/statistics/families/birth-age.phtml61
-rw-r--r--resources/views/statistics/families/children.phtml59
-rw-r--r--resources/views/statistics/families/marriage-age.phtml71
-rw-r--r--resources/views/statistics/families/marriage-length.phtml37
-rw-r--r--resources/views/statistics/families/top10-list-age.phtml28
-rw-r--r--resources/views/statistics/families/top10-list-grand.phtml21
-rw-r--r--resources/views/statistics/families/top10-list-spouses.phtml18
-rw-r--r--resources/views/statistics/families/top10-list.phtml21
-rw-r--r--resources/views/statistics/families/top10-nolist-age.phtml24
-rw-r--r--resources/views/statistics/families/top10-nolist-grand.phtml15
-rw-r--r--resources/views/statistics/families/top10-nolist-spouses.phtml13
-rw-r--r--resources/views/statistics/families/top10-nolist.phtml15
-rw-r--r--resources/views/statistics/families/total-records.phtml112
14 files changed, 550 insertions, 0 deletions
diff --git a/resources/views/statistics/families/age-difference.phtml b/resources/views/statistics/families/age-difference.phtml
new file mode 100644
index 0000000000..246770cb3e
--- /dev/null
+++ b/resources/views/statistics/families/age-difference.phtml
@@ -0,0 +1,55 @@
+<?php
+declare(strict_types=1);
+
+use Fisharebest\Webtrees\I18N;
+
+/** @var \Fisharebest\Webtrees\Stats $stats */
+?>
+
+<h4 class="border-bottom p-2 mb-4">
+ <?= I18N::translate('Age difference') ?>
+</h4>
+
+<div class="mb-3">
+ <div class="card-deck">
+ <div class="col-12 col-md-6 mb-3">
+ <div class="card m-0">
+ <h5 class="card-header">
+ <?= I18N::translate('Age between siblings') ?>
+ </h5>
+ <?= $stats->topAgeBetweenSiblingsList() ?>
+ </div>
+ </div>
+
+ <div class="col-12 col-md-6 mb-3">
+ <div class="card m-0">
+ <h5 class="card-header">
+ <?= I18N::translate('Greatest age between siblings') ?>
+ </h5>
+ <div class="card-body">
+ <?= $stats->topAgeBetweenSiblingsFullName() ?>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div class="card-deck">
+ <div class="col-12 col-md-6 mb-3">
+ <div class="card m-0">
+ <h5 class="card-header">
+ <?= I18N::translate('Age between husband and wife') ?>
+ </h5>
+ <?= $stats->ageBetweenSpousesMFList() ?>
+ </div>
+ </div>
+
+ <div class="col-12 col-md-6 mb-3">
+ <div class="card m-0">
+ <h5 class="card-header">
+ <?= I18N::translate('Age between wife and husband') ?>
+ </h5>
+ <?= $stats->ageBetweenSpousesFMList() ?>
+ </div>
+ </div>
+ </div>
+</div>
diff --git a/resources/views/statistics/families/birth-age.phtml b/resources/views/statistics/families/birth-age.phtml
new file mode 100644
index 0000000000..4635120b3f
--- /dev/null
+++ b/resources/views/statistics/families/birth-age.phtml
@@ -0,0 +1,61 @@
+<?php
+declare(strict_types=1);
+
+use Fisharebest\Webtrees\I18N;
+
+/** @var \Fisharebest\Webtrees\Stats $stats */
+?>
+
+<h4 class="border-bottom p-2 mb-4">
+ <?= I18N::translate('Age at birth of child') ?>
+</h4>
+
+<div class="mb-3">
+ <div class="card-deck">
+ <div class="col-12 col-md-6 mb-3">
+ <div class="card m-0">
+ <h5 class="card-header">
+ <?= I18N::translate('Youngest father'), ' - ', $stats->youngestFatherAge('1') ?>
+ </h5>
+ <div class="card-body">
+ <?= $stats->youngestFather() ?>
+ </div>
+ </div>
+ </div>
+
+ <div class="col-12 col-md-6 mb-3">
+ <div class="card m-0">
+ <h5 class="card-header">
+ <?= I18N::translate('Youngest mother'), ' - ', $stats->youngestMotherAge('1') ?>
+ </h5>
+ <div class="card-body">
+ <?= $stats->youngestMother() ?>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div class="card-deck">
+ <div class="col-12 col-md-6 mb-3">
+ <div class="card m-0">
+ <h5 class="card-header">
+ <?= I18N::translate('Oldest father'), ' - ', $stats->oldestFatherAge('1') ?>
+ </h5>
+ <div class="card-body">
+ <?= $stats->oldestFather() ?>
+ </div>
+ </div>
+ </div>
+
+ <div class="col-12 col-md-6 mb-3">
+ <div class="card m-0">
+ <h5 class="card-header">
+ <?= I18N::translate('Oldest mother'), ' - ', $stats->oldestMotherAge('1') ?>
+ </h5>
+ <div class="card-body">
+ <?= $stats->oldestMother() ?>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
diff --git a/resources/views/statistics/families/children.phtml b/resources/views/statistics/families/children.phtml
new file mode 100644
index 0000000000..f45f62405e
--- /dev/null
+++ b/resources/views/statistics/families/children.phtml
@@ -0,0 +1,59 @@
+<?php
+declare(strict_types=1);
+
+use Fisharebest\Webtrees\I18N;
+
+/** @var \Fisharebest\Webtrees\Stats $stats */
+?>
+
+<h4 class="border-bottom p-2 mb-4">
+ <?= I18N::translate('Children in family') ?>
+</h4>
+
+<div class="mb-3">
+ <div class="card-deck">
+ <div class="col-12 col-md-6 mb-3">
+ <div class="card m-0">
+ <h5 class="card-header">
+ <?= I18N::translate('Average number of children per family') ?>
+ <span class="badge badge-secondary badge-pill float-right"><?= $stats->averageChildren() ?></span>
+ </h5>
+ <div class="card-body text-center">
+ <?= $stats->statsChildren() ?>
+ </div>
+ </div>
+ </div>
+
+ <div class="col-12 col-md-6 mb-3">
+ <div class="card m-0">
+ <h5 class="card-header">
+ <?= I18N::translate('Number of families without children') ?>
+ <span class="badge badge-secondary badge-pill float-right"><?= $stats->noChildrenFamilies() ?></span>
+ </h5>
+ <div class="card-body text-center">
+ <?= $stats->chartNoChildrenFamilies() ?>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div class="card-deck">
+ <div class="col-12 col-md-6 mb-3">
+ <div class="card m-0">
+ <h5 class="card-header">
+ <?= I18N::translate('Largest families') ?>
+ </h5>
+ <?= $stats->topTenLargestFamilyList(); ?>
+ </div>
+ </div>
+
+ <div class="col-12 col-md-6 mb-3">
+ <div class="card m-0">
+ <h5 class="card-header">
+ <?= I18N::translate('Largest number of grandchildren') ?>
+ </h5>
+ <?= $stats->topTenLargestGrandFamilyList(); ?>
+ </div>
+ </div>
+ </div>
+</div>
diff --git a/resources/views/statistics/families/marriage-age.phtml b/resources/views/statistics/families/marriage-age.phtml
new file mode 100644
index 0000000000..fa8d52dbee
--- /dev/null
+++ b/resources/views/statistics/families/marriage-age.phtml
@@ -0,0 +1,71 @@
+<?php
+declare(strict_types=1);
+
+use Fisharebest\Webtrees\I18N;
+
+/** @var \Fisharebest\Webtrees\Stats $stats */
+?>
+
+<h4 class="border-bottom p-2 mb-4">
+ <?= I18N::translate('Age in year of marriage') ?>
+</h4>
+
+<div class="mb-3">
+ <div class="card-deck">
+ <div class="col-12 col-md-6 mb-3">
+ <div class="card m-0">
+ <h5 class="card-header">
+ <?= I18N::translate('Youngest male'), ' - ', $stats->youngestMarriageMaleAge('1') ?>
+ </h5>
+ <div class="card-body">
+ <?= $stats->youngestMarriageMale() ?>
+ </div>
+ </div>
+ </div>
+
+ <div class="col-12 col-md-6 mb-3">
+ <div class="card m-0">
+ <h5 class="card-header">
+ <?= I18N::translate('Youngest female'), ' - ', $stats->youngestMarriageFemaleAge('1') ?>
+ </h5>
+ <div class="card-body">
+ <?= $stats->youngestMarriageFemale() ?>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div class="card-deck">
+ <div class="col-12 col-md-6 mb-3">
+ <div class="card m-0">
+ <h5 class="card-header">
+ <?= I18N::translate('Oldest male'), ' - ', $stats->oldestMarriageMaleAge('1') ?>
+ </h5>
+ <div class="card-body">
+ <?= $stats->oldestMarriageMale() ?>
+ </div>
+ </div>
+ </div>
+
+ <div class="col-12 col-md-6 mb-3">
+ <div class="card m-0">
+ <h5 class="card-header">
+ <?= I18N::translate('Oldest female'), ' - ', $stats->oldestMarriageFemaleAge('1') ?>
+ </h5>
+ <div class="card-body">
+ <?= $stats->oldestMarriageFemale() ?>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div class="card-deck">
+ <div class="col-lg-12 col-md-12 mb-3">
+ <div class="card m-0">
+ <div class="card-body text-center">
+ <?= $stats->statsMarrAge() ?>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
diff --git a/resources/views/statistics/families/marriage-length.phtml b/resources/views/statistics/families/marriage-length.phtml
new file mode 100644
index 0000000000..82813995d3
--- /dev/null
+++ b/resources/views/statistics/families/marriage-length.phtml
@@ -0,0 +1,37 @@
+<?php
+declare(strict_types=1);
+
+use Fisharebest\Webtrees\I18N;
+
+/** @var \Fisharebest\Webtrees\Stats $stats */
+?>
+
+<h4 class="border-bottom p-2 mb-4">
+ <?= I18N::translate('Length of marriage') ?>
+</h4>
+
+<div class="mb-3">
+ <div class="card-deck">
+ <div class="col-12 col-md-6 mb-3">
+ <div class="card m-0">
+ <h5 class="card-header">
+ <?= I18N::translate('Longest marriage'), ' - ', $stats->topAgeOfMarriage() ?>
+ </h5>
+ <div class="card-body">
+ <?= $stats->topAgeOfMarriageFamily() ?>
+ </div>
+ </div>
+ </div>
+
+ <div class="col-12 col-md-6 mb-3">
+ <div class="card m-0">
+ <h5 class="card-header">
+ <?= I18N::translate('Shortest marriage'), ' - ', $stats->minAgeOfMarriage() ?>
+ </h5>
+ <div class="card-body">
+ <?= $stats->minAgeOfMarriageFamily() ?>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>
diff --git a/resources/views/statistics/families/top10-list-age.phtml b/resources/views/statistics/families/top10-list-age.phtml
new file mode 100644
index 0000000000..9728c2422f
--- /dev/null
+++ b/resources/views/statistics/families/top10-list-age.phtml
@@ -0,0 +1,28 @@
+<?php
+declare(strict_types=1);
+
+use Fisharebest\Webtrees\Family;
+use Fisharebest\Webtrees\I18N;
+use Fisharebest\Webtrees\Individual;
+
+/* @var array $records */
+/* @var Family $family */
+/* @var Individual $child1 */
+/* @var Individual $child2 */
+?>
+
+<ul class="list-group list-group-flush">
+ <?php foreach ($records as $record): ?>
+ <?php $child1 = $record['child1']; ?>
+ <?php $child2 = $record['child2']; ?>
+ <?php $family = $record['family']; ?>
+ <li class="list-group-item d-flex justify-content-between align-items-center">
+ <span>
+ <a href="<?= e($child2->url()) ?>"><?= $child2->getFullName() ?></a> <?= I18N::translate('and') ?> <a href="<?= e($child1->url()) ?>"><?= $child1->getFullName() ?></a>
+ <br>
+ <a href="<?= e($family->url()) ?>">[<?= I18N::translate('View this family') ?>]</a>
+ </span>
+ <span class="badge badge-secondary badge-pill ml-3"><?= $record['age'] ?></span>
+ </li>
+ <?php endforeach; ?>
+</ul>
diff --git a/resources/views/statistics/families/top10-list-grand.phtml b/resources/views/statistics/families/top10-list-grand.phtml
new file mode 100644
index 0000000000..bb2c1c2f64
--- /dev/null
+++ b/resources/views/statistics/families/top10-list-grand.phtml
@@ -0,0 +1,21 @@
+<?php
+declare(strict_types=1);
+
+use Fisharebest\Webtrees\Family;
+use Fisharebest\Webtrees\I18N;
+
+/* @var array $records */
+/* @var Family $family */
+?>
+
+<ul class="list-group list-group-flush">
+ <?php foreach ($records as $record): ?>
+ <?php $family = $record['family']; ?>
+ <li class="list-group-item d-flex justify-content-between align-items-center">
+ <a href="<?= e($family->url()) ?>"><?= $family->getFullName() ?></a>
+ <span class="badge badge-secondary badge-pill ml-3">
+ <?= I18N::plural('%s grandchild', '%s grandchildren', $record['count'], I18N::number($record['count'])) ?>
+ </span>
+ </li>
+ <?php endforeach; ?>
+</ul>
diff --git a/resources/views/statistics/families/top10-list-spouses.phtml b/resources/views/statistics/families/top10-list-spouses.phtml
new file mode 100644
index 0000000000..3575f0eb8a
--- /dev/null
+++ b/resources/views/statistics/families/top10-list-spouses.phtml
@@ -0,0 +1,18 @@
+<?php
+declare(strict_types=1);
+
+use Fisharebest\Webtrees\Family;
+
+/* @var array $records */
+/* @var Family $family */
+?>
+
+<ul class="list-group list-group-flush">
+ <?php foreach ($records as $record): ?>
+ <?php $family = $record['family']; ?>
+ <li class="list-group-item d-flex justify-content-between align-items-center">
+ <a href="<?= e($family->url()) ?>"><?= $family->getFullName() ?></a>
+ <span class="badge badge-secondary badge-pill ml-3"><?= $record['age'] ?></span>
+ </li>
+ <?php endforeach; ?>
+</ul>
diff --git a/resources/views/statistics/families/top10-list.phtml b/resources/views/statistics/families/top10-list.phtml
new file mode 100644
index 0000000000..18e1fd470a
--- /dev/null
+++ b/resources/views/statistics/families/top10-list.phtml
@@ -0,0 +1,21 @@
+<?php
+declare(strict_types=1);
+
+use Fisharebest\Webtrees\Family;
+use Fisharebest\Webtrees\I18N;
+
+/* @var array $records */
+/* @var Family $family */
+?>
+
+<ul class="list-group list-group-flush">
+ <?php foreach ($records as $record): ?>
+ <?php $family = $record['family']; ?>
+ <li class="list-group-item d-flex justify-content-between align-items-center">
+ <a href="<?= e($family->url()) ?>"><?= $family->getFullName() ?></a>
+ <span class="badge badge-secondary badge-pill ml-3">
+ <?= I18N::plural('%s child', '%s children', $record['count'], I18N::number($record['count'])) ?>
+ </span>
+ </li>
+ <?php endforeach; ?>
+</ul>
diff --git a/resources/views/statistics/families/top10-nolist-age.phtml b/resources/views/statistics/families/top10-nolist-age.phtml
new file mode 100644
index 0000000000..13e008cad3
--- /dev/null
+++ b/resources/views/statistics/families/top10-nolist-age.phtml
@@ -0,0 +1,24 @@
+<?php
+declare(strict_types=1);
+
+use Fisharebest\Webtrees\Family;
+use Fisharebest\Webtrees\I18N;
+use Fisharebest\Webtrees\Individual;
+
+/* @var array $record */
+/* @var Family $family */
+/* @var Individual $child1 */
+/* @var Individual $child2 */
+?>
+
+<?php $child1 = $record['child1']; ?>
+<?php $child2 = $record['child2']; ?>
+<?php $family = $record['family']; ?>
+
+<?= $child2->formatList() ?>
+<br>
+<?= I18N::translate('and') ?>
+<br>
+<?= $child1->formatList() ?>
+<br>
+<a href="<?= e($family->url()) ?>">[<?= I18N::translate('View this family') ?>]</a>
diff --git a/resources/views/statistics/families/top10-nolist-grand.phtml b/resources/views/statistics/families/top10-nolist-grand.phtml
new file mode 100644
index 0000000000..6c58c6b868
--- /dev/null
+++ b/resources/views/statistics/families/top10-nolist-grand.phtml
@@ -0,0 +1,15 @@
+<?php
+declare(strict_types=1);
+
+use Fisharebest\Webtrees\Family;
+use Fisharebest\Webtrees\I18N;
+
+/* @var array $records */
+/* @var Family $family */
+?>
+
+<?php foreach ($records as $record): ?>
+ <?php $family = $record['family']; ?>
+ <a href="<?= e($family->url()) ?>"><?= $family->getFullName() ?></a>
+ - <?= I18N::plural('%s grandchild', '%s grandchildren', $record['count'], I18N::number($record['count'])) ?>
+<?php endforeach; ?>
diff --git a/resources/views/statistics/families/top10-nolist-spouses.phtml b/resources/views/statistics/families/top10-nolist-spouses.phtml
new file mode 100644
index 0000000000..50a09aac07
--- /dev/null
+++ b/resources/views/statistics/families/top10-nolist-spouses.phtml
@@ -0,0 +1,13 @@
+<?php
+declare(strict_types=1);
+
+use Fisharebest\Webtrees\Family;
+
+/* @var array $records */
+/* @var Family $family */
+?>
+
+<?php foreach ($records as $record): ?>
+ <?php $family = $record['family']; ?>
+ <a href="<?= e($family->url()) ?>"><?= $family->getFullName() ?></a> (<?= $record['age'] ?>)
+<?php endforeach; ?>
diff --git a/resources/views/statistics/families/top10-nolist.phtml b/resources/views/statistics/families/top10-nolist.phtml
new file mode 100644
index 0000000000..a60d371fec
--- /dev/null
+++ b/resources/views/statistics/families/top10-nolist.phtml
@@ -0,0 +1,15 @@
+<?php
+declare(strict_types=1);
+
+use Fisharebest\Webtrees\Family;
+use Fisharebest\Webtrees\I18N;
+
+/* @var array $records */
+/* @var Family $family */
+?>
+
+<?php foreach ($records as $record): ?>
+ <?php $family = $record['family']; ?>
+ <a href="<?= e($family->url()) ?>"><?= $family->getFullName() ?></a>
+ - <?= I18N::plural('%s child', '%s children', $record['count'], I18N::number($record['count'])) ?>
+<?php endforeach; ?>
diff --git a/resources/views/statistics/families/total-records.phtml b/resources/views/statistics/families/total-records.phtml
new file mode 100644
index 0000000000..e9b67e2806
--- /dev/null
+++ b/resources/views/statistics/families/total-records.phtml
@@ -0,0 +1,112 @@
+<?php
+declare(strict_types=1);
+
+use Fisharebest\Webtrees\I18N;
+
+/** @var \Fisharebest\Webtrees\Stats $stats */
+?>
+
+<h4 class="border-bottom p-2 mb-4">
+ <?= I18N::translate('Total families') ?>
+ <span class="badge badge-secondary badge-pill float-right"><?= $stats->totalFamilies() ?></span>
+</h4>
+
+<div class="mb-3">
+ <div class="row">
+ <div class="col-12 col-lg-6">
+ <div class="card-deck">
+ <div class="mb-3 col-12">
+ <div class="card m-0">
+ <h5 class="card-header border-bottom-0">
+ <?= I18N::translate('Total marriages') ?>
+ <span class="badge badge-secondary badge-pill float-right"><?= $stats->totalMarriages() ?></span>
+ </h5>
+ </div>
+ </div>
+
+ <div class="mb-3 col-12">
+ <div class="card m-0">
+ <h5 class="card-header border-bottom-0">
+ <?= I18N::translate('Marriages by century') ?>
+ </h5>
+ <div class="card-body">
+ <?= $stats->statsMarr() ?>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div class="card-deck">
+ <div class="mb-3 col-lg-12 col-md-6">
+ <div class="card m-0">
+ <h5 class="card-header border-bottom-0">
+ <?= I18N::translate('Earliest marriage') ?>
+ </h5>
+ <div class="card-body">
+ <?= $stats->firstMarriage() ?>
+ </div>
+ </div>
+ </div>
+
+ <div class="mb-3 col-lg-12 col-md-6">
+ <div class="card m-0">
+ <h5 class="card-header border-bottom-0">
+ <?= I18N::translate('Latest marriage') ?>
+ </h5>
+ <div class="card-body">
+ <?= $stats->lastMarriage() ?>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div class="col-12 col-lg-6">
+ <div class="card-deck">
+ <div class="mb-3 col-12">
+ <div class="card m-0">
+ <h5 class="card-header border-bottom-0">
+ <?= I18N::translate('Total divorces') ?>
+ <span class="badge badge-secondary badge-pill float-right"><?= $stats->totalDivorces() ?></span>
+ </h5>
+ </div>
+ </div>
+
+ <div class="mb-3 col-12">
+ <div class="card m-0">
+ <h5 class="card-header">
+ <?= I18N::translate('Divorces by century') ?>
+ </h5>
+ <div class="card-body">
+ <?= $stats->statsDiv() ?>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div class="card-deck">
+ <div class="mb-3 col-lg-12 col-md-6">
+ <div class="card m-0">
+ <h5 class="card-header">
+ <?= I18N::translate('Earliest divorce') ?>
+ </h5>
+ <div class="card-body">
+ <?= $stats->firstDivorce() ?>
+ </div>
+ </div>
+ </div>
+
+ <div class="mb-3 col-lg-12 col-md-6">
+ <div class="card m-0">
+ <h5 class="card-header">
+ <?= I18N::translate('Latest divorce') ?>
+ </h5>
+ <div class="card-body">
+ <?= $stats->lastDivorce() ?>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</div>