[[BioOSM]]
 

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
project:bioosm:start [2018/06/08 01:21]
sumie-dh [K cemu to je]
project:bioosm:start [2018/08/28 01:04]
sachy
Line 4: Line 4:
 name=Biologicke zbrane ve vasem okoli| name=Biologicke zbrane ve vasem okoli|
 image= bioosm:​bioosm.jpg?​400 | image= bioosm:​bioosm.jpg?​400 |
-founder=[[user:​sachy:start]]|+founder=[[user:​sachy]]|
 interested=[[user:​sumie-dh]]| interested=[[user:​sumie-dh]]|
-sw=CC|+sw=CC-BY-SA|
 hw=N/A| hw=N/A|
 status=active}} status=active}}
Line 28: Line 28:
 Podklad jsou [[https://​openstreetmap.org|OSM]],​ ktere maji API [[http://​openlayers.org/​|OpenLayers]] jez umoznuje pridavat do mapy vlastni body, vrstvy... Podklad jsou [[https://​openstreetmap.org|OSM]],​ ktere maji API [[http://​openlayers.org/​|OpenLayers]] jez umoznuje pridavat do mapy vlastni body, vrstvy...
  
-Jednotliva pozorovani jsou v databazi [[http://​tellico-project.org/​|Tellico]]. Udelal jsem script parse_tellico.sh,​ ktery z .tc databaze (je to vlastne ZIP s XML uvnitr) vyparsuje jednotlive polozky a vygeneruje HTML soubor s mapou a podadresar "​det"​ s HTML strankami s detaily jednotlivych pozorovani.+Jednotliva pozorovani jsou v databazi [[http://​tellico-project.org/​|Tellico]]. Udelal jsem script parse_tellico.sh,​ ktery z .tc databaze (je to vlastne ZIP s XML uvnitr) vyparsuje jednotlive polozky a vygeneruje HTML soubor s mapou a podadresar "​det"​ s HTML strankami s detaily jednotlivych pozorovani. Vygeneruje se taky JSON s vyparsovanymi polozkami, ktery lze z webu projektu stahnout. 
 + 
 +Pro nadsence je vygenerovany taky prehled prispevku plainlog.htm serazeny dle data pridani do databaze.
  
 Obrazky v plnem rozliseni jsou v podadresari "​img",​ nahledy v "​simg"​. Videa jsou nahrana na YT a misto nahledu maji generickou ikonu. Obrazky v plnem rozliseni jsou v podadresari "​img",​ nahledy v "​simg"​. Videa jsou nahrana na YT a misto nahledu maji generickou ikonu.
  
-Pozorovani ktera se v mape zobrazi lze filtrovat dle prislusnosti k radu (bakterie, zvirata, rostliny,​...) ​pripadne cimkoli co lze grepnout z Tellico XML.+Pozorovani ktera se v mape zobrazi lze filtrovat dle prislusnosti k radu (bakterie, zvirata, rostliny,​...) ​az po prislusnost k jednotlivym druhum.
  
 === Tellico sample database === === Tellico sample database ===
Line 97: Line 99:
  
 ==== parse_tellico.sh ==== ==== parse_tellico.sh ====
-<code bash>+<code bash parse_tellico.sh>
 #!/bin/bash #!/bin/bash
 # Parse Tellico database to BioOSM index.htm # Parse Tellico database to BioOSM index.htm
Line 103: Line 105:
 # Print result to stdout # Print result to stdout
 # #
-# Generate minis in simg folder 
 # find ./ -type f -exec mogrify -verbose -layers Dispose -resize 128\>​x128\>​ -quality 100% {} + # find ./ -type f -exec mogrify -verbose -layers Dispose -resize 128\>​x128\>​ -quality 100% {} +
 # #
 +# // vectorLayer.removeFeatures(atol)
 +# // map.removeLayer(vectorLayer)
 # #
 # #
Line 115: Line 118:
 rm -rfv "​./​det/​*"​ rm -rfv "​./​det/​*"​
 mkdir -p "​./​det"​ mkdir -p "​./​det"​
-#cat "./index_head.htm"+ 
 +ICON_animalia="​animalia.png"​ 
 +ICON_bacteria="​bacteria.png"​ 
 +ICON_fungi="​fungi.png"​ 
 +ICON_chromista="​chromista.png"​ 
 +ICON_plantae="​plantae.svg"​ 
 +ICON_plostenkoid="​plostenkoid.png"​ 
 +ICON_protista="​protista.png"​ 
 +ICON_biohazard="​biohazard.svg"​ 
 + 
 +json=""​ 
 + 
 +Return icon by Regnum 
 +function geticon () { 
 + case "$1" in 
 + "​Animalia"​) 
 + echo "​$ICON_animalia";;​ 
 + "​Bacteria"​) 
 + echo "​$ICON_bacteria";;​ 
 + "​Fungi"​) 
 + echo "​$ICON_fungi";;​ 
 + "​Chromista"​) 
 + echo "​$ICON_chromista";;​ 
 + "​Plantae"​) 
 + echo "​$ICON_plantae";;​ 
 + "​Protista"​) 
 + echo "​$ICON_protista";;​ 
 + *) 
 + echo "​$ICON_biohazard";;​ 
 + esac 
 +
 + 
 +function safehtml () { 
 + echo "​$1"​ | sed -e "​s/'/​\&#​39;/​g"​ -e '​s/"/​\&#​34;/​g'​ -e '​s/</​\&​lt;/​g'​ -e '​s/>/​\&​gt;/​g'​ -e 's/^[ ]*//g' -e 's/[ ]*$//​g'​ 
 +
 + 
 +i=1 # GLOBAL increment must persist multiple spagety() calls; incremented to infinity 
 +# Core function generating entries matching selection criteria (ie Kingdom) 
 +# !!! BEZ ODSAZENI !!! 
 +# $1 = list of entries 
 +# $2 = layer name 
 +# $3 = icon of the points 
 +function spagety () { 
 + 
 + bylo=""​ # Minula pozice 
 + sam=""​ # HTML samostatneho zaznamu 
 + osam=""​ # predchozi $sam 
 + spoj=""​ # HTML had z popisu stejnych pozic 
 + ospoj=""​ # Predchozi $spoj 
 + ox=""​ # Old X 
 + oy=""​ # Old Y 
 + datelog=""​ # Entries sorted by date for plaintext log 
 + json="​var data='​{\"​version\":​\"​$(date --rfc-3339=seconds)\",​\"​arma\":​["​ 
 + 
 + while IFS=''​ read -r radek || [[ -n "​$radek"​ ]]; do 
 + co=$(echo "​$radek"​ | grep -oe ' <​title>​.*</title> ' | sed -E 's/( )*<​(\/​)?​title>​( )*//​g'​) 
 + co=$(safehtml "​$co"​) 
 + obr=$(echo "​$radek"​ | grep -oe ' <​image>​.*</​image>​ ' | sed -E 's/( )*<​(\/​)?​image>​( )*//g' | grep -oPe '​[^/​]*$'​) 
 + obr=$(safehtml "​$obr"​) 
 + kde=$(echo "​$radek"​ | grep -oe '<​locality>​.*</​locality>'​ | grep -oPe '​[0-9]{2}\.[0-9]{1,​10}[,​ ]*[0-9]{2}\.[0-9]{1,​10}'​) 
 + kde=$(safehtml "​$kde"​) 
 + kdex=$(echo "​$kde"​ | grep -oPe '​[0-9]{2}\.[0-9]{1,​10}$'​) 
 + kdex=$(safehtml "​$kdex"​) 
 + kdey=$(echo "​$kde"​ | grep -oPe '​^[0-9]{2}\.[0-9]{1,​10}'​) 
 + kdey=$(safehtml "​$kdey"​) 
 + kdy=$(echo "​$radek"​ | grep -oe ' <​taken-date>​.*</​taken-date>​ ' | sed -E 's/( )*<​(\/​)?​taken-date>​( )*//g' | sed -E '​s/​([0-9]+)\.([0-9]+)\.([0-9]{4})/​\3-\2-\1/​g'​ | sed -E '​s/​-([0-9])-/​-0\1-/​g'​ | sed -E '​s/​-([0-9])$/​-0\1/​g'​) 
 + kdy=$(safehtml "​$kdy"​) 
 + skop_typ=$(echo "​$radek"​ | grep -oe ' <​new-field-1>​.*</​new-field-1>​ ' | sed -E 's/( )*<​(\/​)?​new-field-1>​( )*//​g'​) 
 + skop_typ=$(safehtml "​$skop_typ"​) 
 + skop=$(echo "​$radek"​ | grep -oe ' <​microscope>​.*</​microscope>​ ' | sed -E 's/( )*<​(\/​)?​microscope>​( )*//​g'​) 
 + skop=$(safehtml "​$skop"​) 
 + imp=$(echo "​$radek"​ | grep -oe ' <​new-field-3>​.*</​new-field-3>​ ' | sed -E 's/( )*<​(\/​)?​new-field-3>​( )*//​g'​) 
 + imp=$(safehtml "​$imp"​) 
 + reg=$(echo "​$radek"​ | grep -oe ' <​new-field-4>​.*</​new-field-4>​ ' | sed -E 's/( )*<​(\/​)?​new-field-4>​( )*//​g'​) 
 + reg=$(safehtml "​$reg"​) 
 + phy=$(echo "​$radek"​ | grep -oe ' <​phylum>​.*</​phylum>​ ' | sed -E 's/( )*<​(\/​)?​phylum>​( )*//​g'​) 
 + phy=$(safehtml "​$phy"​) 
 + cla=$(echo "​$radek"​ | grep -oe ' <​class>​.*</​class>​ ' | sed -E 's/( )*<​(\/​)?​class>​( )*//​g'​) 
 + cla=$(safehtml "​$cla"​) 
 + ord=$(echo "​$radek"​ | grep -oe ' <​order>​.*</​order>​ ' | sed -E 's/( )*<​(\/​)?​order>​( )*//​g'​) 
 + ord=$(safehtml "​$ord"​) 
 + fam=$(echo "​$radek"​ | grep -oe ' <​family>​.*</​family>​ ' | sed -E 's/( )*<​(\/​)?​family>​( )*//​g'​) 
 + fam=$(safehtml "​$fam"​) 
 + gen=$(echo "​$radek"​ | grep -oe ' <​genus>​.*</​genus>​ ' | sed -E 's/( )*<​(\/​)?​genus( )*>//​g'​) 
 + gen=$(safehtml "​$gen"​) 
 + spe=$(echo "​$radek"​ | grep -oe ' <​species>​.*</​species>​ ' | sed -E 's/( )*<​(\/​)?​species>​( )*//​g'​) 
 + spe=$(safehtml "​$spe"​) 
 + loc=$(echo "​$radek"​ | grep -oe ' <​locality---plaintext>​.*</​locality---plaintext>​ ' | sed -E 's/( )*<​(\/​)?​locality---plaintext>​( )*//​g'​) 
 + loc=$(safehtml "​$loc"​) 
 + des=$(echo "​$radek"​ | grep -oe ' <​description>​.*</​description>​ ' | sed -E 's/( )*<​(\/​)?​description>​( )*//​g'​) 
 + des=$(safehtml "​$des"​) 
 + vid=$(echo "​$radek"​ | grep -oe ' <​videolink>​.*</​videolink>​ ' | sed -E 's/( )*<​(\/​)?​videolink>​( )*//​g'​) 
 + vid=$(safehtml "​$vid"​) 
 + bio=$(echo "​$radek"​ | grep -oe ' <​biotope>​.*</​biotope>​ ' | sed -E 's/( )*<​(\/​)?​biotope>​( )*//​g'​) 
 + bio=$(safehtml "​$bio"​) 
 + eng=$(echo "​$radek"​ | grep -oe ' <​enlargement>​.*</​enlargement>​ ' | sed -E 's/( )*<​(\/​)?​enlargement>​( )*//​g'​) 
 + eng=$(safehtml "​$eng"​) 
 + obs=$(echo "​$radek"​ | grep -oe ' <​observer>​.*</​observer>​ ' | sed -E 's/( )*<​(\/​)?​observer>​( )*//​g'​) 
 + obs=$(safehtml "​$obs"​) 
 + lnk=$(echo "​$radek"​ | grep -oe ' <​localitylink>​.*</​localitylink>​ ' | sed -E 's/( )*<​(\/​)?​localitylink>​( )*//​g'​) 
 + lnk=$(safehtml "​$lnk"​) 
 + detid=$(echo "​brmlab$co$obr$kde$kdy"​ | md5sum | grep -oe '​[a-zA-Z0-9]*'​) 
 + 
 + if [[ "​$kdex"​ = ""​ ]]; then 
 + >&​2 echo $(echo "​$radek"​ | grep -oe '<​locality>​.*</​locality>'​) " $co" 
 + continue;​ 
 + fi 
 + zkurvenetellico=$(echo "​$obr"​ | grep -oe '​\.[a-zA-Z]*$'​) 
 + if [[ "​$zkurvenetellico"​ = "​.jpeg"​ ]]; then 
 + >&​2 echo "$obr $co" 
 + continue;​ 
 + fi 
 + 
 + if [[ "​$spe"​ = "​sp."​ ]]; then 
 + wikisp="​https://​en.wikipedia.org/​wiki/​$gen"​ 
 + else 
 + wikisp="​https://​en.wikipedia.org/​wiki/​$gen $spe"​ 
 + fi 
 + 
 + json="​$json{"​ 
 + json="​$json \"​qualis\":​\"​$co\","​ 
 + json="​$json \"​imperium\":​\"​$imp\","​ 
 + json="​$json \"​regnum\":​\"​$reg\","​ 
 + json="​$json \"​phylum\":​\"​$phy\","​ 
 + json="​$json \"​classis\":​\"​$cla\","​ 
 + json="​$json \"​ordo\":​\"​$ord\","​ 
 + json="​$json \"​familia\":​\"​$fam\","​ 
 + json="​$json \"​genus\":​\"​$gen\","​ 
 + json="​$json \"​specie\":​\"​$spe\","​ 
 + json="​$json \"​locus\":​\"​$kde\","​ 
 + json="​$json \"​x\":​\"​$kdex\","​ 
 + json="​$json \"​y\":​\"​$kdey\","​ 
 + json="​$json \"​locplain\":​\"​$loc\","​ 
 + json="​$json \"​depictio\":​\"​$des\","​ 
 + json="​$json \"​quando\":​\"​$kdy\","​ 
 + json="​$json \"​obr\":​\"​$obr\","​ 
 + json="​$json \"​micro\":​\"​$skop\","​ 
 + json="​$json \"​microtyp\":​\"​$skop_typ\","​ 
 + json="​$json \"​vid\":​\"​$vid\","​ 
 + json="​$json \"​bio\":​\"​$bio\","​ 
 + json="​$json \"​amp\":​\"​$eng\","​ 
 + json="​$json \"​spec\":​\"​$obs\","​ 
 + json="​$json \"​detid\":​\"​$detid\","​ 
 + json="​$json \"​lnk\":​\"​$lnk\""​ # Lastone without ','​ 
 + json="​$json }," 
 + 
 + 
 + # Generate detail page 
 + detid=$(echo "​brmlab$co$obr$kde$kdy"​ | md5sum | grep -oe '​[a-zA-Z0-9]*'​) 
 + detpg="<​html><​head>"​ 
 + detpg="​$detpg<​meta http-equiv='​Content-Type'​ content='​text/​html;​ charset=utf-8'>"​ 
 + detpg="​$detpg<​link rel='​stylesheet'​ href='​../​style.css'​ type='​text/​css'>"​ 
 + detpg="​$detpg<​title>​Brmlab - BioOSM $co $kde</​title>"​ 
 + detpg="​$detpg</​head><​body>"​ 
 + detpg="​$detpg<​table class='​dettbl'><​tr>"​ 
 + detpg="​$detpg<​td><​h1>​$co (<a href='​$wikisp'​ target='​_blank'>​wiki</​a>​)</​h1>"​ 
 + if [[ "​$imp"​ != ""​ ]]; then 
 + detpg="​$detpg<​b>​Imperium:</​b>​ <a href='​https://​en.wikipedia.org/​wiki/​$imp'​ target='​_blank'>​$imp</​a><​br>"​ 
 + fi 
 + if [[ "​$reg"​ != ""​ ]]; then 
 + detpg="​$detpg<​b>​Regnum:</​b>​ <a href='​https://​en.wikipedia.org/​wiki/​$reg'​ target='​_blank'>​$reg</​a><​br>"​ 
 + fi 
 + if [[ "​$phy"​ != ""​ ]]; then 
 + detpg="​$detpg<​b>​Phylum:</​b>​ <a href='​https://​en.wikipedia.org/​wiki/​$phy'​ target='​_blank'>​$phy</​a><​br>"​ 
 + fi 
 + if [[ "​$cla"​ != ""​ ]]; then 
 + detpg="​$detpg<​b>​Classis:</​b>​ <a href='​https://​en.wikipedia.org/​wiki/​$cla'​ target='​_blank'>​$cla</​a><​br>"​ 
 + fi 
 + if [[ "​$ord"​ != ""​ ]]; then 
 + detpg="​$detpg<​b>​Ordo:</​b>​ <a href='​https://​en.wikipedia.org/​wiki/​$ord'​ target='​_blank'>​$ord</​a><​br>"​ 
 + fi 
 + if [[ "​$fam"​ != ""​ ]]; then 
 + detpg="​$detpg<​b>​Familia:</​b>​ <a href='​https://​en.wikipedia.org/​wiki/​$fam'​ target='​_blank'>​$fam</​a><​br>"​ 
 + fi 
 + if [[ "​$gen"​ != ""​ ]]; then 
 + detpg="​$detpg<​b>​Genus:</​b>​ <a href='​https://​en.wikipedia.org/​wiki/​$gen'​ target='​_blank'>​$gen</​a><​br>"​ 
 + fi 
 + if [[ "​$spe"​ != ""​ ]]; then 
 + detpg="​$detpg<​b>​Specie:</​b>​ <a href='​$wikisp'​ target='​_blank'>​$spe</​a><​br>"​ 
 + fi 
 + detpg="​$detpg<​br>"​ 
 + if [[ "​$kdy"​ != ""​ ]]; then 
 + detpg="​$detpg<​b>​Quando:</​b>​ $kdy<​br>"​ 
 + fi 
 + if [[ "​$lnk"​ != ""​ ]]; then 
 + loc="<​a href=\"​$lnk\"​ target=\"​_blank\">​$loc</​a>"​ # Yes, escaped " 
 + fi 
 + detpg="​$detpg<​b>​Locus:</​b>​ $kde ($loc)<​br>"​ 
 + if [[ "​$obs"​ != ""​ ]]; then 
 + detpg="​$detpg<​b>​Spectator:</​b>​ $obs<​br>"​ 
 + fi 
 + if [[ "​$bio"​ != ""​ ]]; then 
 + detpg="​$detpg<​b>​Biotope:</​b>​ $bio<​br>"​ 
 + fi 
 + detpg="​$detpg<​br>"​ 
 + if [[ "​$skop"​ != ""​ ]]; then 
 + detpg="​$detpg<​b>​Microscopium:</​b>​ $skop ($skop_typ)<​br>"​ 
 + fi 
 + if [[ "​$eng"​ != ""​ ]]; then 
 + detpg="​$detpg<​b>​Amplificatio:</​b>​ $eng<​br>"​ 
 + fi 
 + detpg="​$detpg<​br>"​ 
 + if [[ "​$des"​ != ""​ ]]; then 
 + detpg="​$detpg<​b>​Depictio:</​b>​ $des<​br>"​ 
 + fi 
 + if [[ "​$vid"​ != ""​ ]]; then 
 + detpg="​$detpg<​b>​Video:</​b>​ <a href=\"​$vid\"​ target=\"​_blank\">​$vid</​a><​br>"​ 
 + fi 
 + detpg="​$detpg</​td><​td style='​min-width:​66%'>"​ 
 + if [[ "​$obr"​ != ""​ ]]; then 
 + detpg="​$detpg<​a href=\"​../​img/​$obr\"><​img src=\"​../​img/​$obr\"​ alt=\"​$co\"​ class='​detimg'></​a>"​ 
 + else 
 + if [[ "​$vid"​ != ""​ ]]; then 
 + detyt=$(echo "​$vid"​ | sed -e '​s/​youtube.com\/​watch?​v=/​youtube.com\/​embed\//​g'​) 
 + detpg="​$detpg<​iframe class='​detvid'​ src='​$detyt'​ frameborder='​0'​ allow='​encrypted-media'​ allowfullscreen></​iframe>"​ 
 + else 
 + detpg="​$detpg<​img src=\"​../​$3\"​ alt=\"​video\"​ class='​detimg'>"​ 
 + fi 
 + fi 
 + detpg="​$detpg</​td></​tr></​table>"​ 
 + detpg="​$detpg</​body></​html>"​ 
 + echo "​$detpg"​ > "​./​det/​$detid.htm" 
 + 
 + # Plain log of entries 
 + datelog="​$datelog $kdy $kde <a href='​./​det/​$detid.htm'​ target='​_blank'>​$co</​a><​br>​\n"​ 
 + 
 + >&​2 echo "$co $obs"​ 
 + 
 + ox="​$kdex"​ 
 + oy="​$kdey"​ 
 + 
 + i=$(($i+1)) 
 + 
 + done <<<​ $(echo "​$1"​) # Zere parametr spaget, nikoli $1 scriptu !!! 
 + echo "​$json{}]}"​ | sed -e "​s/​^var data='//​g"​ > "​./​bioosm.json"​ 
 + echo "​$json{}]}'"​ 
 + 
 +} # KONEC FCE SPAGETY 
 + 
  
 # Parse Tellico file to list of entries # Parse Tellico file to list of entries
Line 122: Line 364:
 # Sorted unique Kingdoms (to be passed as selection criteria) # Sorted unique Kingdoms (to be passed as selection criteria)
 kingdoms=$(echo "​$praseTC"​ | grep -oe ' <​new-field-4>​.*</​new-field-4>​ ' | sed -E 's/( )*<​(\/​)?​new-field-4>​( )*//g' | sort | uniq) kingdoms=$(echo "​$praseTC"​ | grep -oe ' <​new-field-4>​.*</​new-field-4>​ ' | sed -E 's/( )*<​(\/​)?​new-field-4>​( )*//g' | sort | uniq)
- 
  
 echo '<​!DOCTYPE html>'​ echo '<​!DOCTYPE html>'​
Line 128: Line 369:
 echo '<​head>'​ echo '<​head>'​
 echo '​ <​meta http-equiv="​Content-Type"​ content="​text/​html;​ charset=utf-8">'​ echo '​ <​meta http-equiv="​Content-Type"​ content="​text/​html;​ charset=utf-8">'​
-echo '​ <​title>​BioOSM</​title>'​+echo '​ <​title>​brmlab - BioOSM</​title>'​
 echo '​ <​link rel="​stylesheet"​ href="​./​style.css"​ type="​text/​css">'​ echo '​ <​link rel="​stylesheet"​ href="​./​style.css"​ type="​text/​css">'​
 +echo '​ <​link rel="​favicon"​ href="​./'​$ICON_biohazard'">'​
 echo '​ <​script src="​./​OpenLayers.js"></​script>'​ echo '​ <​script src="​./​OpenLayers.js"></​script>'​
 echo '</​head>'​ echo '</​head>'​
 +echo '<​body>'​
 +# Generate select
 +echo "<​div id='​plainlog'><​b><​a href='​./​plainlog.htm'>​Plaintext log</​a></​b></​div>"​
 +echo "<​h1 id='​title'>​BioOSM - arma biologica in tuis vicinia</​h1>"​
 +ksel="<​select id='​reg'​ onChange='​genphy()'>"​
 +ksel="​$ksel<​option value='​ALL'​ selected>​ALL</​option>"​
 +while IFS=''​ read -r king || [[ -n "​$king"​ ]]; do
 + ksel="​$ksel<​option value='"​$king"'>​$king</​option>"​
 +done <<<​ $(echo "​$kingdoms"​)
 +ksel="​$ksel</​select>"​
 +echo "​Regnum:​ $ksel "
  
-echo "<body>"​ +echo "Phylum: ​<select id='​phy'​ onChange='​gencla()'><​option>​ALL</​option></​select> " 
- echo "<h1 id='title'>BioOSM - armis biologica in tuis vicinia</h1>"​ +echo "Classis: ​<select ​id='cla' onChange='​genord()'><​option>​ALL</option></​select> " 
- +echo "Ordo: <select id='ord' onChange='​genfam()'><​option>​ALL</​option></​select> " 
- # Generate select +echo "Familia: ​<select id='fam' ​onChange='​gengen()'><​option>​ALL</​option></​select> " 
- ksel="<​select id='kin' onChange='​kinchange()'>"​ +echo "​Genus:​ <select id='gen' ​onChange='genspe()'><​option>​ALL</option></​select>"​ 
- ksel="$ksel<option value='ALL' ​selected>​ALL</​option>"​ +echo "Specie: <select id='​spe'​ onChange='​armageddon()'><​option>​ALL</​option>​</​select>"​ 
- while IFS='' ​read -r king || [[ -n "​$king"​ ]]; do +echo "<​br><​input type='​button'​ value='​Platyhelminthes'​ onClick='​plostenkoidy()'>​
- ksel="​$ksel<​option value='"​$king"​'>$king</​option>"​ +#echo "<​input type='​button'​ value='​Bugs' onClick='​buggy()'>​
- done <<<​ $(echo "$kingdoms"​) +echo "<​br><​br><​div id='​map'​ class='​smallmap'></​div>"​ 
- ksel="$ksel</​select>"​ +echo "<​br><​p>​Welcome! You can download the <a href='​./​bioosm.json'​ target='​_blank'>​source data as JSON file</​a><​br>"​ 
- echo "Regnum: $ksel | +echo "This site is owned by members of the <a href='​https://​brmlab.cz'​ target='​_blank'>​hackerspace brmlab</​a>​. See our wiki page for <a href='​https://​brmlab.cz/​project/​bioosm/​start'​ target='​_blank'>​details and contact info</​a><​br>​License:​ CC-BY-SA</​p>"
- echo "<​input type='​button'​ value='​Plostenkoidy' onClick='​plostenkoid()'><​br><​br>​+
- +
-  echo "<div id='​map'​ class='​smallmap'></​div>"​+
 echo "</​body>"​ echo "</​body>"​
  
-echo '<​script>​+echo "<​script>​"
 echo 'map = new OpenLayers.Map("​map"​);'​ echo 'map = new OpenLayers.Map("​map"​);'​
 echo '​map.addLayer(new OpenLayers.Layer.OSM());'​ echo '​map.addLayer(new OpenLayers.Layer.OSM());'​
Line 166: Line 415:
 echo ' new OpenLayers.Geometry.Point(14.41876,​ 50.10554).transform(epsg4326,​ projectTo),'​ echo ' new OpenLayers.Geometry.Point(14.41876,​ 50.10554).transform(epsg4326,​ projectTo),'​
 echo '​ {description:"​Atomovy atol Brmkini"​} ,' echo '​ {description:"​Atomovy atol Brmkini"​} ,'
-echo '​ {externalGraphic:​ "​./​biohazard.svg",​ graphicHeight:​24, graphicWidth:​24, graphicXOffset:​-12, graphicYOffset:​-12},'+echo '​ {externalGraphic:​ "​./​biohazard.svg",​ graphicHeight:​8, graphicWidth:​8, graphicXOffset:​-4, graphicYOffset:​-4},'
 echo '​);'​ echo '​);'​
 echo '​vectorLayer.addFeatures(atol);'​ echo '​vectorLayer.addFeatures(atol);'​
Line 172: Line 421:
 echo "​map.addLayer(vectorLayer);"​ echo "​map.addLayer(vectorLayer);"​
  
 +spagety "​$praseTC"​ "​ALL"​ "​$ICON_biohazard"​
  
 +echo '</​script>'​
 +echo '<​script src="​./​bioosm.js"></​script>'​ # Must be after JSON
 +echo "</​html>"​
  
-i=1 GLOBAL increment must persist multiple spagety() calls; incremented to infinity +Create plaintext log 
-# Core function generating entries matching selection criteria (ie Kingdom) +dateloghtm="<​html><​head>"​ 
-# !!! BEZ ODSAZENI !!! +dateloghtm="​$dateloghtm<​meta http-equiv='​Content-Type'​ content='​text/​html;​ charset=utf-8'>"​ 
-$list of entries +dateloghtm="​$dateloghtm<​link rel='​stylesheet'​ href='​./​style.css'​ type='​text/​css'>"​ 
-$layer name +dateloghtm="​$dateloghtm<​title>​Brmlab - BioOSM plaintext log</​title>"​ 
-$icon of the points +dateloghtm="​$dateloghtm</​head><​body>"​ 
-function spagety ​() {+datelogsort=$(echo -e "​$datelog"​ | sort -r | uniq) 
 +dateloghtm="​$dateloghtm $datelogsort"​ 
 +dateloghtm="​$dateloghtm</​body></​html>"​ 
 +echo "​$dateloghtm"​ > "​./​plainlog.htm"​ 
 +</​code>​
  
-bylo=""​ # Minula pozice +==== bioosm.js ====
-sam=""​ # HTML samostatneho zaznamu +
-osam=""​ # predchozi $sam +
-spoj=""​ # HTML had z popisu stejnych pozic +
-ospoj=""​ # Predchozi $spoj +
-ox=""​ # Old X +
-oy=""​ # Old Y+
  
-while IFS=''​ read -r radek || [[ -n "​$radek"​ ]]; do+<code javascript bioosm.js>​ 
 +var blob=JSON.parse(data) 
 +var arma=blob.arma
  
- co=$(echo "​$radek"​ | grep -oe ' <​title>​.*</​title>​ ' | sed -E 's/( )*<​(\/​)?​title>​( )*//​g'​) +var vectorLayerDynamic ​new OpenLayers.Layer.Vector('Overlay',{attribution:​'<a href="http://brmlab.cz">Brmlab</a>'}); 
- obr=$(echo "​$radek"​ | grep -oe ' <​image>​.*</​image>​ ' | sed -E 's/)*<​(\/​)?​image>​( )*//g' ​| grep -oPe '[^/​]*$'​) +map.addLayer(vectorLayerDynamic);
- kde=$(echo "​$radek"​ | grep -oe '<​locality>​.*</​locality>'​ | grep -oPe '​[0-9]{2}\.[0-9]{1,10}[, ]*[0-9]{2}\.[0-9]{1,​10}'​) +
- kdex=$(echo "​$kde"​ | grep -oPe '​[0-9]{2}\.[0-9]{1,​10}$'​) +
- kdey=$(echo "​$kde"​ | grep -oPe '​^[0-9]{2}\.[0-9]{1,​10}'​) +
- kdy=$(echo "​$radek"​ | grep -oe ' <taken-date>​.*</​taken-date>​ ' | sed -E 's/( )*<​(\/​)?​taken-date>​( )*//​g'​) +
- skop_typ=$(echo ​"$radek"​ | grep -oe ' <​new-field-1>​.*<​/new-field-1>​ ' | sed -E 's/( )*<​(\/​)?​new-field-1>​( )*//​g'​) +
- skop=$(echo "​$radek"​ | grep -oe ' <​microscope>​.*</​microscope>​ ' | sed -E 's/( )*<​(\/​)?​microscope>​( )*//​g'​) +
- imp=$(echo ​"$radek"​ | grep -oe ' <​new-field-3>.*</new-field-3> ' ​| sed -E 's/( )*<​(\/​)?​new-field-3>​( )*//g'+
- reg=$(echo "​$radek"​ | grep -oe ' <​new-field-4>​.*</​new-field-4>​ ' | sed -E 's/( )*<​(\/​)?​new-field-4>​( )*//​g'​) +
- phy=$(echo "​$radek"​ | grep -oe ' <​phylum>​.*</​phylum>​ ' | sed -E 's/( )*<​(\/​)?​phylum>​( )*//​g'​) +
- cla=$(echo "​$radek"​ | grep -oe ' <​class>​.*</​class>​ ' | sed -E 's/( )*<​(\/​)?​class>​( )*//​g'​) +
- ord=$(echo "​$radek"​ | grep -oe ' <​order>​.*</​order>​ ' | sed -E 's/( )*<​(\/​)?​order>​( )*//​g'​) +
- fam=$(echo "​$radek"​ | grep -oe ' <​family>​.*</​family>​ ' | sed -E 's/( )*<​(\/​)?​family>​( )*//​g'​) +
- gen=$(echo "​$radek"​ | grep -oe ' <​genus>​.*</​genus>​ ' | sed -E 's/( )*<​(\/​)?​genus( )*>//​g'​) +
- spe=$(echo "​$radek"​ | grep -oe ' <​species>​.*</​species>​ ' | sed -E 's/( )*<​(\/​)?​species>​( )*//​g'​) +
- loc=$(echo "​$radek"​ | grep -oe ' <​locality---plaintext>​.*</​locality---plaintext>​ ' | sed -E 's/( )*<​(\/​)?​locality---plaintext>​( )*//​g'​) +
- des=$(echo "​$radek"​ | grep -oe ' <​description>​.*</​description>​ ' | sed -E 's/( )*<​(\/​)?​description>​( )*//​g'​) +
- vid=$(echo "​$radek"​ | grep -oe ' <​videolink>​.*</​videolink>​ ' | sed -E 's/( )*<​(\/​)?​videolink>​( )*//​g'​) +
- bio=$(echo "​$radek"​ | grep -oe ' <​biotope>​.*</​biotope>​ ' | sed -E 's/( )*<​(\/​)?​biotope>​( )*//​g'​) +
- eng=$(echo "​$radek"​ | grep -oe ' <​enlargement>​.*</​enlargement>​ ' | sed -E 's/( )*<​(\/​)?​enlargement>​( )*//​g'​) +
- obs=$(echo "​$radek"​ | grep -oe ' <​observer>​.*</​observer>​ ' | sed -E 's/( )*<​(\/​)?​observer>​( )*//​g'​)+
  
 +var regsel=document.getElementById("​reg"​)
 +var physel=document.getElementById("​phy"​)
 +var clasel=document.getElementById("​cla"​)
 +var ordsel=document.getElementById("​ord"​)
 +var famsel=document.getElementById("​fam"​)
 +var gensel=document.getElementById("​gen"​)
 +var spesel=document.getElementById("​spe"​)
  
- if [[ "$kdex" = "" ​]]; then +var ICON_animalia="animalia.png" 
- >&2 echo $(echo "​$radek" ​| grep -oe '<​locality>​.*</​locality>'​) " $co+var ICON_bacteria="bacteria.png
- continue;​ +var ICON_fungi="fungi.png
- fi +var ICON_chromista="chromista.png" 
- zkurvenetellico=$(echo ​"$obr" | grep -oe '\.[a-zA-Z]*$'​) +var ICON_plantae="plantae.svg" 
- if [[ "$zkurvenetellico" = ".jpeg" ​]]; then +var ICON_plostenkoid="plostenkoid.png
- >&2 echo "$obr $co+var ICON_protista="protista.png
- continue;​ +var ICON_biohazard="​biohazard.svg"​
- fi+
  
- +// Return icon by Regnum 
- # Generate detail page +function geticon ​(a,i
- detid=$(echo "​brmlab$co$obr$kde$kdy"​ | md5sum | grep -oe '[a-zA-Z0-9]*'​+{ 
- detpg="<​html><​head>"​ + var r=""​ 
- detpg="$detpg<​meta http-equiv='​Content-Type'​ content='​text/​html;​ charset=utf-8'>​+ if(document.getElementById("​reg"​).value!="ALL") 
- detpg="​$detpg<​link rel='​stylesheet'​ href='../​style.css'​ type='​text/​css'>"​ + r=document.getElementById("reg").value
- detpg="​$detpg<​title>​Brmlab - BioOSM $co $kde</​title>"​ +
- detpg="​$detpg</​head><​body>"​ +
- detpg="​$detpg<​table class='​dettbl'><​tr>"​ +
- detpg="​$detpg<​td><​h1>​$co</​h1>"​ +
- if [[ "​$imp"​ != ""​ ]]; then +
- detpg="​$detpg<​b>​Imperium:</​b>​ $imp<​br>"​ +
- fi +
- if [[ "$reg" ​!= ""​ ]]; then +
- detpg="​$detpg<​b>​Regnum:</​b>​ $reg<​br>"​ +
- fi +
- if [[ "​$phy"​ != ""​ ]]; then +
- detpg="​$detpg<​b>​Phylum:</​b>​ $phy<​br>"​ +
- fi +
- if [[ "​$cla"​ != ""​ ]]; then +
- detpg="​$detpg<​b>​Classis:</​b>​ $cla<​br>"​ +
- fi +
- if [[ "​$ord"​ != ""​ ]]; then +
- detpg="​$detpg<​b>​Ordo:</​b>​ $ord<​br>"​ +
- fi +
- if [[ "​$fam"​ != ""​ ]]; then +
- detpg="​$detpg<​b>​Familia:</​b>​ $fam<​br>"​ +
- fi +
- if [[ "​$gen"​ != ""​ ]]; then +
- detpg="​$detpg<​b>​Genus:</​b>​ $gen<​br>"​ +
- fi +
- if [[ "​$spe"​ != ""​ ]]; then +
- detpg="​$detpg<​b>​Specie:</​b>​ $spe<​br>"​ +
- fi +
- detpg="​$detpg<​br>"​ +
- if [[ "​$kdy"​ != ""​ ]]; then +
- detpg="​$detpg<​b>​Quando:</​b>​ $kdy<​br>"​ +
- fi +
- detpg="​$detpg<​b>​Locus:</​b>​ $kde ($loc)<​br>"​ +
- if [[ "​$obs" ​!= "" ​]]; then +
- detpg="​$detpg<​b>​Spectator:</​b>​ $obs<​br>"​ +
- fi +
- if [[ "​$bio"​ != ""​ ]]; then +
- detpg="​$detpg<​b>​Biotope:</​b>​ $bio<​br>"​ +
- fi +
- detpg="​$detpg<​br>"​ +
- if [[ "​$skop"​ != ""​ ]]; then +
- detpg="​$detpg<​b>​Microscopium:</​b>​ $skop ($skop_typ)<​br>"​ +
- fi +
- if [[ "​$eng"​ != ""​ ]]; then +
- detpg="​$detpg<​b>​Amplificatio:</​b>​ $eng<​br>"​ +
- fi +
- detpg="​$detpg<​br>"​ +
- if [[ "​$des"​ != ""​ ]]; then +
- detpg="​$detpg<​b>​Depictio:</​b>​ $des<​br>"​ +
- fi +
- if [[ "​$vid"​ != ""​ ]]; then +
- detpg="​$detpg<​b>​Video:</​b>​ <a href=\"​$vid\"​ target=\"​_blank\">​$vid</​a><​br>"​ +
- fi +
- detpg="​$detpg</​td><​td>"​ +
- if [[ "​$obr"​ != ""​ ]]; then +
- detpg="​$detpg<​a href=\"​../img/$obr\"><img src=\"../​img/​$obr\"​ alt=\"​$co\"​ class='​detimg'></​a>"​+
  else  else
- if [[ "​$vid"​ !""​ ]]; then +
- detyt=$(echo "​$vid"​ | sed -'​s/​youtube.com\/​watch?​v=/youtube.com\/​embed\//​g'​+ r=a[i].regnum 
- detpg="$detpg<​iframe class='​detvid'​ src='​$detyt'​ frameborder='​0'​ allow='​encrypted-media'​ allowfullscreen></​iframe>​+ for(var e=i;e>=0 && a[e].locus==a[i].locus;e--) 
- else + if(a[e].regnum!=a[i].regnum
- detpg="​$detpg<​img src=\"​../​$3\"​ alt=\"​video\"​ class='​detimg'>"​ +
- fi + r="ALL"; 
- fi + break; 
- detpg="​$detpg</​td></​tr></​table>"​ + } 
- detpg="​$detpg</​body></​html>"​ + }
- echo "​$detpg"​ > "​./​det/​$detid.htm"​+
  
- # Pokracujem v hadovi + switch (r) 
- if [[ "​$kde"​ = "​$bylo"​ ]]; then + { 
- sam="";​ + case "Animalia"
- spoj="$spoj<​tr><​td><​a href=\"​./​det/​$detid.htm\"​ target=\"​_blank\">​+ return ICON_animalia
- if [[ "$obr" ​!= ""​ ]]; then + case "Bacteria"
- spoj="​$spoj<​img src=\"​./​simg/​$obr\"​ class=\"​hadimg\"></​a></​td>"​ + return ICON_bacteria;​ 
- else + case "Fungi": 
- spoj="$spoj<​img src=\"​./​$3\"​ class=\"​hadimg\"></​a></​td>​+ return ICON_fungi; 
- fi + case "Chromista": 
- spoj="$spoj<​td>​$co<​br>​$kdy</​td>​+ return ICON_chromista;​ 
- spoj="​$spoj</​tr>"​ + case "Plantae": 
- ox="$kdex+ return ICON_plantae;​ 
- oy="​$kdey"​ + case "Protista"
- continue; + return ICON_protista;​ 
- fi+ default: 
 + return ICON_biohazard 
 + } 
 +}
  
- # Bud prvni zaznam, nebo zmena pozice+function genphy() { 
 + physel.innerHTML="<​option>​ALL</​option>"​ 
 + clasel.innerHTML="<​option>​ALL</​option>"​ 
 + ordsel.innerHTML="<​option>​ALL</​option>"​ 
 + famsel.innerHTML="<​option>​ALL</​option>"​ 
 + gensel.innerHTML="<​option>​ALL</​option>"​ 
 + spesel.innerHTML="<​option>​ALL</​option>"​
  
- # Predchozi pozice jen zaznam? + var phyarr=[] 
- if [[ "​$sam" ​!= "" ​]]; then + for (var i=0;​i<​arma.length-1;i++) 
- echo "var n$i = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point($ox,​$oy).transform(epsg4326,​projectTo),​{description:'"​$sam"'​},​{externalGraphic:'​./​$3',​graphicHeight:​24,​graphicWidth:​24,​graphicXOffset:​-12,​graphicYOffset:​-12});" +
- echo "​$2.addFeatures(n$i);" + if(regsel.value==arma[i].regnum && arma[i].phynum!=""​) 
- spoj=""​ + phyarr.push(arma[i].phylum) 
- sam=""​ +
- fi # ELSE vytvori prazdny radek + phyarr.sort() 
- # Predchozi pozice vic zaznamu? + for (var i=0;​i<​phyarr.length;i++) 
- if [[ "​$spoj" ​!= "" ​]]; then + { 
- echo "var n$i = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point($ox,​$oy).transform(epsg4326,​projectTo),​{description:'<​table class=\"​hadtbl\">"​$spoj"</table>'​},​{externalGraphic:'​./​$3',​graphicHeight:​24,​graphicWidth:​24,​graphicXOffset:​-12,​graphicYOffset:​-12});​+ if(i==0
-    echo "​$2.addFeatures(n$i);" +
- spoj=""​ + physel.innerHTML+="<​option>​"+phyarr[0]+"</​option>​
- sam=""​ + continue 
- fi+ } 
 + if(phyarr[i]!=phyarr[i-1]) 
 + physel.innerHTML+="<option>"+phyarr[i]+"</option>"​ 
 +
 + armageddon() // Populate the map with monsters... 
 +}
  
- bylo="​$kde"​ +function gencla() { 
- spoj="<tr><td><a href=\"​./det/​$detid.htm\"​ target=\"​_blank\"​>"​ + clasel.innerHTML="<option>ALL</option>"​ 
- if [[ "​$obr"​ != ""​ ]]; then + ordsel.innerHTML="<option>ALL</option>"​ 
- spoj="​$spoj<​img src=\"./​simg/​$obr\"​ class=\"hadimg\">​</a></td>"​ + famsel.innerHTML="<option>ALL</option>"​ 
- else + gensel.innerHTML="<option>ALL</option>"​ 
- spoj="​$spoj<​img src=\"./$3\" class=\"​hadimg\"</a></td>"​ + spesel.innerHTML="<​option>​ALL</option>"
- fi +
- spoj="$spoj<td>$co<​br>​$kdy</td>"​ +
- spoj="$spoj</tr>"+
  
- sam="<a href=\"​./​det/​$detid.htm\"​ target=\"​_blank\"><​img src=\"​./​simg/​$obr\"​ alt=\"​$co\"​ class=\"​buttimg\"></​a>"​ + var claarr=[] 
- sam="​$sam<​br><​span class=\"​butttext\"><​b>​Qualis:</​b>​ $co<​br>"​ + for (var i=0;i<arma.length-1;​i++) 
- if [[ "​$imp"​ != "" ​]]; then + { 
- sam="$sam<b>​Imperium:</​b>​ $imp<​br>"​ + if(physel.value==arma[i].phylum && arma.classis!=""​) 
- fi + claarr.push(arma[i].classis) 
- if [[ "​$reg"​ !""​ ]]; then + } 
- sam="​$sam<​b>​Regnum:</​b>​ $reg<​br>"​ + claarr.sort() 
- fi + for (var i=0;i<claarr.length;i++) 
- if [[ "​$phy"​ != "" ​]]; then + { 
- sam="​$sam<​b>​Phylum:</​b>​ $phy<​br>"​ + if(i==0) 
- fi + { 
- if [[ "​$cla" ​!= "" ​]]; then + clasel.innerHTML+="<option>"+claarr[0]+"</option>"​ 
- sam="​$sam<​b>​Classis:</​b>​ $cla<​br>"​ + continue 
- fi + } 
- if [[ "​$ord"​ != "" ​]]; then + if(claarr[i]!=claarr[i-1]) 
- sam="​$sam<​b>​Ordo:</​b>​ $ord<​br>"​ + clasel.innerHTML+="<option>"+claarr[i]+"</option>"​ 
- fi + } 
- if [[ "​$fam"​ !""​ ]]then + armageddon() ​// Populate the map with monsters... 
- sam="​$sam<b>​Familia:</​b>​ $fam<​br>"​ +}
- fi +
- if [[ "​$gen"​ != ""​ ]]then +
- sam="​$sam<​b>​Genus:</​b>​ $gen<​br>"​ +
- fi +
- if [[ "​$spe"​ != ""​ ]]; then +
- sam="​$sam<​b>​Specie:</​b>​ $spe<​br>"​ +
- fi +
- if [[ "​$bio"​ !""​ ]]; then +
- sam="​$sam<​b>​Biotope:</​b>​ $bio<​br>"​ +
- fi +
- if [[ "​$kdy"​ != ""​ ]]; then +
- sam="​$sam<​b>​Quando:</​b>​ $kdy<​br>"​ +
- fi +
- sam="$sam<b>​Locus:</​b>​ $kde ($loc)<​br>" +
- if [[ "​$obs"​ != "" ​]]; then +
- sam="$sam<​b>​Spectator:​</b> $obs<br>"​ +
- fi +
- if [[ "​$skop"​ != ""​ ]]; then +
- sam="​$sam<​b>​Microscopium:</​b>​ $skop ($skop_typ)<​br>"​ +
- fi +
- if [[ "​$eng" ​!= "" ​]]; then +
- sam="$sam<b>​Amplificatio:</​b>​ $eng<br>" +
- fi +
-# if [[ "​$des"​ != "" ​]]; then +
-# sam="$sam<​b>​Depictio:​</b> $des<br>"​ +
-# fi +
- if [[ "​$vid"​ != ""​ ]]; then +
- sam="​$sam<​b>​Video:<​/b> <a href=\"​$vid\"​ target=\"​_blank\">​$vid<​/a><​br>"​ +
- fi +
- sam="​$sam</​span>"​+
  
- #>&2 echo "$sam+function genord() { 
- >&2 echo "$co $obs"+ ordsel.innerHTML="<​option>​ALL</​option>" 
 + famsel.innerHTML="<​option>​ALL</​option>​
 + gensel.innerHTML="<​option>ALL</​option>"​ 
 + spesel.innerHTML="<​option>​ALL</​option>"​ 
 + var ordarr=[] 
 + for (var i=0;​i<​arma.length-1;​i++) 
 +
 + if(clasel.value==arma[i].classis ​&& arma[i].ordo!=""​
 + ordarr.push(arma[i].ordo) 
 +
 + ordarr.sort() 
 + for (var i=0;​i<​ordarr.length;​i++) 
 +
 + if(i==0) 
 +
 + ordsel.innerHTML+="<​option>"​+ordarr[0]+"</​option>"​ 
 + continue 
 +
 + if(ordarr[i]!=ordarr[i-1]) 
 + ordsel.innerHTML+="<​option>"​+ordarr[i]+"</​option>"​ 
 +
 + armageddon() // Populate the map with monsters... 
 +}
  
 +function genfam() {
 + famsel.innerHTML="<​option>​ALL</​option>"​
 + gensel.innerHTML="<​option>​ALL</​option>"​
 + spesel.innerHTML="<​option>​ALL</​option>"​
 + var famarr=[]
 + for (var i=0;​i<​arma.length-1;​i++)
 + {
 + if(ordsel.value==arma[i].ordo && arma[i].familia!=""​)
 + famarr.push(arma[i].familia)
 + }
 + famarr.sort()
 + for (var i=0;​i<​famarr.length;​i++)
 + {
 + if(i==0)
 + {
 + famsel.innerHTML+="<​option>"​+famarr[0]+"</​option>"​
 + continue
 + }
 + if(famarr[i]!=famarr[i-1])
 + famsel.innerHTML+="<​option>"​+famarr[i]+"</​option>"​
 + }
 + armageddon() // Populate the map with monsters...
 +}
  
- ox="$kdex+function gengen() { 
- oy="$kdey"+ gensel.innerHTML="<​option>​ALL</​option>"​ 
 + spesel.innerHTML="<​option>​ALL</​option>"​ 
 + var genarr=[] 
 + for (var i=0;​i<​arma.length-1;​i++) 
 +
 + if(famsel.value==arma[i].familia && arma[i].genus!=""​) 
 + genarr.push(arma[i].genus) 
 +
 + genarr.sort() 
 + for (var i=0;​i<​genarr.length;​i++) 
 +
 + if(i==0) 
 +
 + gensel.innerHTML+="<​option>​"+genarr[0]+"</​option>"​ 
 + continue 
 +
 + if(genarr[i]!=genarr[i-1]) 
 + gensel.innerHTML+="<​option>"​+genarr[i]+"</​option>"​ 
 +
 + //genspe() // ...and here we go 
 + armageddon() // Populate the map with monsters... 
 +}
  
 +function genspe()
 +{
 + spesel.innerHTML="<​option>​ALL</​option>"​
 + var spearr=[]
 + for (var i=0;​i<​arma.length-1;​i++)
 + {
 + if(gensel.value==arma[i].genus && arma[i].specie!=""​)
 + spearr.push(arma[i].specie)
 + }
 + spearr.sort()
 + for (var i=0;​i<​spearr.length;​i++)
 + {
 + if(i==0)
 + {
 + spesel.innerHTML+="<​option>"​+spearr[0]+"</​option>"​
 + continue
 + }
 + if(spearr[i]!=spearr[i-1])
 + spesel.innerHTML+="<​option>"​+spearr[i]+"</​option>"​
 + }
 + armageddon() // Populate the map with monsters...
 +}
  
- i=$(($i+1))+function armageddon() 
 +
 + var speval=document.getElementById("​spe"​).value 
 + var genval=document.getElementById("​gen"​).value 
 + var famval=document.getElementById("​fam"​).value 
 + var ordval=document.getElementById("​ord"​).value 
 + var claval=document.getElementById("​cla"​).value 
 + var phyval=document.getElementById("​phy"​).value 
 + var regval=document.getElementById("​reg"​).value 
 + var a=[]
  
- # Precti XML, vyfiltruj jen to co ma prijit do mapy serad to dle umisteni + if(speval!="​ALL"​) 
- #  Umisteni je razene kvuli vic vzorkum z jednoho mista+
 + for(var i=0;​i<​arma.length-1;​i++) 
 + if(arma[i].specie==speval && arma[i].genus==genval) // Check genus because of unknown "​sp."​ 
 + a.push(arma[i]) 
 +
 + else if(genval!="​ALL"​) 
 +
 + for(var i=0;​i<​arma.length-1;​i++) 
 + if(arma[i].genus==genval) 
 + a.push(arma[i]) 
 +
 + else if(famval!="​ALL"​) 
 +
 + for(var i=0;​i<​arma.length-1;​i++) 
 + if(arma[i].familia==famval) 
 + a.push(arma[i]) 
 +
 + else if(ordval!="​ALL"​) 
 +
 + for(var i=0;​i<​arma.length-1;​i++) 
 + if(arma[i].ordo==ordval) 
 + a.push(arma[i]) 
 +
 + else if(claval!="​ALL"​) 
 +
 + for(var i=0;​i<​arma.length-1;​i++) 
 + if(arma[i].classis==claval) 
 + a.push(arma[i]) 
 +
 + else if(phyval!="​ALL"​) 
 +
 + for(var i=0;​i<​arma.length-1;​i++) 
 + if(arma[i].phylum==phyval) 
 + a.push(arma[i]) 
 +
 + else if(regval!="​ALL"​) 
 +
 + for(var i=0;​i<​arma.length-1;​i++) 
 + if(arma[i].regnum==regval) 
 + a.push(arma[i]) 
 +
 + else // Regnum: ALL 
 +
 + for(var i=0;​i<​arma.length-1;​i++) 
 + a.push(arma[i]) 
 + }
  
-done <<<​ $(echo "​$1"​# Zere parametr spaget, nikoli $1 scriptu !!!+ icongeddon(a) 
 +}
  
-# Do not forget to print last line when WHILE ends! +function buggy() 
-if ["$sam" = "" ​]]; then +
- sam="<​table style=\"hadtbl\">​$spoj</​table>​+ var p=[] 
-fi + for(var i=0;​i<​arma.length-1;​i++) 
-echo "var n$= new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point($kdex,​$kdey).transform(epsg4326,​projectTo),​{description:'​"$sam"'​},​{externalGraphic:'​./​$3',​graphicHeight:​24,​graphicWidth:​24,​graphicXOffset:​-12,​graphicYOffset:​-12});​+
-echo "$2.addFeatures(n$i);"+ if(arma[i].regnum==""​|| 
 +      ​arma[i].phylum==""​|| 
 +      ​arma[i].classis==""​|| 
 +      arma[i].ordo==""​|| 
 +      ​arma[i].familia=="​"|| 
 +      ​arma[i].genus=="") 
 +   p.push(arma[i]) 
 +
 + icongeddon(p) 
 +}
  
-# KONEC FCE SPAGETY !!!+function plostenkoidy() 
 +
 + var p=[] 
 + for(var i=0;​i<​arma.length-1;​i++) 
 +
 + if(arma[i].phylum=="​Platyhelminthes"​) 
 + p.push(arma[i]) 
 +
 + icongeddon(p) 
 +}
  
-echo "var ALL = new OpenLayers.Layer.Vector('​Overlay',​{attribution:'<​href=\"​http:​//brmlab.cz\">​Brmlab<​/a>'});" +function icongeddon(a
-spagety "​$praseTC"​ "​ALL"​ "​biohazard.svg" +
-echo "map.addLayer(ALL);"+ //alert(a.length) ​// #thingies to show in the map
 + while(map.popups.length) 
 + map.removePopup(map.popups[0]) 
 + vectorLayerDynamic.destroyFeatures()
  
-echo "var laycon ​[vectorLayer,​ALL];​" ​# Layer controls JS array + var bylo="" ​// Minula pozice 
-while IFS=''​ read -r spag || [[ -n "$spag" ]]; do + var sam="" ​// HTML samostatneho zaznamu 
- echo "var $spag new OpenLayers.Layer.Vector('​Overlay',​{attribution:'<​a href=\"http://brmlab.cz\">​Brmlab</​a>'​});"​ + var osam=""​ // predchozi ​$sam 
- spg=$(echo ​"$praseTC" ​| grep "<​new-field-4>​$spag<​/new-field-4>"​) + var spoj="" ​// HTML had z popisu stejnych pozic 
- case "$spag" in + var ospoj="" ​// Predchozi spoj 
- "Animalia") + var ox="" ​// Old X 
- icon="animalia.png";; + var oy="" ​// Old Y 
- "Bacteria") + var datelog="" ​// Entries sorted by date for plaintext log 
- icon="bacteria.png";; + var i=0 // Iterator over a[] (needed after FOR
- "Fungi") + var n=[] // New points in the layer 
- icon="​fungi.png";;​ + var muchicons=0 // How much Regnum'​s?​ 
- "​Chromista"​+ var samicon=ICON_biohazard // Icon 
- icon="​chromista.png";;​ + var spojicon=ICON_biohazard // Icon
- "​Plantae"​) +
- icon="​plantae.svg";;​ +
- "​Protista"​) +
- icon="​protista.png";;​ +
- *) +
- icon="​biohazard.svg";;​ +
- esac+
  
- spagety ​"$spg" "$spag" "$icon+ for(;​i<​a.length;​i++) // -1 fix for last empty entry 
- echo "laycon.push($spag);+
-done <<< ​$(echo ​"$kingdoms")+ // Pokracujem v hadovi 
 + if(a[i].locus == bylo) 
 +
 + sam=""​
 + spoj+="<​tr><​td>​
 + spoj+='<​a href="./​det/'​+a[i].detid+'​.htm"​ target="​_blank">'​ 
 + if(a[i].obr != ""​) 
 + spoj+='<​img src="./​simg/'​+a[i].obr+'"​ class="​hadimg"></​a></​td>'​ 
 + else 
 + spoj+='​<img src=./"'​+ICON_biohazard+'"​ class="​hadimg">​</a></​td>'​ 
 + spoj+="<td>"+a[i].qualis+"<​br>"​+a[i].quando+"</​td>"​ 
 + spoj+="</​tr>"​ 
 + ox=a[i].x 
 + oy=a[i].y 
 + continue;​ 
 + }
  
-# Plostenky + if(a[i].specie=="sp.") 
-spg=$(echo ​"$praseTC"​ | grep "<​phylum>​Platyhelminthes</​phylum>​") + wikisp="https://en.wikipedia.org/​wiki/"​+a[i].genus 
-echo "var Platyhelminthes = new OpenLayers.Layer.Vector('​Overlay',​{attribution:'<​href=\"http://brmlab.cz\">​Brmlab<​/a>'​});"​ + else 
-spagety "​$spg"​ "​Platyhelminthes"​ "​plostenkoid.png" + wikisp="https://en.wikipedia.org/wiki/"​+a[i].genus+" "+a[i].specie
-echo "laycon.push(Platyhelminthes)"​+
  
 + // Bud prvni zaznam, nebo zmena pozice
  
-echo "var controls ​{" + // Predchozi pozice jen 1 zaznam? 
-echo " selector: ​new OpenLayers.Control.SelectFeature(laycon, { onSelectcreatePopuponUnselectdestroyPopup ​})+ if(sam != ""​
-echo "};" +
-echo "map.addControl(controls['​selector'​]);" + samicon=geticon(a,​i-1) 
-echo "controls['selector'].activate();"+ n[i] = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(ox,​oy).transform(epsg4326,​projectTo),{'​description'​:sam},{'​externalGraphic':​samicon,'​graphicHeight':​24,'​graphicWidth':​24,'​graphicXOffset':​-12,'​graphicYOffset'​:-12}); 
 + vectorLayerDynamic.addFeatures(n[i]); 
 + spoj="​
 + sam="
 + } // ELSE vytvori prazdny radek 
 + // Predchozi pozice vic zaznamu? 
 + if(spoj!=""​) 
 +
 + spojicon=geticon(a,​i-1) 
 + n[i] = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(ox,​oy).transform(epsg4326,​projectTo),​{'description':"<​table class=\"​hadtbl\">"​+spoj+"</​table>"​},​{'​externalGraphic':​spojicon,'​graphicHeight':​24,'​graphicWidth':​24,'​graphicXOffset':​-12,'​graphicYOffset':​-12});​ 
 + vectorLayerDynamic.addFeatures(n[i]); 
 + spoj="
 + sam=""​ 
 + }
  
 + bylo=a[i].locus
 + spoj='<​tr><​td><​a href="​./​det/'​+a[i].detid+'​.htm"​ target="​_blank">'​
 + if(a[i].obr != ""​)
 + spoj+='<​img src="​./​simg/'​+a[i].obr+'"​ class="​hadimg"></​a></​td>'​
 + else
 + spoj+='<​img src="​./'​+geticon(a,​i)+'"​ class="​hadimg"</​a></​td>'​
 + spoj+='<​td>'​+a[i].qualis+'<​br>'​+a[i].quando+'</​td>'​
 + spoj+="</​tr>"​
  
  
 + sam='<​a href="​./​det/'​+a[i].detid+'​.htm"​ target="​_blank"><​img src="​./​simg/'​+a[i].obr+'"​ alt="'​+a[i].qualis+'"​ class="​buttimg"></​a>'​
 + sam+='<​br><​span class="​butttext">'​
 + sam+='<​b>​Qualis:</​b>​ <a href="'​+wikisp+'"​ target="​_blank">'​+a[i].qualis+'</​a><​br>'​
 + if(a[i].imperium != ""​)
 + sam+='<​b>​Imperium:</​b>​ <a href="​https://​en.wikipedia.org/​wiki/'​+a[i].imperium+'"​ target="​_blank">'​+a[i].imperium+'</​a><​br>'​
 + if(a[i].regnum != ""​)
 +    sam+='<​b>​Regnum:</​b>​ <a href="​https://​en.wikipedia.org/​wiki/'​+a[i].regnum+'"​ target="​_blank">'​+a[i].regnum+'</​a><​br>'​
 + if(a[i].phylum != ""​)
 + sam+='<​b>​Phylum:</​b>​ <a href="​https://​en.wikipedia.org/​wiki/'​+a[i].phylum+'"​ target="​_blank">'​+a[i].phylum+'</​a><​br>'​
 + if(a[i].classis != ""​)
 + sam+='<​b>​Classis:</​b>​ <a href="​https://​en.wikipedia.org/​wiki/'​+a[i].classis+'"​ target="​_blank">'​+a[i].classis+'</​a><​br>'​
 + if(a[i].ordo != ""​)
 + sam+='<​b>​Ordo:</​b>​ <a href="​https://​en.wikipedia.org/​wiki/'​+a[i].ordo+'"​ target="​_blank">'​+a[i].ordo+'</​a><​br>'​
 + if(a[i].familia != ""​)
 + sam+='<​b>​Familia:</​b>​ <a href="​https://​en.wikipedia.org/​wiki/'​+a[i].familia+'"​ target="​_blank">'​+a[i].familia+'</​a><​br>'​
 + if(a[i].genus != ""​)
 + sam+='<​b>​Genus:</​b>​ <a href="​https://​en.wikipedia.org/​wiki/'​+a[i].genus+'"​ target="​_blank">'​+a[i].genus+'</​a><​br>'​
 + if(a[i].specie != ""​)
 + sam+='<​b>​Specie:</​b>​ <a href="'​+wikisp+'"​ target="​_blank">'​+a[i].specie+'</​a><​br>'​
 + if(a[i].bio != ""​)
 + sam+="<​b>​Biotope:</​b>​ "​+a[i].bio+"<​br>"​
 + if(a[i].quando != ""​)
 + sam+="<​b>​Quando:</​b>​ "​+a[i].quando+"<​br>"​
 + sam+="<​b>​Locus:</​b>​ "​+a[i].locus+"​ ("​+a[i].locplain+"​)<​br>"​
 + if(a[i].spec != ""​)
 + ​ sam+="<​b>​Spectator:</​b>​ "​+a[i].spec+"<​br>"​
 + if(a[i].micro != ""​)
 + sam+="<​b>​Microscopium:</​b>​ "​+a[i].micro+"​ ("​+a[i].microtyp+"​)<​br>"​
 + if(a[i].amp != ""​)
 + sam+="<​b>​Amplificatio:</​b>​ "​+a[i].amp+"<​br>"​
 + /* if [[ "​$des"​ != ""​ ]]; then
 + #   ​sam="​$sam<​b>​Depictio:</​b>​ $des<​br>"​
 + # fi */
 + if(a[i].vid != ""​)
 + sam+='<​b>​Video:</​b>​ <a href="'​+a[i].vid+'"​ target="​_blank">'​+a[i].vid+'</​a><​br>'​
 + sam+="</​span>"​
  
 + ox=a[i].x
 + oy=a[i].y
 + } // Konec prochazeni a[]
  
-echo "​function createPopup(feature) {" + // Do not forget to print last line when FOR ends! 
- echo "​ feature.popup ​new OpenLayers.Popup.FramedCloud('​pop'​," + samicon=geticon(a,i-1) 
- echo "​ feature.geometry.getBounds().getCenterLonLat(),​" + if(sam == ""​) 
- echo "​ null,​+ sam='<table style="hadtbl">'​+spoj+'</​table>'
- echo " '<div class=\"markerContent\">'​+feature.attributes.description+'</​div>'," +
- echo "​ null,"​ +
- echo "​ false,"​ +
- echo "​ function() { controls['​selector'​].unselectAll();​ }" +
- echo "​ );"​ +
- echo "​ //​feature.popup.closeOnMove = true;"​ +
- echo "​ map.addPopup(feature.popup);"​ +
-echo "​}"​+
  
-echo "​function destroyPopup(feature) {" + n[i]=new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(a[i-1].x,​a[i-1].y).transform(epsg4326,​projectTo),​{description:​"'"+sam+"'"},​{externalGraphic:​samicon,​graphicHeight:​24,​graphicWidth:​24,​graphicXOffset:​-12,​graphicYOffset:​-12});​ 
- echo "​ feature.popup.destroy();" + vectorLayerDynamic.addFeatures(n[i]);​
- echo " feature.popup = null;" +
-echo "}"+
  
 +} // Konec armageddonu
  
-echo "​function kinchange() {" +var laycon ​= [vectorLayer,​vectorLayerDynamic];
- echo "​ kinsel=document.getElementById('​kin'​);"​ +
- echo "​ kinopt=kinsel.options[kinsel.selectedIndex].text;"​ +
- echo " for (var map.layers.length - 1; i >= 1; i--) {" +
- echo "​ map.removeLayer(map.layers[i]);+
- echo "​ }"​ +
- echo "​ map.addLayer(window[kinopt])"​ +
-echo "​}"​+
  
-echo "​function plostenkoid() {" +var controls ​{selector: new OpenLayers.Control.SelectFeature(laycon,​ { onSelect: createPopup,​ onUnselect: destroyPopup })}
- echo " for (var i=map.layers.length-1;i>​=1;​i--) {" +map.addControl(controls['​selector'​]); 
- echo " map.removeLayer(map.layers[i]);" +controls['​selector'​].activate();
- echo "​ }"​ +
- echo " map.addLayer(Platyhelminthes)+
-echo "​}"​+
  
 +function createPopup(feature)
 +{
 + feature.popup = new OpenLayers.Popup.FramedCloud('​pop',​
 + feature.geometry.getBounds().getCenterLonLat(),​
 + null,
 + '<​div class="​markerContent">'​+feature.attributes.description+'</​div>',​
 + null,
 + false, // Close button?
 + function() { controls['​selector'​].unselectAll();​ }
 + );
 + //​feature.popup.closeOnMove = true;
 + map.addPopup(feature.popup);​
 +}
  
-echo "</script>" +function destroyPopup(feature) { 
-echo "</html>"+ feature.popup.destroy();​ 
 + feature.popup = null; 
 +
 + 
 +// Run armageddon on initial load 
 +armageddon() 
 +</code
 + 
 +==== Taxonomie dle rodoveho jmena ==== 
 + 
 +Script bere jako jediny parametr rodove jmeno a z wikipedie vyparsuje zbytek taxonomie. 
 +<code bash tax.sh>​ 
 +#​!/​bin/​bash 
 + 
 +wat=$(wget -q -O - "https://​en.wikipedia.org/​wiki/​Template:​Taxonomy/​$1"​ 2>/​dev/​null | tr -d '​\n'​ | sed -e $'s/<\/tr>/<​\/​tr>​\\n/​g'​ | grep "<​tr>"​ | sed -e '​s/<​[^>​]*>//​g'​ | grep -o -e "​^[a-zA-Z]*:​[a-zA-Z]*"​) 
 + 
 +echo $(echo "​$wat"​ | grep "​Domain:"​) 
 +echo $(echo "​$wat"​ | grep "​Kingdom:"​) 
 +echo $(echo "​$wat"​ | grep "​Phylum:"​) 
 +echo $(echo "​$wat"​ | grep "​Class:"​) 
 +echo $(echo "​$wat"​ | grep "​Order:"​) 
 +echo $(echo "​$wat"​ | grep "​Family:"​) 
 +echo $(echo "​$wat"​ | grep "​Genus:​")
 </​code>​ </​code>​
 
Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Noncommercial-Share Alike 4.0 International
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki