@mirceau wrote:
I have a calendar in my web app and I want it to only allow users to select the dates on the calendar that are actually present in my CSV file or df. Because only those dates have assigned to them a ‘sensor’ observation.
The code it regards are these two pieces:
# Initialize data frame df1 = pd.read_csv( "/Users/ME/Desktop/personal_project/plot_points.csv", dtype=object, ) df = pd.concat([df1], axis=0) df["Date/Time"] = pd.to_datetime(df["Date/Time"], format="%Y-%m-%d %H:%M") df.index = df["Date/Time"] df.drop("Date/Time", 1, inplace=True) totalList = [] for month in df.groupby(df.index.month): dailyList = [] for day in month[1].groupby(month[1].index.day): dailyList.append(day[1]) totalList.append(dailyList) totalList = np.array(totalList)
and this piece:
html.H2("Date Plotting"), html.Div( className="div-for-dropdown", children=[ dcc.DatePickerSingle( id="date-picker", min_date_allowed=dt(2019, 1, 1), max_date_allowed=dt(2019, 12, 31), # initial_visible_month=dt(2019, 3, 1), date=dt(2019, 3, 1).date(), display_format="MMMM DD, YYYY", style={"border": "0px solid white"} ) ], ),
Probably I need to specify something at this line:
min_date_allowed=dt(2019, 1, 1)
Can someone help me out as to what needs to be done to realise my
goal?
My entire code:
import dash import dash_core_components as dcc import dash_html_components as html import pandas as pd import numpy as np from dash.dependencies import Input, Output from plotly import graph_objs as go from plotly.graph_objs import * from datetime import datetime as dt app = dash.Dash( __name__, meta_tags=[{"name": "viewport", "content": "width=device-width"}] ) server = app.server # Plotly mapbox public token mapbox_access_token = get_token [this is intentionally put on private for this post] # Initialize data frame df1 = pd.read_csv( "/Users/ME/Desktop/personal_project/plot_points.csv", dtype=object, ) df = pd.concat([df1], axis=0) df["Date/Time"] = pd.to_datetime(df["Date/Time"], format="%Y-%m-%d %H:%M") df.index = df["Date/Time"] df.drop("Date/Time", 1, inplace=True) totalList = [] for month in df.groupby(df.index.month): dailyList = [] for day in month[1].groupby(month[1].index.day): dailyList.append(day[1]) totalList.append(dailyList) totalList = np.array(totalList) # Layout of Dash App HTML app.layout = html.Div( children=[ html.Div( className="row", children=[ # Column for user controls html.Div( className="four columns div-user-controls", children=[ html.Img( className="logo", src=app.get_asset_url("dash-logo-new-.png") ), html.H2("Date Plotting"), html.Div( className="div-for-dropdown", children=[ dcc.DatePickerSingle( id="date-picker", min_date_allowed=dt(2019, 1, 1), max_date_allowed=dt(2019, 12, 31), # initial_visible_month=dt(2019, 3, 1), date=dt(2019, 3, 1).date(), display_format="MMMM DD, YYYY", style={"border": "0px solid white"} ) ], ), # Change to side-by-side for mobile layout html.Div( className="row", children=[ html.Div( className="div-for-dropdown", children=[ # Dropdown for locations on map dcc.Dropdown( id="location-dropdown", options=[ {"label": i, "value": i} for i in list_of_fixed_sensors ], placeholder="Select a sensor viewpoint", ) ], ), html.Div( className="div-for-dropdown", children=[ # Dropdown to select times dcc.Dropdown( id="bar-selector", options=[ { "label": str(n) + ":00", "value": str(n), } for n in range(24) ], multi=True, placeholder="Select certain hours", ) ], ), ], ), html.H1(id="total-observations"), html.H1(id="total-observations-selection"), html.H1(id="date-value"), html.Button('Detect', id='button'), html.Div(id='output-container-button', children='Hit the button to update.') ], ), # Column for app graphs and plots html.Div( className="eight columns div-for-charts bg-grey", children=[ dcc.Graph(id="map-graph"), html.Div( className="text-padding", children=[ "Select any of the bars on the histogram to section data by time." ], ), dcc.Graph(id="histogram"), ], ), ], ) ] )
Posts: 1
Participants: 1