Věk osob

Tipy a návody pro tvorbu vlastních sestav a výstupů z TNG.
Falt
Příspěvky: 405
Registrován: 30 srp 2013 23:48
Kontaktovat uživatele:

Věk osob

Příspěvekod Falt » 28 dub 2016 14:00

Osobně mám potlačeny údaje o žijících osobách, proto tento report nemohu sám využít. Ale uvědomil jsem si, že by mohl potěšit tvůrce stránek v TNG, kteří údaje o žijících osobách na svých stránkách uvádějí. Otestoval jsem jej v testovací databázi, proto je barevné podání netypické. POZOR: Report v základní verzi prezentuje údaje o věku všech osob v databázi, bohužel tedy i osob, jejichž údaje by měly spatřit jenom osoby s oprávněním.
Pozorný čtenář si jistě uvědomil, že předností reportu je i možnost výstupní údaje si seřadit podle aktuální potřeby anebo přání uživatelů. V základní verzi je výstup uspořádan sestupně podle dosaženého věku.
V případě, že některé datum je známo pouze jako odhadovaný letopočet, bude výsledný věk osoby uveden jako odhadovaný. Jistou nevýhodu představuje zobrazení let ve sloupci Věk výrazem "y". Pokud naleznete šikovné řešení, přidejte je jako odpověď na toto téma.
Pozor, v níže uvedeném SQL dotazu si nahraďte výraz yourtree v předposledním řádku za skutečný název Vašeho stromu Admin | Stromy správný název je v poli ID číslo.

SELECT personid, lastname, firstname, birthdate, deathdate,
@ay := year(@adt := if(deathdatetr,replace(deathdatetr,'-00','-01'),curdate())) -
year(@abd := replace(birthdatetr,'-00','-01')) - (mid(@adt,6,5) < mid(@abd,6,5)) as ay,
@am := (mid(@adt,6,5) < mid(@abd,6,5)) * 12 + month(@adt) - month(@abd) - (day(@adt) < day(@abd)) as am, @ad := day(@adt)-day(@abd) + (day(@adt) < day(@abd)) * day(last_day(@adt - interval 1 month)) as ad,
@ca := (birthdatetr!=@abd or(deathdatetr != @adt and not living)) as about,
concat(convert(@ay,char),'y, ',convert(@am,char),'m, ',convert(@ad,char), if(@ca,'d (about)','d')) as Age, living
FROM tng_people where gedcom = 'yourtree' and birthdatetr and (deathdatetr or living)
order by ay desc, am desc, ad desc,lastname, firstname


Inspirací pro tento report mi byla stránka http://tng.community/index.php?/forums/topic/2960-age-report/
Ukázka výstupu:
AgeReport.jpg
Ukázka výstupu z reportu o věku
AgeReport.jpg (118.54 KiB) Zobrazeno 11293 x

Aby se zobrazily české názvy v záhlaví je nutný zásah do souboru cust_text.php ve složce languages.
:)

Uživatelský avatar
michal
Příspěvky: 732
Registrován: 06 čer 2013 21:37
Bydliště: Hostinné
Kontaktovat uživatele:

Re: Věk osob

Příspěvekod michal » 28 dub 2016 17:36

Řešení náhrady anglických zkratek (y, m, d, about) ve sloupci Věk je poměrně jednoduché:
v části SQL příkazu
"concat(convert(@ay,char),'y, ',convert(@am,char),'m, ',convert(@ad,char), if(@ca,'d (about)','d')) as Age, living"
nahraďte tyto zkratky českými výrazy, tedy např.:
"concat(convert(@ay,char),' let, ',convert(@am,char),' měsíců, ',convert(@ad,char), if(@ca,' dní (zhruba)',' dní')) as Age, living"

Výsledek pak bude vypadat takto:
Věk.png
Věk.png (15.27 KiB) Zobrazeno 11287 x


Měl bych dvě poznámky:

1) Nastavení ochrany údajů TNG, tj. např. zobrazování žijících a nežijících osob, je aplikováno pouze na reporty vytvořené pomocí vestavěného nástroje pro tvorbu reportů.
Pokud report vytvoříte pomocí vlastního SQL příkazu, nastavení ochrany údajů v TNG se do reportu nepromítne. Ve výsledku takového reportu budou tedy zobrazeny vždy všechny osoby, žijící i zesnulé.

2) Jak provádíte zásah do souboru cust_text.php ve složce languages s ohledem na české výrazy v záhlaví reportu?

Falt
Příspěvky: 405
Registrován: 30 srp 2013 23:48
Kontaktovat uživatele:

Zásah do cust_text.php

Příspěvekod Falt » 28 dub 2016 19:24

Stručně. Jednou ze zásad je neměnit nic v "ostrých" souborech. TNG je geniálně navrženo tak, že zavádí uživatelské soubory, kam si uživatel může ukládat vlastní individuální úpravy.
Některé časté výrazy jsou přeloženy přímo v programu při volbě češtiny, některé si můžeme přizpůsobit. Pro tyto úpravy je nutným předpokladem identifikovat proměnnou, kterou hodláme nově definovat. Popsaáno je to v nápovědě a zejména na stránkách k TNG.

Pro náš případ reportu si jako proměnné "vypůjčíme" ty výrazy, které se se nám zobrazují anglicky. Takže jako jednoduchá ukázka zápisu:
// úpravy v Reportech
$text['ay'] = "Roků";
$text['Age'] = "Věk";
$text['am'] = "Měsíců";
$text['ad'] = "Dní";
$text['about'] = "odhad";
// konec úprav v Reportech
?>

Pokud chceme převést určité výrazy i do dalších jazyků musíme postup zopakovat pro každý z nich. Dnes prakticky všichni pracují se znakovou sadou UTF-8
:D


Zpět na “Reporty”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 8 hostů