. */ declare(strict_types=1); namespace Fisharebest\Webtrees\Statistics\Google; use Fisharebest\Localization\Locale\LocaleInterface; use Fisharebest\Webtrees\I18N; use Psr\Http\Message\ServerRequestInterface; use function app; use function assert; /** * A chart showing the distribution of males and females. */ class ChartSex { /** * Generate a chart showing sex distribution. * * @param int $tot_m The total number of male individuals * @param int $tot_f The total number of female individuals * @param int $tot_u The total number of unknown individuals * @param string|null $color_female * @param string|null $color_male * @param string|null $color_unknown * * @return string */ public function chartSex( int $tot_m, int $tot_f, int $tot_u, string $color_female = null, string $color_male = null, string $color_unknown = null ): string { $color_female = $color_female ?? '#ffd1dc'; $color_male = $color_male ?? '#84beff'; $color_unknown = $color_unknown ?? '#777777'; $data = [ [ I18N::translate('Type'), I18N::translate('Total') ], ]; if ($tot_m || $tot_f || $tot_u) { $data[] = [ I18N::translate('Males'), $tot_m ]; $data[] = [ I18N::translate('Females'), $tot_f ]; $data[] = [ I18N::translate('Unknown'), $tot_u ]; } $locale = app(ServerRequestInterface::class)->getAttribute('locale'); assert($locale instanceof LocaleInterface); return view('statistics/other/charts/pie', [ 'title' => null, 'data' => $data, 'colors' => [$color_male, $color_female, $color_unknown], 'labeledValueText' => 'percentage', 'language' => $locale->languageTag(), ]); } }