Beispiel #1
0
def uk_ozone():
    ## Get the sites availble from the DEFRA AURN network
    site_regions = LoadData.AURN_regions()
    region_choices = ['All'] + site_regions
    region_options = [{'label': i.strip(), 'value': i.strip()} for i in region_choices]

    site_envs = LoadData.AURN_environment_types()
    env_choices = ['All'] + site_envs
    env_options = [{'label': i.strip(), 'value': i.strip()} for i in env_choices]

    #### Start the page layout
    page_layout = html.Div(id = 'full_page_container', children =
    ### The first items are for the common attributes (ie site)
    [
    html.Div(className = 'page-header', children = [
        html.Div(id = 'home-logo-holder', children = [html.A(id = 'home-logo', href="/")]),
        html.Div(id = 'page-header-holder', children = [html.A('UK Atmosphere',id = "page-header-text", href = "/")]),
    ]),
    html.Div(className = 'page-body',children = [
    html.H3('Analysis for UK ozone from DEFRA AURN sites.'),
    html.Br(),

    html.Label('Select a region:'),
    dcc.Dropdown(id = 'o3_region_choice',
        multi = True,
        options = region_options,
        value = 'All'),
    html.Br(),

    html.Label('Select an environment type:'),
    dcc.Dropdown(id = 'o3_env_choice',
        multi = True,
        options = env_options,
        value = 'All'),
    html.Br(),

    html.Label('Select a range of years:'),
        dcc.Dropdown(
            id = 'o3_minimum_year',
            placeholder = 'Select start year...',
            value = 2000
        ),
        html.P('To'),
        dcc.Dropdown(
            id = 'o3_maximum_year',
            placeholder = 'Select end year...',
        ),
    html.Br(),
    daq.BooleanSwitch(id = 'o3_site_open', on = False,
        label = 'Only use sites currently open',
        labelPosition = 'top'),
    html.Br(),
    html.Button('Find Ozone Data', id = 'o3_go_button'),
    html.Br(),
    html.Br(),

    dcc.Loading(id="o3_meta_data_load", children=[
    html.Div(id = 'o3_meta_data_text')],type="dot"),

    html.Hr(),
    html.Button('Load Ozone Data', id = 'o3_load_button'),# disabled = True),
    html.Hr(),
    html.Div(id = 'o3_data_values_holder',children = [
    daq.GraduatedBar(id = 'o3_load_bar',
        size = 500,
        # max = 100,
        value = 0,
        showCurrentValue=True),
    html.Div(id = 'o3_dataframe-holder'),
    dcc.Interval(id = 'Interval',interval = 500),
    dcc.Store(id = 'load_id_store'),
    html.Div(id = 'loaded_sites2'),
    html.Div(id = 'tester_output')]),
    ###  Create a div to place the dataframe while its being used but not
    ### viewable by the user. Make data Json - very slow when being read
    html.Div(id = 'o3_metadata-holder', style = {'display': 'none'}),

    ### **************************  Site Count  ***************************
    html.Div(id = 'O3_SiteCountHolder', className = 'plot_holder', children = [
        dcc.Loading(id="loading-sitecount", children=[
            html.Div(id = 'O3_SiteCountPlot')],type="dot", className = 'main_plot'),
        html.Div(id = 'O3_SiteCountTools', className = 'plot_tools', children = [
        html.H3('Site Count Plot Tools:'),
        html.Br(),
        html.Label('Plot Title'),
        dcc.Input( id = 'O3_SiteCountTitle',
            placeholder = 'Enter Title',
            value = ''),
        html.Br(),
        html.Br(),
        html.Label('Spliy by:'),
        dcc.RadioItems(id = 'Site_Count_Split',
            options = [{'label': i, 'value': i} for i in ['Total', 'Environment Type','Region',]],
            value = 'Total'),
        html.Br(),
        ]),
    ]),
    html.Hr(),
    html.Br(),
    html.Label(),
    dcc.RadioItems(id = 'O3_Env_or_Regions',
    options = [{'label': i, 'value': i} for i in ['Environment Type', 'Region']],
    value = 'Environment Type',
    labelStyle={'display': 'inline-block'}),
    ### Each placeholder for plots and their individual controls go below
    ### **************************  TimeSeries  ***************************
    html.Div(id = 'O3_TimeSeriesHolder', className = 'plot_holder', children = [
        html.Div(id = 'O3_TimeSeries', className = 'main_plot'),
        html.Div(id = 'TimeSeriesTools', className = 'plot_tools', children = [
            html.H3('Time Series Tools:'),
            html.Br(),
            html.Label('Plot Title'),
            dcc.Input( id = 'O3_TimeSeriesTitle',
                placeholder = 'Enter Title',
                value = ''),
            html.Br(),
            html.Label('X Axis Label'),
            dcc.Input( id = 'O3_TimeSeriesXTitle',
                placeholder = 'Enter X axis label',
                value = 'Year'),
            html.Br(),
            html.Label('Y Axis Label'),
            dcc.Input( id = 'O3_TimeSeriesYTitle',
                placeholder = 'Enter Y axis label',
                value = ''),
            html.Br(),
            dcc.RadioItems(id = 'O3_TimeSeriesLabelFormat',
                options = [{'label': i, 'value': i} for i in ['Variable Name', 'Chemical Formula',]],
                value = 'Variable Name'),
            html.Br(),
            html.Label('Value Type'),
            dcc.RadioItems(id = 'O3_ValueType',
                options = [{'label': i, 'value': i} for i in ['Annual Mean', 'Annual Maximum','Annual Minimum']],
                value = 'Annual Mean'),
            html.Br(),
            html.Label('Line Type'),
            dcc.RadioItems(id = 'O3_TimeSeriesLineOrScatter',
            options = [{'label': i, 'value': i} for i in ['Scatter', 'Line', 'Line & Scatter']],
            value = 'Line & Scatter',
            ),
        ])
    ]),
    html.Hr(),
    ### *********************  Trend Table  *********************************
    html.Div(id = 'o3_trend_table'),
    html.Hr(),
    ### *********************  Gamma plot  *********************************
    html.Div(id = 'O3_Gamma_Plot_Holder', className = 'plot_holder', children = [
    html.Div(id = 'O3_Gamma_Plot', className = 'main_plot'),
        html.Div(id = 'O3_GammaTools', className = 'plot_tools', children = [
            html.H3('Gamma Plot Tools:'),
            html.Br(),
            html.Label('Plot Title'),
            dcc.Input( id = 'O3_GammaTitle',
                placeholder = 'Enter Title',
                value = ''),
            html.Br(),
        ]),
    ]),
    html.Hr(),

    ### *********************  YearlyExceed  *********************************
    html.Div(id = 'O3_YearlyExceedHolder', className = 'plot_holder', children = [
    html.Div(id = 'O3_YearlyExceed',className = 'main_plot'),
        # html.Div(id = 'Correlation', className = 'main_plot'),
        html.Div(id = 'O3_YearlyExceedTools', className = 'plot_tools', children = [
            html.H3('Yearly Exceedance Tools:'),
            html.Br(),
            html.Label('Plot Title'),
            dcc.Input( id = 'O3_YearlyExceedTitle',
                placeholder = 'Enter Title',
                value = ''),
            html.Br(),
        ]),
    ]),
    html.Hr(),

    ### *********************  Yearly siteExceed  *********************************
    html.Div(id = 'O3_YearlySiteExceedHolder', className = 'plot_holder', children = [
    html.Div(id = 'O3_YearlySiteExceed',className = 'main_plot'),
        # html.Div(id = 'Correlation', className = 'main_plot'),
        html.Div(id = 'O3_YearlySiteExceedTools', className = 'plot_tools', children = [
            html.H3('Yearly Site Exceedance Tools:'),
            html.Br(),
            html.Label('Plot Title'),
            dcc.Input( id = 'O3_YearlySiteExceedTitle',
                placeholder = 'Enter Title',
                value = ''),
            html.Br(),
        ]),
    ]),
    html.Hr(),

### *********************  MonthlyExceed *********************************
html.Div(id = 'O3_MonthlyExceedHolder', className = 'plot_holder', children = [
html.Div(id = 'O3_MonthlyExceed', className = 'main_plot'),
    # html.Div(id = 'DiurnalCycle', className = 'main_plot'),
    html.Div(id = 'O3_MonthlyExceedTools', className = 'plot_tools', children = [
        html.H3('Monthly Exceedance Tools:'),
        html.Br(),
        html.Label('Plot Title'),
        dcc.Input( id = 'O3_MonthlyExceedTitle',
            placeholder = 'Enter Title',
            value = ''),
        html.Br(),
        ]),
    ]),
    html.Hr(),


    ### *******************  WeeklyExceed  ***************************
    html.Div(id = 'O3_WeeklyExceedHolder', className = 'plot_holder', children = [
    html.Div(id = 'O3_WeeklyExceed',className = 'main_plot'),
        # html.Div(id = 'HourlyBoxplots', className = 'main_plot'),
        html.Div(id = 'O3_WeeklyExceedTools', className = 'plot_tools', children = [
            html.H3('Weekly Exceedance Tools:'),
            html.Br(),
            html.Label('Plot Title'),
            dcc.Input( id = 'O3_WeeklyExceedTitle',
                placeholder = 'Enter Title',
                value = ''),
            html.Br(),
        ]),
    ]),
    html.Br(),
    html.Hr(),

### *********************  ExceedMap *********************************
html.Div(id = 'ExceedMapHolder', className = 'plot_holder', children = [
html.Div(id = 'O3_ExceedMap', className = 'main_plot'),
    # html.Div(id = 'WeeklyCycle', className = 'main_plot'),
    html.Div(id = 'O3_ExceedMapTools', className = 'plot_tools', children = [
        html.H3('Exceedance Map Tools:'),
        html.Br(),
        html.Label('Plot Title'),
        dcc.Input( id = 'O3_ExceedMapTitle',
            placeholder = 'Enter Title',
            value = ''),
        html.Br(),

        ]),
    ]),
    html.Hr(),


    ])])
    return page_layout
def DEFRA_map_page():

    site_regions = LoadData.AURN_regions()
    region_choices = ['All'] + site_regions
    region_options = [{'label': i.strip(), 'value': i.strip()} for i in region_choices]

    site_envs = LoadData.AURN_environment_types()
    env_choices = ['All'] + site_envs
    env_options = [{'label': i.strip(), 'value': i.strip()} for i in env_choices]

    all_species = LoadData.get_all_aurn_species()
    species_options = [{'label': i.replace('<sub>','').replace('</sub>',''), 'value': i} for i in all_species]

    page_layout = html.Div(id ='full_page_container', children =
    [
    html.Div(className = 'page-header', children = [
        html.Div(id = 'home-logo-holder', children = [html.A(id = 'home-logo', href="/")]),
        html.Div(id = 'page-header-holder', children = [html.A('UK Atmosphere',id = "page-header-text", href = "/")]),
    ]),
    html.Div(className = 'page-body',children = [
    html.H3('Map of DEFRA AURN sites'),
    html.Div(className = 'tool_explainer', children = [
    html.P('Select a pollutant and location on the map to see recent measurements'),
    ]),
    html.Div(className = 'map_data_selection', children = [
    html.Label('Select an environment:'),
    dcc.Dropdown(id = 'map_env_choice',
        multi = False,
        options = env_options,
        value = 'All'),
    html.Br(),
    html.Label('Select a region:'),
    dcc.Dropdown(id = 'map_region_choice',
        multi = False,
        options = region_options,
        value = 'All'),
    html.Br(),
    html.Label('Select a species:'),
    dcc.Dropdown(id = 'map_species_choice',
        multi = False,
        options = species_options,
        value = 'Ozone'),
    html.Br(),
    ]),
    # Map layout will go here
    html.Div(id = 'map_output_holder', children = [
    html.Div(id = 'main_map_holder', children = [
        html.Div(id = 'site_counter_output'),
        dcc.Loading(id="loading-main-map", children=[
        dcc.Graph(id = 'main_map', config = {'scrollZoom': True},
    )],type="dot"),

    ]),
    html.Div(id = 'site_plot_from_map', children = [
    html.H4(id = 'site_name_from_map'),
    dcc.Tabs(id="map_tabs", value='site_sum', children=[
        dcc.Tab(label='Site Summary', value='site_sum'),
        dcc.Tab(label='Last 7 Days', value='site_week'),
        dcc.Tab(label='Yearly Stats', value='yearly_stats'),
    ]),
    html.Div(id = 'map_site_info'),
    ]),
    ])
    ])
    ])

    return page_layout