def _init_cells_(self): ticker_label_div = MyHTML.div('my_recommender_position_label_div', 'Position:', True) ticker_div = MyHTML.div('my_recommender_position_div', '', False) self.set_value(1, 1, MyHTML.div_embedded([ticker_label_div, MyHTML.span(' '), ticker_div])) self.set_value(1, 2, MyDCC.markdown('my_recommender_markdown')) self.set_value(1, 3, MyDCC.markdown('my_recommender_news_markdown'))
def __init__(self, app: Dash, sys_config: SystemConfiguration, trade_handler_online: PatternTradeHandler): MyPatternDashBaseTab.__init__(self, app, sys_config) self.exchange_config = self.sys_config.exchange_config self._trade_handler_online = trade_handler_online self._df_trade = self.sys_config.db_stock.get_trade_records_for_replay_as_dataframe( ) self._df_trade_for_replay = self._df_trade[ TradeTable.get_columns_for_replay()] self._trade_rows_for_data_table = MyDCC.get_rows_from_df_for_data_table( self._df_trade_for_replay) self._df_pattern = self.sys_config.db_stock.get_pattern_records_for_replay_as_dataframe( ) self._df_pattern_for_replay = self._df_pattern[ PatternTable.get_columns_for_replay()] self._pattern_rows_for_data_table = MyDCC.get_rows_from_df_for_data_table( self._df_pattern_for_replay) self.__init_selected_row__() self.__init_replay_handlers__() self._selected_pattern_trade = None self._selected_buy_trigger = None self._selected_trade_strategy = None self._n_click_restart = 0 self._n_click_cancel_trade = 0 self._n_click_reset = 0 self._replay_speed = 4 self._trades_stored_number = 0 self._trades_online_active_number = 0 self._trades_online_all_number = 0 self._pattern_stored_number = 0 self._cached_trade_table = None self._time_stamp_last_ticker_refresh = MyDate.time_stamp_now() self._check_actual_trades_for_trade_handler_online_n_intervals = -1 self._print_callback_start_details = False
def _init_cells_(self): ticker_label_div = MyHTML.div('my_trade_ticker_label_div', 'Ticker:', True) ticker_div = MyHTML.div('my_trade_ticker_div', '', False) self.set_value(1, 1, MyHTML.div_embedded([ticker_label_div, MyHTML.span(' '), ticker_div])) self.set_value(1, 2, MyDCC.markdown('my_trade_markdown')) self.set_value(1, 3, MyDCC.markdown('my_trade_news_markdown'))
def __get_div_for_app_layout__(self): children_list = [ MyHTMLHeaderTable().get_table(), MyDCC.interval( 'my_interval_timer', self.bitfinex_config.ticker_refresh_rate_in_seconds), MyDCC.interval('my_interval_refresh', 120), self.__get_tabs_for_app__() ] return MyHTML.div('my_app', children_list)
def _init_cells_(self): online_label_div = MyHTML.div(self.my_search_online_label_div, 'Online Search', True) online_value_div = MyHTML.div(self.my_search_online_value_div, '', False) found_label_div = MyHTML.div(self.my_search_found_label_div, 'Found:', True) found_valid_value_div = MyHTML.div( self.my_search_found_valid_value_div, '0') found_all_value_div = MyHTML.div(self.my_search_found_all_value_div, '0') found_div = MyHTML.div_embedded([ found_label_div, MyHTML.span(' '), found_valid_value_div, MyHTML.span('/'), found_all_value_div ], inline=True) self.set_value( 1, 1, MyHTML.div_embedded( [online_label_div, MyHTML.span(' '), online_value_div])) self.set_value(1, 2, MyDCC.markdown(self.my_search_markdown)) self.set_value(1, 3, MyHTML.div_embedded([found_div, MyHTML.span(' ')]))
def _init_cells_(self): chart_label_div = MyHTML.div('my_pattern_statistics_chart_label_div', 'Chart:', True) chart_div = MyHTML.div('my_pattern_statistics_chart_type_div', '', False) statistics_label_div = MyHTML.div('my_pattern_statistics_label_div', 'Pattern:', True) statistics_div = MyHTML.div('my_pattern_statistics_div', '0') statistics_summary_div = MyHTML.div_embedded( [statistics_label_div, MyHTML.span(' '), statistics_div]) statistics_detail_label_div = MyHTML.div( 'my_pattern_statistics_detail_label_div', 'Type:', True) statistics_detail_div = MyHTML.div('my_pattern_statistics_detail_div', '0') statistics_detail_summary_div = MyHTML.div_embedded([ statistics_detail_label_div, MyHTML.span(' '), statistics_detail_div ]) self.set_value( 1, 1, MyHTML.div_embedded([chart_label_div, MyHTML.span(' '), chart_div])) self.set_value(1, 2, MyDCC.markdown('my_pattern_statistics_markdown')) self.set_value( 1, 3, MyHTML.div_embedded( [statistics_summary_div, statistics_detail_summary_div]))
def __get_chart_type_heatmap__(self): graph_list = [] if self._index in ['', INDICES.ALL]: index_list = [ INDICES.CRYPTO_CCY, INDICES.DOW_JONES, INDICES.NASDAQ100, INDICES.Q_FSE ] # ToDo Check if Q_FSE works... else: index_list = [self._index] for index in index_list: index_for_key = index.replace(' ', '_').lower() index_for_key = index_for_key if self._index == '' else '{}_{}'.format( index_for_key, 'single') chart_id = '{}_{}'.format(self._chart_id, index_for_key) # print('__get_chart_type_heatmap__: chart_id={}'.format(chart_id)) chart_name = index graph_api = DccGraphApi(chart_id, chart_name) graph_api.figure_data = self.__get_heatmap_figure_data__(index) graph_api.figure_layout_height = 200 graph_api.figure_layout_margin = { 'b': 50, 'r': 50, 'l': 50, 't': 50 } graph_list.append(MyDCC.graph(graph_api)) return graph_list
def __get_chart_type_stack_group__(self): graph_api = DccGraphApi(self._chart_id, '{} ({})'.format(self._chart_name, 'Assets')) graph_api.figure_data = self.__get_stack_group_figure_data__() # print(graph_api.figure_data) graph_api.figure_layout_x_axis_dict = self.__get_figure_layout_x_axis_dict__() graph_api.figure_layout_y_axis_dict = self.__get_figure_layout_y_axis_dict__(graph_api) return [MyDCC.graph(graph_api)]
def __get_dcc_graph_element__(self, detector, graph_api: DccGraphApi): pattern_df = graph_api.df pattern_list = detector.pattern_list if detector else [ graph_api.pattern_trade.pattern ] # print('Pattern_list={}'.format(pattern_list)) period = detector.sys_config.period if detector else graph_api.period # print('_period={} from detector:{}'.format(_period, detector is None)) candlestick = self.__get_candlesticks_trace__(pattern_df, graph_api.ticker_id, period) # print(candlestick) shapes = self.__get_pattern_shape_list__(pattern_list) shapes += self.__get_pattern_regression_shape_list__(pattern_list) if detector: shapes += self.__get_fibonacci_shape_list__(detector) shapes += self.__get_wave_peak_shape_list__(detector) if graph_api.pattern_trade: # graph_api.pattern_trade.ticker_actual.print_ticker('__get_pattern_trade_shape_list__...: last ticker') shapes += self.__get_pattern_trade_shape_list__( graph_api.pattern_trade) if (graph_api.indicator == INDI.BOLLINGER or True) and detector is not None: indicator_shape_list = self.__get_indicator_shape_list__( detector, graph_api.indicator) shapes += indicator_shape_list graph_api.figure_layout_shapes = [ my_shapes.shape_parameters for my_shapes in shapes ] # print(' graph_api.figure_layout_shapes: {}'.format( graph_api.figure_layout_shapes)) graph_api.figure_layout_annotations = [ my_shapes.annotation_parameters for my_shapes in shapes ] graph_api.figure_data = [candlestick] return MyDCC.graph(graph_api)
def _init_cells_(self): id_label_div = MyHTML.div(self.my_sales_id_label_div, 'Sale ID:', True) id_value_div = MyHTML.div(self.my_sales_id_value_div, '', False) found_label_div = MyHTML.div(self.my_sales_found_label_div, 'Available:', True) found_valid_value_div = MyHTML.div(self.my_sales_found_valid_value_div, '0') found_all_value_div = MyHTML.div(self.my_sales_found_all_value_div, '0') found_div = MyHTML.div_embedded([ found_label_div, MyHTML.span(' '), found_valid_value_div, MyHTML.span('/'), found_all_value_div ], inline=True) self.set_value( 1, 1, MyHTML.div_embedded([id_label_div, MyHTML.span(' '), id_value_div])) self.set_value(1, 2, MyDCC.markdown(self.my_sales_markdown)) self.set_value(1, 3, MyHTML.div_embedded([found_div, MyHTML.span(' ')]))
def __get_chart_type_area_winner_loser__(self): graph_api = DccGraphApi(self._chart_id, '{} ({})'.format(self._chart_name, 'winner & loser')) graph_api.figure_data = self.__get_area_winner_loser_figure_data__() graph_api.figure_layout_x_axis_dict = None # dict(type='date',) graph_api.figure_layout_y_axis_dict = None # dict(type='linear', range=[1, 100], dtick=20, ticksuffix='%') # graph_api.figure_layout_y_axis_dict = {'type': 'log', 'autorange': True} return [MyDCC.graph(graph_api)]
def __get_chart_type_pie__(self): graph_api_all = DccGraphApi(self._chart_id + '_all', self._chart_name + ' (all)') graph_api_all.figure_data = self.__get_pie_figure_data__('all') graph_api_winner = DccGraphApi(self._chart_id + '_winner', self._chart_name + ' (winner)') graph_api_winner.figure_data = self.__get_pie_figure_data__('winner') graph_api_loser = DccGraphApi(self._chart_id + '_loser', self._chart_name + ' (loser)') graph_api_loser.figure_data = self.__get_pie_figure_data__('loser') w_h, l_h = self.__get_winner_loser_heights__(graph_api_winner.values_total, graph_api_loser.values_total) graph_api_all.figure_layout_height = 800 graph_api_winner.figure_layout_height = 800 graph_api_loser.figure_layout_height = 800 graph_api_loser.figure_layout_height *= w_h graph_api_loser.figure_layout_height *= l_h graph_api_all.figure_layout_margin = {'b': 200, 'r': 50, 'l': 50, 't': 50} graph_api_winner.figure_layout_margin = {'b': 200, 'r': 50, 'l': 50, 't': 50} graph_api_loser.figure_layout_margin = {'b': 200, 'r': 50, 'l': 50, 't': 50} return [MyDCC.graph(graph_api_all), MyDCC.graph(graph_api_winner), MyDCC.graph(graph_api_loser)]
def __get_html_div_with_date_picker_range__(): return html.Div( [ MyHTML.h3('Select start and end dates:'), MyDCC.get_date_picker_range('my_date_picker', datetime.today() - timedelta(days=160)) ], style={'display': 'inline-block', 'vertical-align': 'bottom', 'height': 20} )
def get_div_for_tab(self): children_list = [ self.__get_embedded_div_for_last_run_and_start_job_button__(), MyHTML.div_with_table(self._data_table_div, self.__get_table_for_jobs__()), MyDCC.markdown(self._my_jobs_entry_markdown) ] return MyHTML.div('my_jobs_div', children_list)
def get_div_for_tab(self): children_list = [ self._header_table.get_table(), MyHTML.div_with_input(element_id=self._my_sales_filter_input, placeholder='Please enter filter for my sales...', size=500, height=27), MyHTML.div_with_button_link(self._my_sales_link, href='', title='', hidden='hidden'), MyHTML.div_with_html_button_submit(self._my_sales_show_detail_button, children='Details', hidden='hidden'), MyHTML.div_with_html_button_submit(self._my_sales_reset_button, children='Reset', hidden='hidden'), MyHTML.div_with_table(self._data_table_div, self.__get_sale_grid_table__()), MyDCC.markdown(self._my_sales_sale_entry_markdown), MyHTML.div_with_dcc_drop_down(**self._dd_handler.get_drop_down_parameters(SLDD.SALE_ENTITIES)), MyHTML.div(self._my_sales_regression_chart, self.__get_sales_regression_chart__(), inline=False), MyHTML.div_with_button_link(self._my_sales_similar_sale_link, href='', title='', hidden='hidden'), MyHTML.div_with_table(self._my_sales_similar_sale_grid_table_div, self.__get_similar_sale_grid_table__('')), MyDCC.markdown(self._my_sales_similar_sale_entry_markdown), ] return MyHTML.div(self._my_sales_div, children_list)
def get_chart_type_regression(self, master_sale: SalesmanSale): graph_api = DccGraphApi(self._chart_id, '{}'.format(master_sale.title), use_title_for_y_axis=False) graph_api.figure_data = self.__get_regression_figure_data__( master_sale) graph_api.figure_layout_x_axis_dict = self.__get_figure_layout_x_axis_dict__( ) # graph_api.figure_layout_y_axis_dict = self.__get_figure_layout_y_axis_dict__(graph_api) return [MyDCC.graph(graph_api)]
def __get_table_for_log__(self): self._log_table.update_rows_for_selected_log_type( self._log_data_frame_dict, self._selected_log_type, self._selected_process, self._selected_process_step, self._selected_date_range) rows = self._log_table.get_rows_for_selected_items() min_height = self._log_table.height_for_display return MyDCC.data_table(self._data_table_name, rows, [], min_height=min_height)
def get_chart_type_scatter(self, title: str): graph_api = DccGraphApi(self._chart_id, '{}: {}'.format(self._chart_name, title), use_title_for_y_axis=False) graph_api.figure_data = self.__get_scatter_figure_data__() graph_api.figure_layout_x_axis_dict = self.__get_figure_layout_x_axis_dict__( ) graph_api.figure_layout_y_axis_dict = self.__get_figure_layout_y_axis_dict__( graph_api) return [MyDCC.graph(graph_api)]
def __get_table_for_jobs__(self): self._grid_table = JobTable(self._job_handler) rows = self._grid_table.get_rows_for_selected_items() return MyDCC.data_table(self._data_table_name, rows=rows, columns=self._grid_table.columns, style_cell_conditional=self._grid_table. get_table_style_cell_conditional(), style_data_conditional=self._grid_table. get_table_style_data_conditional(rows), page_size=100)
def __get_search_result_grid_table__(self): if len(self._online_rows) == 0: return 'Nothing found - please adjust your query...' columns = SLDC.get_columns_for_search_results() return MyDCC.data_table( self._elements.my_search_result_grid_table, rows=self._online_rows, style_cell_conditional=self.get_table_style_cell_conditional(), style_data_conditional=self.get_table_style_data_conditional( self._online_rows), columns=columns)
def __get_table_for_portfolio__(self): self.__set_portfolio_rows_for_data_table__() return MyDCC.data_table( self._data_table_name, rows=self._table_rows, selected_row_indices=[] if self._selected_row_index == -1 else [self._selected_row_index], style_cell_conditional=self.get_table_style_cell_conditional(), style_data_conditional=self.get_table_style_data_conditional( self._table_rows), columns=self.columns, )
def __get_table_for_log__(self): self._log_table.update_rows_for_selected_log_type( self._log_data_frame_dict, self._selected_log_type, self._selected_process, self._selected_process_step, self._selected_date_range) rows = self._log_table.get_rows_for_selected_items() return MyDCC.data_table(self._data_table_name, rows=rows, columns=self._log_table.columns, style_data_conditional=self._log_table. get_table_style_data_conditional(rows), style_cell_conditional=self._log_table. get_table_style_cell_conditional())
def get_div_for_tab(self): children_list = [ self._header_table.get_table(), MyHTML.div_with_dcc_drop_down( **self._dd_handler.get_drop_down_parameters( SRDD.SEARCH_SOURCE)), MyHTML.div_with_dcc_drop_down( **self._dd_handler.get_drop_down_parameters( SRDD.SEARCH_REGION)), MyHTML.div_with_dcc_drop_down( **self._dd_handler.get_drop_down_parameters( SRDD.SEARCH_CATEGORY)), MyHTML.div_with_dcc_drop_down( **self._dd_handler.get_drop_down_parameters( SRDD.SEARCH_SUB_CATEGORY)), MyHTML.div_with_html_button_submit( self._elements.my_search_refresh_button, children='Refresh', hidden=''), MyHTML.div_with_html_element( self._elements.my_search_online_input_table, self._search_online_input_table.get_table()), MyDCC.markdown(self._elements.my_search_input_markdown), MyHTML.div_with_dcc_drop_down( **self._dd_handler.get_drop_down_parameters( SRDD.SEARCH_ENTITIES)), MyHTML.div_with_button_link( self._elements.my_search_result_entry_link, href='', title='', hidden='hidden'), MyDCC.markdown(self._elements.my_search_test_markdown), MyHTML.div_with_table( self._elements.my_search_result_grid_table_div, ''), MyDCC.markdown(self._elements.my_search_result_entry_markdown), MyHTML.div(self._elements.my_search_result_graph_div, '', False), ] return MyHTML.div(self._elements.my_search_div, children_list)
def _init_cells_(self): crypto_client_label_div = MyHTML.div( 'my_models_crypto_client_label_div', 'Bitfinex:', bold=True) crypto_client_value_div = MyHTML.div('my_models_crypto_client_div', '0', bold=False) crypto_client_div = MyHTML.div_embedded([ crypto_client_label_div, MyHTML.span(' '), crypto_client_value_div ]) stock_client_label_div = MyHTML.div('my_models_stock_client_label_div', 'IKBR:', bold=True) stock_client_value_div = MyHTML.div('my_models_stock_client_div', '0', bold=False) stock_client_div = MyHTML.div_embedded( [stock_client_label_div, MyHTML.span(' '), stock_client_value_div]) crypto_client_trades_label_div = MyHTML.div( 'my_models_crypto_client_trades_label_div', 'Trades (Bitfinex):', bold=True) crypto_client_trades_value_div = MyHTML.div( 'my_models_crypto_client_trades_div', '0', bold=False) crypto_client_trades_div = MyHTML.div_embedded([ crypto_client_trades_label_div, MyHTML.span(' '), crypto_client_trades_value_div ]) stock_client_trades_label_div = MyHTML.div( 'my_models_stock_client_trades_label_div', 'Trades (IBKR):', bold=True) stock_client_trades_value_div = MyHTML.div( 'my_models_stock_client_trades_div', '0', bold=False) stock_client_trades_div = MyHTML.div_embedded([ stock_client_trades_label_div, MyHTML.span(' '), stock_client_trades_value_div ]) self.set_value( 1, 1, MyHTML.div_embedded([crypto_client_div, stock_client_div])) self.set_value(1, 2, MyDCC.markdown('my_models_statistics_markdown')) self.set_value( 1, 3, MyHTML.div_embedded( [crypto_client_trades_div, stock_client_trades_div]))
def _init_cells_(self): user_label_div = MyHTML.div('my_user_label_div', 'Username:'******'my_user_name_div', 'Josef Sertl', False) time_str = MyDate.get_time_from_datetime(datetime.now()) login_label_div = MyHTML.div('my_login_label_div', 'Last login:'******'my_login_div', '{}'.format(time_str), False) http_connection_label_div = MyHTML.div('my_http_connection_label_div', 'Connection:', True, True) http_connection_div = MyHTML.div('my_http_connection_div', MyHttpClient.get_status_message(), False) my_user_div = MyHTML.div_embedded([user_label_div, MyHTML.span(' '), user_div]) my_login_div = MyHTML.div_embedded([login_label_div, MyHTML.span(' '), login_time_div]) my_http_connection_div = MyHTML.div_embedded([http_connection_label_div, MyHTML.span(' '), http_connection_div]) dash_board_title_div = MyHTML.div('my_dashboard_title_div', 'Salesman Dashboard', inline=False) dash_board_sub_title_div = MyHTML.div('my_dashboard_sub_title_div', '', bold=False, color='red') time_label_div = MyHTML.div('my_time_label_div', 'Time:', True) time_value_div = MyHTML.div('my_time_div', '', False) time_div = MyHTML.div_embedded([time_label_div, MyHTML.span(' '), time_value_div]) last_refresh_label_div = MyHTML.div('my_last_refresh_label_div', 'Last refresh:', True) last_refresh_time_div = MyHTML.div('my_last_refresh_time_div', time_str) last_refresh_div = MyHTML.div_embedded([last_refresh_label_div, MyHTML.span(' '), last_refresh_time_div]) next_refresh_label_div = MyHTML.div('my_next_refresh_label_div', 'Next refresh:', True) next_refresh_time_div = MyHTML.div('my_next_refresh_time_div', time_str) next_refresh_div = MyHTML.div_embedded([next_refresh_label_div, MyHTML.span(' '), next_refresh_time_div]) sales_label_div = MyHTML.div('my_sales_label_div', 'My Sales:', True) sales_active_div = MyHTML.div('my_sales_active_div', '0') sales_all_div = MyHTML.div('my_sales_all_div', '0') similar_sales_label_div = MyHTML.div('my_similar_sales_label_div', 'Similar Sales:', True) similar_sales_div = MyHTML.div('my_similar_sales_div', '0') trade_div = MyHTML.div_embedded([similar_sales_label_div, MyHTML.span(' '), similar_sales_div]) online_div = MyHTML.div_embedded([ sales_label_div, MyHTML.span(' '), sales_active_div, MyHTML.span('/'), sales_all_div], inline=True) self.set_value(1, 1, MyHTML.div_embedded([my_user_div, my_login_div, my_http_connection_div])) self.set_value(1, 2, MyHTML.div_embedded([dash_board_title_div, dash_board_sub_title_div])) self.set_value(1, 3, MyHTML.div_embedded([time_div, next_refresh_div, last_refresh_div])) self.set_value(2, 1, self.__get_timer__()) self.set_value(2, 2, MyDCC.markdown('my_dashboard_markdown')) self.set_value(2, 3, MyHTML.div_embedded([online_div, trade_div]))
def __get_sale_grid_table__(self): if self._dd_handler.selected_sale_source == SLSRC.FILE: grid_table = self._sale_file_grid_table else: grid_table = self._sale_grid_table rows = grid_table.get_rows_for_selection(self._selection_api, False) min_height = grid_table.height_for_display return MyDCC.data_table( self._data_table_name, rows=rows, selected_row_indices=self._selected_row_indices, style_cell_conditional=grid_table.get_table_style_cell_conditional(), style_data_conditional=grid_table.get_table_style_data_conditional(rows), columns=grid_table.columns, min_height=min_height)
def __get_table_for_db__(self): if self._df_for_grid_table is None: return '' column_sort = self._db_table.column_sort self._db_grid_table = DBTable(self._df_for_grid_table, self._selected_table_name, self._selected_date_range, column_sort) rows = self._db_grid_table.get_rows_for_selected_items() return MyDCC.data_table( self._data_table_name, rows, columns=self._db_grid_table.columns, style_cell_conditional=self._db_grid_table. get_table_style_cell_conditional(), )
def __get_similar_sale_grid_table__(self, master_id: str, selected_entity_values: list=None): if master_id == '': return '' self._selection_api.master_id = master_id self._selection_api.entity_values = selected_entity_values self._selection_api.master_sale = self._sale_factory.get_sale_from_db_by_sale_id(master_id) rows = self._similar_sale_grid_table.get_rows_for_selection(self._selection_api, True) if len(rows) == 0: return 'Nothing found' return MyDCC.data_table( self._my_sales_similar_sale_grid_table, rows=rows, style_cell_conditional=self._similar_sale_grid_table.get_table_style_cell_conditional(), style_data_conditional=self._similar_sale_grid_table.get_table_style_data_conditional(rows), columns=self._similar_sale_grid_table.columns, )
def __get_table_for_trades__(self, take_cached=False): if take_cached and self._cached_trade_table is not None: return self._cached_trade_table rows = self.__get_table_rows_for_trades__() selected_row_indices_for_table = self.__get_selected_row_indices_for_trade_table__( rows) if len(rows) == 0: rows = self.__get_empty_data_row__() self._cached_trade_table = MyDCC.data_table( self._data_table_name, rows=rows, selected_row_indices=selected_row_indices_for_table, style_cell_conditional=TradeTable.get_table_style_cell_conditional( self._selected_trade_type), style_data_conditional=TradeTable.get_table_style_data_conditional( self._selected_trade_type, rows), columns=self.__get_columns_for_trading_table__()) return self._cached_trade_table
def get_div_for_tab(self): children_list = [ MyHTMLTabLogHeaderTable().get_table(), MyHTML.div_with_dcc_drop_down( **self._dd_handler.get_drop_down_parameters( LOGDD.LOG_TYPE, default_value=self._selected_log_type)), MyHTML.div_with_dcc_drop_down( **self._dd_handler.get_drop_down_parameters(LOGDD.PROCESS)), MyHTML.div_with_dcc_drop_down( **self._dd_handler.get_drop_down_parameters( LOGDD.PROCESS_STEP)), MyHTML.div_with_dcc_drop_down( **self._dd_handler.get_drop_down_parameters(LOGDD.DATE_RANGE)), MyHTML.div(self._data_table_div, self.__get_table_for_log__(), False), MyDCC.markdown(self._my_log_entry_markdown) ] return MyHTML.div('my_log_div', children_list)