from app import app
import dash_table
import pandas as pd

from datastore import datastore 
from dash.dependencies import Input, Output, State
import dash_core_components as dcc
import dash_html_components as html
import json
import sd_material_ui as smui



ds=datastore()
df = ds.get_master_data()   
#df.fillna(0)
layout = html.Div([
    dash_table.DataTable(
    id='table',
    columns=[{'name':i,'id':i} for i in ds.get_orig_columns()],
    data=df.to_dict('records'),
    filtering=True,
    sorting=True,
    sorting_type="multi",
    row_selectable="single",
    pagination_mode="fe",
    page_current=0,
    page_size=10,
    # pagination_settings={
    #     "current_page": 0,
    #     "page_size": 10,
    # },
    style_table={'position':'initial'}
    ),
    smui.Dialog(id='click-info-dialog_dt',
                        children=[
                            html.Div(id='main-info-content_dt',className='max-width scroll max-height-500'),
                            smui.FlatButton(id='close-diag_dt', label='Close', backgroundColor='orange')
                        ],
                        modal=True,open=False,className='max-width'
                    
                    ),
    html.Div(id='table-filter-container')
],style={'position':'initial'},
)

#dummy callback to make filtering work

@app.callback(
    Output('tatable-filter-containerble','children'),
    [Input('table','data')]
)
def dummy_table_filter_callback(rows):
    if rows is None:
        dff=df
    else:
        dff=pd.DataFrame(rows)
    
    return html.Div()   

@app.callback(
    [
        Output('click-info-dialog_dt','open'),
        Output('main-info-content_dt','children')
    ],
    [
        Input('table','selected_rows'),
        Input('close-diag_dt','n_clicks'),
    ],
    [
        State('click-info-dialog_dt','open')
    ]
)
def display_info_dialog(selectedRows,closeClick,diagOpen):

    clickData={'points':[]}
    if closeClick and diagOpen:

        return False,''

    if (len(clickData['points'])>0 or len(selectedRows)>0) and not diagOpen:
        df=ds.get_filtered_data()
        source=''
        radio_over_xray=False
        if (len(selectedRows)>0) :
            radio_over_xray=df.iloc[selectedRows[0]]['radio_over_xray']
            source=df.iloc[selectedRows[0]]['Name']
        if (len(clickData['points']) > 0):
            source = clickData['points'][0]['text']
            radio_over_xray=(df[df['Name']==source].iloc[0])['radio_over_xray']
        child=html.H3('No information is available for {0}'.format(source))
        if radio_over_xray:
            child=[
               html.Div(
                   [
                        html.Img(
                            src=app.get_asset_url('data_downloads/{0}/radio_over_xray.png'.format(source)),
                            height=500
                        )
                   ],
                    className=''
               ),
                html.Div(
                    [
                        ds.get_source_table(source)
                    ],
                    className=' float-right '
                )

            ]
        return True,child