Files
cief-dashboard/apps/warehouse.py
T
shangqian22 b3d3cdba23 added ETA
2020-10-15 16:07:34 +08:00

112 lines
4.0 KiB
Python

from app import *
# data
df=pd.read_csv('data/warehouse2.csv',parse_dates=['Date'])
# marks
date_list=df.loc[:,"Date"].dt.strftime('%Y%m').unique()
last_month=(df.loc[:,"Date"].max()+pd.Timedelta(30, unit='D')).strftime('%Y%m')
date_list=np.append(date_list,last_month)
date_index=list(range(len(date_list)))
colors = {
'background': '#111111',
'text': '#7FDBFF'}
layout = html.Div([
html.H1('Warehouse information'),
dcc.Graph(id='output-cbm'),
dcc.Graph(id='output-ctn'),
dbc.Row([
dbc.Col(dcc.Graph(id='output-destination_port')),
dbc.Col(dcc.Graph(id='output-remark')),
dbc.Col(dcc.Graph(id='output-delivery_status'))
]),
dbc.Row([
dbc.Col(
dcc.RangeSlider(
id='input-month',
min=date_index[0],
max=date_index[-1],
step=1,
marks=dict(zip(date_index,date_list)),
value=[date_index[-4],date_index[-1]]
)
),
dbc.Col(
dbc.Button("Update Information", id="input-update", className="mr-2")
)
])
])
@app.callback(
[Output('output-cbm', 'figure'),
Output('output-ctn', 'figure'),
Output('output-destination_port', 'figure'),
Output('output-delivery_status', 'figure'),
Output('output-remark', 'figure')],
Input('input-update', 'n_clicks'),
State('input-month', 'value')
)
def update_figure(n_clicks,selected_month):
start_date=date_list[selected_month[0]]
start_date=pd.to_datetime(start_date,format='%Y%m')
end_date=date_list[selected_month[1]]
end_date=pd.to_datetime(end_date,format='%Y%m')
filtered_df = df.loc[df.loc[:,'Date'] >= start_date]
filtered_df = filtered_df.loc[filtered_df.loc[:,'Date'] <= end_date]
fig_cbm = px.bar(filtered_df, x="Date", y="CBM",color="CBM",hover_data=['Daily CBM','Marking'])
fig_cbm.update_layout(
plot_bgcolor=colors['background'],
paper_bgcolor=colors['background'],
font_color=colors['text'])
fig_ctn = px.bar(filtered_df, x="Date", y="CTN",color="CTN",hover_data=['Daily CTN','Marking'])
fig_ctn.update_layout(
plot_bgcolor=colors['background'],
paper_bgcolor=colors['background'],
font_color=colors['text'])
# get destination port count
destination_port_count=filtered_df.loc[:,'Destination port'].groupby(by=filtered_df.loc[:,'Destination port']).count()
destination_port_count=pd.DataFrame(destination_port_count)
destination_port_count.columns=['Count']
destination_port_count.reset_index(inplace=True)
fig_destination_port = px.pie(destination_port_count, values='Count', names='Destination port',title='Destination port')
fig_destination_port.update_layout(
plot_bgcolor=colors['background'],
paper_bgcolor=colors['background'],
font_color=colors['text'])
# delivery status
delivery_status_count=filtered_df.loc[:,'Delivery status'].groupby(by=filtered_df.loc[:,'Delivery status']).count()
delivery_status_count=pd.DataFrame(delivery_status_count)
delivery_status_count.columns=['Count']
delivery_status_count.reset_index(inplace=True)
fig_delivery_status = px.pie(delivery_status_count, values='Count', names='Delivery status',title='Delivery status')
fig_delivery_status.update_layout(
plot_bgcolor=colors['background'],
paper_bgcolor=colors['background'],
font_color=colors['text'])
# get remark count
remark_count=filtered_df.loc[:,'Remark'].groupby(by=filtered_df.loc[:,'Remark']).count()
remark_count=pd.DataFrame(remark_count)
remark_count.columns=['Count']
remark_count.reset_index(inplace=True)
fig_remark = px.pie(remark_count, values='Count', names='Remark',hover_data=['Count'],title='Remark')
fig_remark.update_layout(
plot_bgcolor=colors['background'],
paper_bgcolor=colors['background'],
font_color=colors['text'])
return(fig_cbm,fig_ctn,fig_destination_port,fig_delivery_status,fig_remark)