#!/usr/bin/env python3

# . ~/Documents/projects/Olympus/montera/scripts/env_montera/bin/activate

import pandas as pd
import numpy as np
import os
import argparse
import configparser
import sys
import subprocess
import csv
#import matplotlib.pyplot as plt
import logging
import time

# For some gneric utiltities: json_read, json_write, timer
import montera.gutil as gutil
#import montera.cno_lib as cno_lib
#import montera.plot_snr as plot_snr


def td_html_png(html, fname, fname_short):
    html += '<td class="fft_table">\n'
    if os.path.isfile(fname):
        print(f'   Adding {fname_short}')
        html += f'<a href="{fname_short}">\n'
        html += f'<img src="{fname}" width="100%"></a>\n'
    else:
        print(f'   Skipping {fname_short} (not found)')
    html += '</td>\n'
    return html


def gen_html(folder, days, devs, antennas, kinds):
    html = """<html lang="en">
    <head>
    <style>
    .fft_table {
        border: 1px solid black;
        border-collapse: collapse;
        margin-left: auto;    /* For centering table */
        margin-right: auto;   /* For centering table */
    }
    .fft_table th {
        padding: 0.5rem;
        border-collapse: collapse;
        border: 1px solid black;
    }
    .fft_table td {
        padding: 0.0rem;
        border-collapse: collapse;
        border-bottom: none;
        border-top: none;
    }
    </style>"""
    html += f'<title>{os.getcwd()}</title>'
    html += """</head>
    <body>\n"""

    for antenna in [0]:
        html += f'<center><H2>Antenna {antenna}</H2></center>'
        html += '<table class="fft_table">\n'

        # --- Table Header ----
        html += '<thead>\n'
        html += f'<tr><th class="fft_table">Day</th>\n'
        for kind in kinds:
            for dev in devs:
                html += f'<th class="fft_table">{kind} {dev}</th>\n'
        html += f'</tr>\n'
        html += '</thead>\n'
        html += '<tbody>\n'

        for day in days:
            html += f'<tr><td class="fft_table">{day}</td>\n'
            for kind in kinds:
                for dev in devs:
                    #html += f'<th class="fft_table">{kind} {dev}</th>\n'
                    html += '<td class="fft_table">\n'

                    # --- Northing, Easting
                    fname_short = f'{dev}_pos_ant{antenna}_ne.png'
                    fname = os.path.join(day, 'figures', kind, dev, fname_short)
                    html_fname = os.path.join('..', fname)
                    print(fname)
                    if os.path.isfile(fname):
                        print(f'   Adding {fname_short}')
                        html += f'<a href="{fname_short}">\n'
                        html += f'<img src="{html_fname}" width="100%"></a>\n'
                    else:
                        print(f'   Skipping {fname_short} (not found)')

                    # --- Vertical Delta
                    fname_short = f'{dev}_pos_ant{antenna}_vert_delta.png'
                    fname = os.path.join(day, 'figures', kind, dev, fname_short)
                    html_fname = os.path.join('..', fname)
                    print(fname)
                    if os.path.isfile(fname):
                        print(f'   Adding {fname_short}')
                        html += f'<a href="{fname_short}">\n'
                        html += f'<img src="{html_fname}" width="100%"></a>\n'
                    else:
                        print(f'   Skipping {fname_short} (not found)')

                    html += '</td>\n'

            html += '</tr>\n'

        html += '</tr>\n'
        html += '</tbody>\n'
        html += '</table>\n'
    html += '</body>\n'

    html_fname = os.path.join('figures', 'rot_overview.html')
    print(f'Saving {html_fname}')
    with open(html_fname, 'w') as fhtml:
        fhtml.write(html)

def main():
    total_time = gutil.timer('total')

    parser = argparse.ArgumentParser(
        description='Difference Az El plots',
        formatter_class=argparse.ArgumentDefaultsHelpFormatter,
    )
    parser.add_argument(
        '-F', '--folder',
        default='.',
        help='Root folder',
        )
    gutil.add_common_nargs(parser, 'days',
                           ['240126_NoAnt_N', '240128_NoAnt_E',
                            '240129_NoAnt_S', '240130_NoAnt_W',
                            '240131_Ant_N', '240201_Ant_E',
                            '240203_Ant_S', '240204_Ant_W',
                            ])
    gutil.add_common_nargs(parser, 'devs',
                           ['JudoRoof-all', 'P4-03-all', 'P4-05-all'])
    parser.add_argument(
        '-a', '--antennas',
        default=[0, 1],
        help='List of antennas',
        )
    parser.add_argument(
        '-k', '--kinds',
        default=['position', 'titan-position'],
        help='List of post processing kinds',
        )


    debugp = parser.add_argument_group('Debug options')
    #gutil.add_common_bool(debugp, 'force')
    #gutil.add_common_bool(debugp, 'plot')
    #gutil.add_common_bool(debugp, 'html')
    gutil.add_verbose(debugp)

    args = parser.parse_args()
    logging.basicConfig(
        level=logging.WARNING - (10 * args.verbose),
        format=gutil.logger_format,
        stream=sys.stdout
    )

    gen_html(args.folder, args.days, args.devs, args.antennas, args.kinds)
    total_time.dt_print()


if __name__ == '__main__':
    main()
