33
44#! _SIDEBAR_ELEMENTS should be considered for moving else where
55"""
6- from typing import List
76from collections import OrderedDict
87from datetime import date , datetime
8+ from typing import List
99
1010from dash .development .base_component import ComponentMeta
11- from dash_html_components import Nav , Div
1211from dash_core_components import Store
12+ from dash_html_components import Nav , Div
1313
1414from chime_dash .app .components .base import Page
15+ from chime_dash .app .services .callbacks import SidebarCallbacks
1516from chime_dash .app .utils import ReadOnlyDict
1617from chime_dash .app .utils .templates import (
1718 create_switch_input ,
1819 create_number_input ,
1920 create_date_input ,
2021 create_header ,
22+ create_line_break ,
2123)
22- from chime_dash .app .services .callbacks import SidebarCallbacks
2324
2425FLOAT_INPUT_MIN = 0.001
2526FLOAT_INPUT_STEP = "any"
3738 },
3839 current_hospitalized = {"type" : "number" , "min" : 0 , "step" : 1 },
3940 ###
41+ line_break_1 = {"type" : "linebreak" },
4042 spread_parameters = {"type" : "header" , "size" : "h4" },
43+ spread_parameters_checkbox = {"type" : "switch" , "on" : False },
4144 date_first_hospitalized = {
4245 "type" : "date" ,
4346 "min_date_allowed" : datetime (2019 , 10 , 1 ),
44- "max_date_allowed" : datetime (2021 , 12 , 31 ),
47+ "max_date_allowed" : datetime (2021 , 12 , 31 )
4548 },
4649 doubling_time = {"type" : "number" , "min" : FLOAT_INPUT_MIN , "step" : FLOAT_INPUT_STEP },
50+ social_distancing_checkbox = {"type" : "switch" , "on" : False },
51+ social_distancing_start_date = {
52+ "type" : "date" ,
53+ "min_date_allowed" : datetime (2019 , 10 , 1 ),
54+ "max_date_allowed" : datetime (2021 , 12 , 31 ),
55+ },
4756 relative_contact_rate = {
4857 "type" : "number" ,
4958 "min" : 0.0 ,
5261 "percent" : True ,
5362 },
5463 ###
64+ line_break_2 = {"type" : "linebreak" },
5565 severity_parameters = {"type" : "header" , "size" : "h4" },
5666 hospitalized_rate = {
5767 "type" : "number" ,
7989 icu_los = {"type" : "number" , "min" : 0 , "step" : 1 },
8090 ventilated_los = {"type" : "number" , "min" : 0 , "step" : 1 },
8191 ###
92+ line_break_3 = {"type" : "linebreak" },
8293 display_parameters = {"type" : "header" , "size" : "h4" },
8394 n_days = {"type" : "number" , "min" : 30 , "step" : 1 },
8495 current_date = {
89100 "date" : date .today (),
90101 },
91102 max_y_axis_value = {"type" : "number" , "min" : 10 , "step" : 10 , "value" : None },
92- show_tables = {"type" : "switch" , "value " : False },
103+ show_tables = {"type" : "switch" , "on " : False },
93104))
94105
95106
@@ -107,13 +118,24 @@ class Sidebar(Page):
107118 input_type_map = ReadOnlyDict (OrderedDict (
108119 (key , value ["type" ])
109120 for key , value in _SIDEBAR_ELEMENTS .items ()
110- if value ["type" ] not in ("header" ,)
121+ if value ["type" ] not in ("header" , "linebreak" )
111122 ))
123+
112124 input_value_map = ReadOnlyDict (OrderedDict (
113- (key , {"number" : "value" , "date" : "date" }.get (value , "value" ))
125+ (key , {"number" : "value" , "date" : "date" , "switch" : "on" }.get (value , "value" ))
114126 for key , value in input_type_map .items ()
115127 ))
116128
129+ input_state_map = ReadOnlyDict (OrderedDict (
130+ [
131+ ('group_date_first_hospitalized' , 'style' ),
132+ ('group_doubling_time' , 'style' ),
133+ ('group_social_distancing_start_date' , 'style' ),
134+ ('group_relative_contact_rate' , 'style' ),
135+ ]
136+ ))
137+
138+
117139 def get_html (self ) -> List [ComponentMeta ]:
118140 """Initializes the view
119141 """
@@ -129,6 +151,8 @@ def get_html(self) -> List[ComponentMeta]:
129151 element = create_date_input (idx , data , self .content , self .defaults )
130152 elif data ["type" ] == "header" :
131153 element = create_header (idx , self .content )
154+ elif data ["type" ] == "linebreak" :
155+ element = create_line_break (idx )
132156 else :
133157 raise ValueError (
134158 "Failed to parse input '{idx}' with data '{data}'" .format (
@@ -151,6 +175,7 @@ def get_html(self) -> List[ComponentMeta]:
151175 "top" : "56px" ,
152176 "width" : "320px" ,
153177 "zIndex" : 1 ,
178+ "padding-top" : "1rem" ,
154179 },
155180 )
156181
0 commit comments