xref: /webtrees/app/Statistics/Google/ChartIndividualWithSources.php (revision 88de55fda5bcccfc1527a19eaa4a245e17861255)
1*88de55fdSRico Sonntag<?php
2*88de55fdSRico Sonntag/**
3*88de55fdSRico Sonntag * webtrees: online genealogy
4*88de55fdSRico Sonntag * Copyright (C) 2018 webtrees development team
5*88de55fdSRico Sonntag * This program is free software: you can redistribute it and/or modify
6*88de55fdSRico Sonntag * it under the terms of the GNU General Public License as published by
7*88de55fdSRico Sonntag * the Free Software Foundation, either version 3 of the License, or
8*88de55fdSRico Sonntag * (at your option) any later version.
9*88de55fdSRico Sonntag * This program is distributed in the hope that it will be useful,
10*88de55fdSRico Sonntag * but WITHOUT ANY WARRANTY; without even the implied warranty of
11*88de55fdSRico Sonntag * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12*88de55fdSRico Sonntag * GNU General Public License for more details.
13*88de55fdSRico Sonntag * You should have received a copy of the GNU General Public License
14*88de55fdSRico Sonntag * along with this program. If not, see <http://www.gnu.org/licenses/>.
15*88de55fdSRico Sonntag */
16*88de55fdSRico Sonntagdeclare(strict_types=1);
17*88de55fdSRico Sonntag
18*88de55fdSRico Sonntagnamespace Fisharebest\Webtrees\Statistics\Google;
19*88de55fdSRico Sonntag
20*88de55fdSRico Sonntaguse Fisharebest\Webtrees\I18N;
21*88de55fdSRico Sonntaguse Fisharebest\Webtrees\Statistics\AbstractGoogle;
22*88de55fdSRico Sonntag
23*88de55fdSRico Sonntag/**
24*88de55fdSRico Sonntag *
25*88de55fdSRico Sonntag */
26*88de55fdSRico Sonntagclass ChartIndividualWithSources extends AbstractGoogle
27*88de55fdSRico Sonntag{
28*88de55fdSRico Sonntag    /**
29*88de55fdSRico Sonntag     * Create a chart showing individuals with/without sources.
30*88de55fdSRico Sonntag     *
31*88de55fdSRico Sonntag     * @param int         $tot_indi        The total number of individuals
32*88de55fdSRico Sonntag     * @param int         $tot_indi_source The total number of individuals with sources
33*88de55fdSRico Sonntag     * @param string|null $color_from
34*88de55fdSRico Sonntag     * @param string|null $color_to
35*88de55fdSRico Sonntag     *
36*88de55fdSRico Sonntag     * @return string
37*88de55fdSRico Sonntag     */
38*88de55fdSRico Sonntag    public function chartIndisWithSources(
39*88de55fdSRico Sonntag        int $tot_indi,
40*88de55fdSRico Sonntag        int $tot_indi_source,
41*88de55fdSRico Sonntag        string $color_from = null,
42*88de55fdSRico Sonntag        string $color_to   = null
43*88de55fdSRico Sonntag    ): string {
44*88de55fdSRico Sonntag        $chart_color1 = (string) $this->theme->parameter('distribution-chart-no-values');
45*88de55fdSRico Sonntag        $chart_color2 = (string) $this->theme->parameter('distribution-chart-high-values');
46*88de55fdSRico Sonntag        $color_from   = $color_from ?? $chart_color1;
47*88de55fdSRico Sonntag        $color_to     = $color_to   ?? $chart_color2;
48*88de55fdSRico Sonntag
49*88de55fdSRico Sonntag        $data = [
50*88de55fdSRico Sonntag            [
51*88de55fdSRico Sonntag                I18N::translate('Type'),
52*88de55fdSRico Sonntag                I18N::translate('Total')
53*88de55fdSRico Sonntag            ],
54*88de55fdSRico Sonntag            [
55*88de55fdSRico Sonntag                I18N::translate('Without sources'),
56*88de55fdSRico Sonntag                $tot_indi - $tot_indi_source
57*88de55fdSRico Sonntag            ],
58*88de55fdSRico Sonntag            [
59*88de55fdSRico Sonntag                I18N::translate('With sources'),
60*88de55fdSRico Sonntag                $tot_indi_source
61*88de55fdSRico Sonntag            ],
62*88de55fdSRico Sonntag        ];
63*88de55fdSRico Sonntag
64*88de55fdSRico Sonntag        $colors = $this->interpolateRgb($color_from, $color_to, \count($data) - 1);
65*88de55fdSRico Sonntag
66*88de55fdSRico Sonntag        return view(
67*88de55fdSRico Sonntag            'statistics/other/charts/pie',
68*88de55fdSRico Sonntag            [
69*88de55fdSRico Sonntag                'title'            => I18N::translate('Individuals with sources'),
70*88de55fdSRico Sonntag                'data'             => $data,
71*88de55fdSRico Sonntag                'colors'           => $colors,
72*88de55fdSRico Sonntag                'labeledValueText' => 'percentage',
73*88de55fdSRico Sonntag            ]
74*88de55fdSRico Sonntag        );
75*88de55fdSRico Sonntag    }
76*88de55fdSRico Sonntag}
77