Alt-Üst Soy Bilgisi Sorgulama listenizden interaktif soyağaçları oluşturun
E-devlet kaps zerinden oluturulan "Alt-st Soy Bilgisi Sorgulama" listesini interaktif bir soyaacna evirmek zerine gelitirilmi projedir. Projeyi bilgisayarnza indirerek kendi grsellerinizi oluturabilirsiniz.
Projenin altyapsnda Laravel 5.6, soyaacnn grntlenmesinde D3.js kullanlmtr.
composer
gerekmektedir. macOS'ta brew ile ykleyebilirsinizpdftohtml
ve ghostscript
uygulamalar gerekmektedir.
brew install pdftohtml
brew install ghostscript
sudo apt-get install poppler-utils
sudo apt-get install ghostscript
git clone https://github.com/EnesCakir/soyagaci-donusturucu.git
cd soyagaci-donusturucu
composer install
.env
dosyanz oluturun cp .env.example .env
.env
dosyanzda pdftohtml
konumunu ayarlaynphp artisan key:generate
php artisan serve
localhost:8000
yazarak uygulamaya eriebilirsiniz"Alt-st Soy Bilgisi Sorgulama" sistemi ilk aldnda sonular PDF olarak oluturuyordu. Bu da ilenmesini zor hale getiriyordu. 14 ubat 2018'teki gncelleme ile sonular HTML olarak vermeye baladlar. Bu da bizim iimizi epey kolaylatrd.
ncelikle pdftohtml -noframes -i -c
ile PDF'i HTML dosyasna dntryoruz. -noframes
argmanyla PDF'in tek sayfa olmasn -c
argmanyla ghostscript
'i kullanarak yazlarn daha doru poziyonlarda yer almasn salyoruz.
Oluan HTML dosyasndaki gereksiz HTML tag
lerini PHP'nin strip_tags
fonksiyonu ile temizliyoruz. regex
kullarak da AIKLAMALAR
, LER BAKANLII
, NFUS VE VATANDALIK LER GENEL MDRL
gibi verimizi kirleten balklar siliyoruz.
Elimizde srasyla aile bireylerinin Sra
, Cinsiyet (E|K)
, Yaknlk Derecesi
, AD
, SOYAD
, BABA ADI
, ANA ADI
, DOUM YER
, l
, le
, MAHALLE
, Birey Sra
, Medeni Hali
, Durumu
, Doum Tarihi
, lm Tarihi
bilgilerinin satr satr bulunduu bir veri kalyor. Burada tamamen rakamlardan oluan ksm sadece Sra
olduu iin bu listeyi sadece rakam bulunan satrlardan blyoruz ve her bir paray bir kii olarak belirliyoruz. Sonra srasyla bu paralardaki bilgileri kullanarak kiileri oluturuyoruz. Buradaki zorluk ise baz alanlar bir satrdan fazla olabiliyor ya da -
kullanlarak hi belirtilmemi oluyor. Mesela ismi uzun olan bir kiinin Ad
tek satr yerine ift satr olunca bizim bunu anlamamz zorlayor. Byklk kklk, iinde say bulunup bulunmamasna gre bu kiileri inaa ediyoruz. Person::parseFromPdf($parts)
methodundan bu eletirmeleri daha ayrntl inceleyebilirsiniz.
HTML dosylarnn okunmasnda PDF dosyalarna gre ok basit. nk sabit bir yaps var ve class
ve tag
leri kullanarak istediiniz ksm kolaylkla seebiliyorsunuz.
.resultTable > tbody > tr
seicisini kullanarak tablonun satrlarn seiyoruz. Sonra td
etiketiyle bu satrlar stunlara blyoruz ve bilgileri sraylar okuyarak kiileri oluturuyoruz.
Burada bireylerin Yaknlk Derecesi
stunundaki bilgiyi kullarak ilikileri belirliyoruz. Kiinin Yaknlk Derecesi
nin iinde geen Anne
, Baba
, Kz
, Olu
kelimelerinin saysn kullanarak aalari seviyesinin belirliyoruz. Kendisi
yazann seviyesi 0
oluyor. Yani aacmz kk. Aacmzn kknden balayarak kiileri artan seviye srasnda inceliyoruz ve Anne
, Baba
ilikilerini kuruyoruz. Yani aacmz Breadth First Search
olarak geziyoruz.
Bu ilikiler kurulduktan sonra aacmzn yapraklarndaki kiilerin anne ve babalarnn sadece adlar bulunuyor. Tabloda bir satrlar yok. Onlarn adlarndan da dummy
bireyler oluturup aacmza ekliyoruz.
D3.js
ktphanesi JSON
veri tipini kabul ediyor. Bu sebeple her bireyin anne ve babasnn i ie gmlm bir ekilde olduu bir JSON
oluturuyoruz.
Aacn kk JSON
olutururken anne, babasnn da ->json()
fonksiyonun aryor. Onlar da kendi anne babalarnnkini. Bylelikle recursive
olarak JSON
dosyamz olumu oluyor.