1*8add1155SRico Sonntag<?php 2*8add1155SRico Sonntag/** 3*8add1155SRico Sonntag * webtrees: online genealogy 4*8add1155SRico Sonntag * Copyright (C) 2018 webtrees development team 5*8add1155SRico Sonntag * This program is free software: you can redistribute it and/or modify 6*8add1155SRico Sonntag * it under the terms of the GNU General Public License as published by 7*8add1155SRico Sonntag * the Free Software Foundation, either version 3 of the License, or 8*8add1155SRico Sonntag * (at your option) any later version. 9*8add1155SRico Sonntag * This program is distributed in the hope that it will be useful, 10*8add1155SRico Sonntag * but WITHOUT ANY WARRANTY; without even the implied warranty of 11*8add1155SRico Sonntag * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12*8add1155SRico Sonntag * GNU General Public License for more details. 13*8add1155SRico Sonntag * You should have received a copy of the GNU General Public License 14*8add1155SRico Sonntag * along with this program. If not, see <http://www.gnu.org/licenses/>. 15*8add1155SRico Sonntag */ 16*8add1155SRico Sonntagdeclare(strict_types=1); 17*8add1155SRico Sonntag 18*8add1155SRico Sonntagnamespace Fisharebest\Webtrees\Statistics\Repository\Interfaces; 19*8add1155SRico Sonntag 20*8add1155SRico Sonntag/** 21*8add1155SRico Sonntag * A repository providing methods for individual related statistics. 22*8add1155SRico Sonntag */ 23*8add1155SRico Sonntaginterface IndividualRepositoryInterface 24*8add1155SRico Sonntag{ 25*8add1155SRico Sonntag /** 26*8add1155SRico Sonntag * How many GEDCOM records exist in the tree. 27*8add1155SRico Sonntag * 28*8add1155SRico Sonntag * @return string 29*8add1155SRico Sonntag */ 30*8add1155SRico Sonntag public function totalRecords(): string; 31*8add1155SRico Sonntag 32*8add1155SRico Sonntag /** 33*8add1155SRico Sonntag * How many individuals exist in the tree. 34*8add1155SRico Sonntag * 35*8add1155SRico Sonntag * @return string 36*8add1155SRico Sonntag */ 37*8add1155SRico Sonntag public function totalIndividuals(): string; 38*8add1155SRico Sonntag 39*8add1155SRico Sonntag /** 40*8add1155SRico Sonntag * Count the number of males. 41*8add1155SRico Sonntag * 42*8add1155SRico Sonntag * @return string 43*8add1155SRico Sonntag */ 44*8add1155SRico Sonntag public function totalSexMales(): string; 45*8add1155SRico Sonntag 46*8add1155SRico Sonntag /** 47*8add1155SRico Sonntag * Count the number of females. 48*8add1155SRico Sonntag * 49*8add1155SRico Sonntag * @return string 50*8add1155SRico Sonntag */ 51*8add1155SRico Sonntag public function totalSexFemales(): string; 52*8add1155SRico Sonntag 53*8add1155SRico Sonntag /** 54*8add1155SRico Sonntag * Count the number of individuals with unknown sex. 55*8add1155SRico Sonntag * 56*8add1155SRico Sonntag * @return string 57*8add1155SRico Sonntag */ 58*8add1155SRico Sonntag public function totalSexUnknown(): string; 59*8add1155SRico Sonntag 60*8add1155SRico Sonntag /** 61*8add1155SRico Sonntag * Count the total families. 62*8add1155SRico Sonntag * 63*8add1155SRico Sonntag * @return string 64*8add1155SRico Sonntag */ 65*8add1155SRico Sonntag public function totalFamilies(): string; 66*8add1155SRico Sonntag 67*8add1155SRico Sonntag /** 68*8add1155SRico Sonntag * Count the number of repositories 69*8add1155SRico Sonntag * 70*8add1155SRico Sonntag * @return string 71*8add1155SRico Sonntag */ 72*8add1155SRico Sonntag public function totalRepositories(): string; 73*8add1155SRico Sonntag 74*8add1155SRico Sonntag /** 75*8add1155SRico Sonntag * Count the total number of sources. 76*8add1155SRico Sonntag * 77*8add1155SRico Sonntag * @return string 78*8add1155SRico Sonntag */ 79*8add1155SRico Sonntag public function totalSources(): string; 80*8add1155SRico Sonntag 81*8add1155SRico Sonntag /** 82*8add1155SRico Sonntag * Count the number of notes. 83*8add1155SRico Sonntag * 84*8add1155SRico Sonntag * @return string 85*8add1155SRico Sonntag */ 86*8add1155SRico Sonntag public function totalNotes(): string; 87*8add1155SRico Sonntag 88*8add1155SRico Sonntag /** 89*8add1155SRico Sonntag * Show the total individuals as a percentage. 90*8add1155SRico Sonntag * 91*8add1155SRico Sonntag * @return string 92*8add1155SRico Sonntag */ 93*8add1155SRico Sonntag public function totalIndividualsPercentage(): string; 94*8add1155SRico Sonntag 95*8add1155SRico Sonntag /** 96*8add1155SRico Sonntag * Show the total families as a percentage. 97*8add1155SRico Sonntag * 98*8add1155SRico Sonntag * @return string 99*8add1155SRico Sonntag */ 100*8add1155SRico Sonntag public function totalFamiliesPercentage(): string; 101*8add1155SRico Sonntag 102*8add1155SRico Sonntag /** 103*8add1155SRico Sonntag * Show the total number of repositories as a percentage. 104*8add1155SRico Sonntag * 105*8add1155SRico Sonntag * @return string 106*8add1155SRico Sonntag */ 107*8add1155SRico Sonntag public function totalRepositoriesPercentage(): string; 108*8add1155SRico Sonntag 109*8add1155SRico Sonntag /** 110*8add1155SRico Sonntag * Show the number of sources as a percentage. 111*8add1155SRico Sonntag * 112*8add1155SRico Sonntag * @return string 113*8add1155SRico Sonntag */ 114*8add1155SRico Sonntag public function totalSourcesPercentage(): string; 115*8add1155SRico Sonntag 116*8add1155SRico Sonntag /** 117*8add1155SRico Sonntag * Show the number of notes as a percentage. 118*8add1155SRico Sonntag * 119*8add1155SRico Sonntag * @return string 120*8add1155SRico Sonntag */ 121*8add1155SRico Sonntag public function totalNotesPercentage(): string; 122*8add1155SRico Sonntag 123*8add1155SRico Sonntag /** 124*8add1155SRico Sonntag * Count the number of living individuals. 125*8add1155SRico Sonntag * 126*8add1155SRico Sonntag * @return string 127*8add1155SRico Sonntag */ 128*8add1155SRico Sonntag public function totalLivingPercentage(): string; 129*8add1155SRico Sonntag 130*8add1155SRico Sonntag /** 131*8add1155SRico Sonntag * Count the number of dead individuals. 132*8add1155SRico Sonntag * 133*8add1155SRico Sonntag * @return string 134*8add1155SRico Sonntag */ 135*8add1155SRico Sonntag public function totalDeceasedPercentage(): string; 136*8add1155SRico Sonntag 137*8add1155SRico Sonntag /** 138*8add1155SRico Sonntag * Count the number of males 139*8add1155SRico Sonntag * 140*8add1155SRico Sonntag * @return string 141*8add1155SRico Sonntag */ 142*8add1155SRico Sonntag public function totalSexMalesPercentage(): string; 143*8add1155SRico Sonntag 144*8add1155SRico Sonntag /** 145*8add1155SRico Sonntag * Count the number of females. 146*8add1155SRico Sonntag * 147*8add1155SRico Sonntag * @return string 148*8add1155SRico Sonntag */ 149*8add1155SRico Sonntag public function totalSexFemalesPercentage(): string; 150*8add1155SRico Sonntag 151*8add1155SRico Sonntag /** 152*8add1155SRico Sonntag * Count the number of individuals with unknown sex. 153*8add1155SRico Sonntag * 154*8add1155SRico Sonntag * @return string 155*8add1155SRico Sonntag */ 156*8add1155SRico Sonntag public function totalSexUnknownPercentage(): string; 157*8add1155SRico Sonntag 158*8add1155SRico Sonntag /** 159*8add1155SRico Sonntag * Generate a chart showing sex distribution. 160*8add1155SRico Sonntag * 161*8add1155SRico Sonntag * @param string|null $size 162*8add1155SRico Sonntag * @param string|null $color_female 163*8add1155SRico Sonntag * @param string|null $color_male 164*8add1155SRico Sonntag * @param string|null $color_unknown 165*8add1155SRico Sonntag * 166*8add1155SRico Sonntag * @return string 167*8add1155SRico Sonntag */ 168*8add1155SRico Sonntag public function chartSex( 169*8add1155SRico Sonntag string $size = null, 170*8add1155SRico Sonntag string $color_female = null, 171*8add1155SRico Sonntag string $color_male = null, 172*8add1155SRico Sonntag string $color_unknown = null 173*8add1155SRico Sonntag ): string; 174*8add1155SRico Sonntag} 175