def show_results(n_clicks, dropdown_value, search_text): if n_clicks in [None, 0]: return "" else: try: if not search_text: return no_query_warning_html() try: entity_query, raw_text = parse_search_box(search_text) except MatscholarWebSearchError: return malformed_query_warning_html(search_text) if dropdown_value == 'abstracts': results = abstracts_results_html(entity_query, raw_text) elif dropdown_value == 'materials': results = materials_results_html(entity_query, raw_text) elif dropdown_value == 'entities': results = entities_results_html(entity_query, raw_text) elif dropdown_value == 'everything': results = everything_results_html(entity_query, raw_text) else: raise ValueError( f"Dropdown selection {dropdown_value} not valid!" ) return results except MatScholarRestError: rester_error = default_message return common_rester_error_html(rester_error)
def everything_results_html(entity_query, raw_text): scroll_down_header_txt = "Scroll down for full results." scroll_down_header = html.Div(scroll_down_header_txt, className="is-size-3") scroll_down = html.Div([ scroll_down_header, ], className="notification is-light has-text-centered") scroll_down_column = html.Div(scroll_down, className="column is-half") scroll_down_columns = html.Div(scroll_down_column, className="columns is-centered") scroll_down_container = html.Div(scroll_down_columns, className="container") entities_results = entities_results_html(entity_query, raw_text) materials_results = materials_results_html(entity_query, raw_text) abstracts_results = abstracts_results_html(entity_query, raw_text) all_results = [entities_results, materials_results, abstracts_results] no_results = no_results_html() if all([str(r) == str(no_results) for r in all_results]): return no_results else: container = html.Div([ scroll_down_container, entities_results, materials_results, abstracts_results, ], className="container") return container
def everything_results_html(entity_query, raw_text): """ Get the html block for all results from the Rester-compatible entity query and text. Results are concatenated. Args: entity_query (dict): The entity query, in Rester-compatible format. raw_text (str, None): Any raw text to search for. Returns: (dash_html_components.Div): The results html block for all search types concatenated. """ scroll_down_header_txt = "Scroll down for more results." scroll_down_header = html.Div(scroll_down_header_txt, className="is-size-3") scroll_down = html.Div( [scroll_down_header], className="notification is-light has-text-centered", ) scroll_down_column = html.Div(scroll_down, className="column is-half") scroll_down_columns = html.Div(scroll_down_column, className="columns is-centered") scroll_down_container = html.Div(scroll_down_columns, className="container") entities_results = entities_results_html(entity_query, raw_text) materials_results = materials_results_html(entity_query, raw_text) abstracts_results = abstracts_results_html(entity_query, raw_text) no_results = no_results_html(pre_label=None) if all([ entities_results == entities_no_results_html, materials_results == materials_no_results_html, abstracts_results == abstracts_no_results_html, ]): return no_results else: container = html.Div( [ scroll_down_container, entities_results, materials_results, abstracts_results, ], className="container", ) return container
def show_search_results(go_button_n_clicks, dropdown_value, search_text): """ Determine what kind of results to show from the search text, search type, and number of clicks of the search button. Args: go_button_n_clicks (int): The number of clicks of the "Go" button. dropdown_value (str): The type of search to execute. search_text (str): The raw search text as entered in the search field. Returns: (dash_html_components.Div): The correct html block for the search type and customized according to search results from the search text. """ if go_button_n_clicks in [None, 0]: return "" else: try: if not search_text: return no_query_warning_html() try: entity_query, raw_text = parse_search_box(search_text) except MatscholarWebSearchError: return malformed_query_warning_html(search_text) if dropdown_value == "abstracts": results = abstracts_results_html(entity_query, raw_text) elif dropdown_value == "materials": results = materials_results_html(entity_query, raw_text) elif dropdown_value == "entities": results = entities_results_html(entity_query, raw_text) elif dropdown_value == "everything": results = everything_results_html(entity_query, raw_text) else: raise ValueError( f"Dropdown selection {dropdown_value} not valid!") if is_cobalt_search(entity_query, raw_text): results = cobalt_warning_html(results) return results except MatScholarRestError: rester_error = ( "Our database had trouble with that query. We are likely " "undergoing maintenance, please visit again later!") return common_rester_error_html(rester_error)