Example #1
0
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
Example #3
0
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)