#!/bin/bash
## Generate html file to list figures with table
## Also generate descriptions for upper index.html
## column: figures filename (without suffix) or text or newrow
##    ex. 'c1' 'c2' 'c3' tr    <- text row, tr means end of row
##         fig1 fig2 fig3 tr   <- 3 figures
##         fig4 fig5 fig6 tr   <- 3 figures
##         'title2' tr         <- the row with text only
##         fig6 fig7 tr
##         fig8 fig9 fig10 tr  <- 2 and 3 figures at this and next row


fig2png () { ## if text is a file, return .png name. if not, return text
    i=$1
    ii=$i
    if [ -f "${i}.ps" ] ; then ## ps2png
        convert -density 300 "${i}.ps" ${i}.png
        if [  $? != 0 ];then
            MAGICK_THREAD_LIMIT=1 convert -density 300 "${i}.ps" ${i}.png
        fi
        gzip -f "${i}.ps"
        convert ${i}.png -fuzz 1% -trim +repage tmp-${i}-${pid}.png
        mv tmp-${i}-${pid}.png ${i}.png
    fi
    if [ -f "${i}.png" ] ; then ## trim white edge and make thumbnail
        ## thumbnail
        test "${i}.png" -nt "${i}_thumb.png" && convert -thumbnail 300 "${i}.png" "${i}_thumb.png"
        ii="<a href='${i}.png'><img src='${i%.*}_thumb.png'></a>"
    fi
    if [ -f "${i}" ] ; then ## other files: make thumbnail
        #convert ${i}.png -fuzz 1% -trim +repage tmp-${i}-${pid}.png 
        #mv tmp-${i}-${pid}.png ${i}.png
        ## thumbnail
        test "${i}.png" -nt "${i}_thumb.png" && convert -thumbnail 300 "${i}" "${i%.*}_thumb.png"
        ii="<a href='${i}'><img src='${i%.*}_thumb.png'></a>"
    fi
    test -f "$thumb" || thumb="${i%.*}_thumb.png"
    echo -n "$ii"
}

cd figs/

# parameters
htmlfn="index_by_season.html"
comment="SM Hindcast, April init,  SST anomaly correlation with OISSTv2 (new Code version)"
title=""
column=(
    'Corr NINO3.4' tr
    cor_nino34_leadmon_init01  cor_nino34_leadmon_init04  cor_nino34_leadmon_init07  cor_nino34_leadmon_init10 tr
    'Jan start' tr
    'lead month 0' '1' '2' '3' '4' '5' '6' '7' '8' '9' '10' '11' '12' '13' tr
    'ENS_MODELS Jan start' tr 
    cor_sst_ENS_MODELS_initmon01_lead00 cor_sst_ENS_MODELS_initmon01_lead01 cor_sst_ENS_MODELS_initmon01_lead02 cor_sst_ENS_MODELS_initmon01_lead03
    cor_sst_ENS_MODELS_initmon01_lead04 cor_sst_ENS_MODELS_initmon01_lead05 cor_sst_ENS_MODELS_initmon01_lead06 cor_sst_ENS_MODELS_initmon01_lead07
    cor_sst_ENS_MODELS_initmon01_lead08 cor_sst_ENS_MODELS_initmon01_lead09 cor_sst_ENS_MODELS_initmon01_lead10 cor_sst_ENS_MODELS_initmon01_lead11
    cor_sst_ENS_MODELS_initmon01_lead12 cor_sst_ENS_MODELS_initmon01_lead13
    tr
    'CESM Jan start' tr 
    cor_sst_CESM_initmon01_lead00 cor_sst_CESM_initmon01_lead01 cor_sst_CESM_initmon01_lead02 cor_sst_CESM_initmon01_lead03
    cor_sst_CESM_initmon01_lead04 cor_sst_CESM_initmon01_lead05 cor_sst_CESM_initmon01_lead06 cor_sst_CESM_initmon01_lead07
    cor_sst_CESM_initmon01_lead08 cor_sst_CESM_initmon01_lead09 cor_sst_CESM_initmon01_lead10 cor_sst_CESM_initmon01_lead11
    cor_sst_CESM_initmon01_lead12 cor_sst_CESM_initmon01_lead13
    tr
    'MPIESM Jan start' tr 
    cor_sst_MPIESM_initmon01_lead00 cor_sst_MPIESM_initmon01_lead01 cor_sst_MPIESM_initmon01_lead02 cor_sst_MPIESM_initmon01_lead03
    cor_sst_MPIESM_initmon01_lead04 cor_sst_MPIESM_initmon01_lead05 cor_sst_MPIESM_initmon01_lead06 cor_sst_MPIESM_initmon01_lead07
    cor_sst_MPIESM_initmon01_lead08 cor_sst_MPIESM_initmon01_lead09 cor_sst_MPIESM_initmon01_lead10 cor_sst_MPIESM_initmon01_lead11
    cor_sst_MPIESM_initmon01_lead12 cor_sst_MPIESM_initmon01_lead13
    tr
    'NorESM Jan start' tr 
    cor_sst_NorESM_initmon01_lead00 cor_sst_NorESM_initmon01_lead01 cor_sst_NorESM_initmon01_lead02 cor_sst_NorESM_initmon01_lead03
    cor_sst_NorESM_initmon01_lead04 cor_sst_NorESM_initmon01_lead05 cor_sst_NorESM_initmon01_lead06 cor_sst_NorESM_initmon01_lead07
    cor_sst_NorESM_initmon01_lead08 cor_sst_NorESM_initmon01_lead09 cor_sst_NorESM_initmon01_lead10 cor_sst_NorESM_initmon01_lead11
    cor_sst_NorESM_initmon01_lead12 cor_sst_NorESM_initmon01_lead13
    tr
    'Apr start' tr
    'lead month 0' '1' '2' '3' '4' '5' '6' '7' '8' '9' '10' '11' '12' '13' tr
    'ENS_MODELS Apr start' tr 
    cor_sst_ENS_MODELS_initmon04_lead00 cor_sst_ENS_MODELS_initmon04_lead01 cor_sst_ENS_MODELS_initmon04_lead02 cor_sst_ENS_MODELS_initmon04_lead03
    cor_sst_ENS_MODELS_initmon04_lead04 cor_sst_ENS_MODELS_initmon04_lead05 cor_sst_ENS_MODELS_initmon04_lead06 cor_sst_ENS_MODELS_initmon04_lead07
    cor_sst_ENS_MODELS_initmon04_lead08 cor_sst_ENS_MODELS_initmon04_lead09 cor_sst_ENS_MODELS_initmon04_lead10 cor_sst_ENS_MODELS_initmon04_lead11
    cor_sst_ENS_MODELS_initmon04_lead12 cor_sst_ENS_MODELS_initmon04_lead13
    tr
    'CESM Apr start' tr 
    cor_sst_CESM_initmon04_lead00 cor_sst_CESM_initmon04_lead01 cor_sst_CESM_initmon04_lead02 cor_sst_CESM_initmon04_lead03
    cor_sst_CESM_initmon04_lead04 cor_sst_CESM_initmon04_lead05 cor_sst_CESM_initmon04_lead06 cor_sst_CESM_initmon04_lead07
    cor_sst_CESM_initmon04_lead08 cor_sst_CESM_initmon04_lead09 cor_sst_CESM_initmon04_lead10 cor_sst_CESM_initmon04_lead11
    cor_sst_CESM_initmon04_lead12 cor_sst_CESM_initmon04_lead13
    tr
    'MPIESM Apr start' tr 
    cor_sst_MPIESM_initmon04_lead00 cor_sst_MPIESM_initmon04_lead01 cor_sst_MPIESM_initmon04_lead02 cor_sst_MPIESM_initmon04_lead03
    cor_sst_MPIESM_initmon04_lead04 cor_sst_MPIESM_initmon04_lead05 cor_sst_MPIESM_initmon04_lead06 cor_sst_MPIESM_initmon04_lead07
    cor_sst_MPIESM_initmon04_lead08 cor_sst_MPIESM_initmon04_lead09 cor_sst_MPIESM_initmon04_lead10 cor_sst_MPIESM_initmon04_lead11
    cor_sst_MPIESM_initmon04_lead12 cor_sst_MPIESM_initmon04_lead13
    tr
    'NorESM Apr start' tr 
    cor_sst_NorESM_initmon04_lead00 cor_sst_NorESM_initmon04_lead01 cor_sst_NorESM_initmon04_lead02 cor_sst_NorESM_initmon04_lead03
    cor_sst_NorESM_initmon04_lead04 cor_sst_NorESM_initmon04_lead05 cor_sst_NorESM_initmon04_lead06 cor_sst_NorESM_initmon04_lead07
    cor_sst_NorESM_initmon04_lead08 cor_sst_NorESM_initmon04_lead09 cor_sst_NorESM_initmon04_lead10 cor_sst_NorESM_initmon04_lead11
    cor_sst_NorESM_initmon04_lead12 cor_sst_NorESM_initmon04_lead13
    tr
    'Jul start' tr
    'lead month 0' '1' '2' '3' '4' '5' '6' '7' '8' '9' '10' '11' '12' '13' tr
    'ENS_MODELS Jul start' tr 
    cor_sst_ENS_MODELS_initmon07_lead00 cor_sst_ENS_MODELS_initmon07_lead01 cor_sst_ENS_MODELS_initmon07_lead02 cor_sst_ENS_MODELS_initmon07_lead03
    cor_sst_ENS_MODELS_initmon07_lead04 cor_sst_ENS_MODELS_initmon07_lead05 cor_sst_ENS_MODELS_initmon07_lead06 cor_sst_ENS_MODELS_initmon07_lead07
    cor_sst_ENS_MODELS_initmon07_lead08 cor_sst_ENS_MODELS_initmon07_lead09 cor_sst_ENS_MODELS_initmon07_lead10 cor_sst_ENS_MODELS_initmon07_lead11
    cor_sst_ENS_MODELS_initmon07_lead12 cor_sst_ENS_MODELS_initmon07_lead13
    tr
    'CESM Jul start' tr 
    cor_sst_CESM_initmon07_lead00 cor_sst_CESM_initmon07_lead01 cor_sst_CESM_initmon07_lead02 cor_sst_CESM_initmon07_lead03
    cor_sst_CESM_initmon07_lead04 cor_sst_CESM_initmon07_lead05 cor_sst_CESM_initmon07_lead06 cor_sst_CESM_initmon07_lead07
    cor_sst_CESM_initmon07_lead08 cor_sst_CESM_initmon07_lead09 cor_sst_CESM_initmon07_lead10 cor_sst_CESM_initmon07_lead11
    cor_sst_CESM_initmon07_lead12 cor_sst_CESM_initmon07_lead13
    tr
    'MPIESM Jul start' tr 
    cor_sst_MPIESM_initmon07_lead00 cor_sst_MPIESM_initmon07_lead01 cor_sst_MPIESM_initmon07_lead02 cor_sst_MPIESM_initmon07_lead03
    cor_sst_MPIESM_initmon07_lead04 cor_sst_MPIESM_initmon07_lead05 cor_sst_MPIESM_initmon07_lead06 cor_sst_MPIESM_initmon07_lead07
    cor_sst_MPIESM_initmon07_lead08 cor_sst_MPIESM_initmon07_lead09 cor_sst_MPIESM_initmon07_lead10 cor_sst_MPIESM_initmon07_lead11
    cor_sst_MPIESM_initmon07_lead12 cor_sst_MPIESM_initmon07_lead13
    tr
    'NorESM Jul start' tr 
    cor_sst_NorESM_initmon07_lead00 cor_sst_NorESM_initmon07_lead01 cor_sst_NorESM_initmon07_lead02 cor_sst_NorESM_initmon07_lead03
    cor_sst_NorESM_initmon07_lead04 cor_sst_NorESM_initmon07_lead05 cor_sst_NorESM_initmon07_lead06 cor_sst_NorESM_initmon07_lead07
    cor_sst_NorESM_initmon07_lead08 cor_sst_NorESM_initmon07_lead09 cor_sst_NorESM_initmon07_lead10 cor_sst_NorESM_initmon07_lead11
    cor_sst_NorESM_initmon07_lead12 cor_sst_NorESM_initmon07_lead13
    tr
    'Oct start' tr
    'lead month 0' '1' '2' '3' '4' '5' '6' '7' '8' '9' '10' '11' '12' '13' tr
    'ENS_MODELS Oct start' tr 
    cor_sst_ENS_MODELS_initmon10_lead00 cor_sst_ENS_MODELS_initmon10_lead01 cor_sst_ENS_MODELS_initmon10_lead02 cor_sst_ENS_MODELS_initmon10_lead03
    cor_sst_ENS_MODELS_initmon10_lead04 cor_sst_ENS_MODELS_initmon10_lead05 cor_sst_ENS_MODELS_initmon10_lead06 cor_sst_ENS_MODELS_initmon10_lead07
    cor_sst_ENS_MODELS_initmon10_lead08 cor_sst_ENS_MODELS_initmon10_lead09 cor_sst_ENS_MODELS_initmon10_lead10 cor_sst_ENS_MODELS_initmon10_lead11
    cor_sst_ENS_MODELS_initmon10_lead12 cor_sst_ENS_MODELS_initmon10_lead13
    tr
    'CESM Oct start' tr 
    cor_sst_CESM_initmon10_lead00 cor_sst_CESM_initmon10_lead01 cor_sst_CESM_initmon10_lead02 cor_sst_CESM_initmon10_lead03
    cor_sst_CESM_initmon10_lead04 cor_sst_CESM_initmon10_lead05 cor_sst_CESM_initmon10_lead06 cor_sst_CESM_initmon10_lead07
    cor_sst_CESM_initmon10_lead08 cor_sst_CESM_initmon10_lead09 cor_sst_CESM_initmon10_lead10 cor_sst_CESM_initmon10_lead11
    cor_sst_CESM_initmon10_lead12 cor_sst_CESM_initmon10_lead13
    tr
    'MPIESM Oct start' tr 
    cor_sst_MPIESM_initmon10_lead00 cor_sst_MPIESM_initmon10_lead01 cor_sst_MPIESM_initmon10_lead02 cor_sst_MPIESM_initmon10_lead03
    cor_sst_MPIESM_initmon10_lead04 cor_sst_MPIESM_initmon10_lead05 cor_sst_MPIESM_initmon10_lead06 cor_sst_MPIESM_initmon10_lead07
    cor_sst_MPIESM_initmon10_lead08 cor_sst_MPIESM_initmon10_lead09 cor_sst_MPIESM_initmon10_lead10 cor_sst_MPIESM_initmon10_lead11
    cor_sst_MPIESM_initmon10_lead12 cor_sst_MPIESM_initmon10_lead13
    tr
    'NorESM Oct start' tr 
    cor_sst_NorESM_initmon10_lead00 cor_sst_NorESM_initmon10_lead01 cor_sst_NorESM_initmon10_lead02 cor_sst_NorESM_initmon10_lead03
    cor_sst_NorESM_initmon10_lead04 cor_sst_NorESM_initmon10_lead05 cor_sst_NorESM_initmon10_lead06 cor_sst_NorESM_initmon10_lead07
    cor_sst_NorESM_initmon10_lead08 cor_sst_NorESM_initmon10_lead09 cor_sst_NorESM_initmon10_lead10 cor_sst_NorESM_initmon10_lead11
    cor_sst_NorESM_initmon10_lead12 cor_sst_NorESM_initmon10_lead13
    )
    ## number of figures in a row
    ## should be a array
ncolarr=${#column[*]}

thumb="THUMBNAIL"
#export MAGICK_THREAD_LIMIT=1   ## avoid "libgomp: Thread creation failed"

# html header
text=$'\n'
text+=$'<!DOCTYPE html>\n'
text+=$'<html>\n'
text+=$'<body>\n'

# put comment on top
text+=$'<div id=comment>\n'
text+=$'<p>\n'
text+=$'<h1>\n'
text+="$comment"
text+=$'</h1>\n'
#text+=$'</p>\n'
text+=$'</div>\n'


nl=$'\n'  #newline
# convert ps to png and output entry to html
pid=$$
row=1
icol=0


text+="<table>"$'\n'
text+="<tr>"$'\n'

# if column start with non integer
while [ ! -z "${column[$icol]}" ] ; do
    dst="${column[$icol]}"
    if [ "${dst}" = 'tr' ]; then
        dst='</tr>'$'\n''<tr>'
    fi
    if [ "${dst}" = '</tr><tr>' ]; then
        text+="${dst}"$'\n'
    else
        text+="<th>"$(fig2png "${dst}")"</th>"$'\n'
    fi
    icol=$(( $icol + 1))
done
wait

## show figures with table
text+="</tr>"$'\n'
text+="</table>"$'\n'

# html footer
text+=$'</body>\n'
text+=$'</html> \n'

# output to html file
echo "${text}" >  "${htmlfn}"


## The entry snipp html for parent index.html

nowdir=$(basename $(pwd -P))
if [ -z "$entryhtml" ]; then
    entryhtml="${entryhtml}    <span style='display:inline-block'>${nl}"
    entryhtml="${entryhtml}    <a href='${nowdir}/index.html'>${nl}"
    entryhtml="${entryhtml}    <h4>${title}</h4>${nl}"
    entryhtml="${entryhtml}    <img ALIGN='left' src='${nowdir}/${thumb}'>${nl}"
    entryhtml="${entryhtml}    </a>${nl}"
    entryhtml="${entryhtml}    <pre>${comment}</pre>${nl}"
    entryhtml="${entryhtml}    </ br>${nl}"
    entryhtml="${entryhtml}    </span>${nl}"
    entryhtml="${entryhtml}    </ br>${nl}"
    entryhtml="${entryhtml}    <hr>${nl}"
fi
