72 lines
2.6 KiB
Python
72 lines
2.6 KiB
Python
"""This module is the page for Asset Search feature"""
|
|
|
|
# pylint: disable=line-too-long,import-error,invalid-name
|
|
|
|
from database import display_spanner_query, fts_query, like_query
|
|
from home import table_columns_layout_setup
|
|
from itables.streamlit import interactive_table
|
|
import streamlit as st
|
|
|
|
st.logo(
|
|
"https://storage.googleapis.com/github-repo/generative-ai/sample-apps/finance-advisor-spanner/images/investments.png"
|
|
)
|
|
|
|
|
|
def asset_search_common(query_parameters: list, query_type: str) -> None:
|
|
"""This function implements Asset search common functions"""
|
|
|
|
st.header("FinVest Fund Advisor")
|
|
st.subheader("Asset Search")
|
|
|
|
with st.spinner("Querying Spanner..."):
|
|
if query_type == "PRECISE":
|
|
return_vals = like_query(query_parameters)
|
|
else:
|
|
return_vals = fts_query(query_parameters)
|
|
spanner_query = return_vals.get("query")
|
|
data = return_vals.get("data")
|
|
display_spanner_query(str(spanner_query))
|
|
|
|
interactive_table(data, caption="", **table_columns_layout_setup())
|
|
|
|
|
|
with st.sidebar:
|
|
with st.form("Asset Search"):
|
|
st.subheader("Search Criteria")
|
|
precise_vs_text = st.radio("", ["Full-Text", "Precise"], horizontal=True)
|
|
precise_search = False
|
|
with st.expander("Asset Strategy", expanded=True):
|
|
investment_strategy_pt1 = st.text_input("", value="Europe")
|
|
and_or_exclude = st.radio("", ["AND", "OR", "EXCLUDE"], horizontal=True)
|
|
investment_strategy_pt2 = st.text_input("", value="Asia")
|
|
investment_manager = st.text_input("Investment Manager", value="James")
|
|
investment_strategy = ""
|
|
if precise_vs_text == "Full-Text":
|
|
if and_or_exclude == "EXCLUDE":
|
|
investment_strategy = (
|
|
investment_strategy_pt1 + " -" + investment_strategy_pt2
|
|
)
|
|
else:
|
|
investment_strategy = (
|
|
investment_strategy_pt1
|
|
+ " "
|
|
+ and_or_exclude
|
|
+ " "
|
|
+ investment_strategy_pt2
|
|
)
|
|
else:
|
|
precise_search = True
|
|
asset_search_submitted = st.form_submit_button("Submit")
|
|
if asset_search_submitted:
|
|
if precise_search:
|
|
query_params = [
|
|
investment_strategy_pt1.strip(),
|
|
and_or_exclude,
|
|
investment_strategy_pt2.strip(),
|
|
investment_manager.strip(),
|
|
]
|
|
asset_search_common(query_params, "PRECISE")
|
|
else:
|
|
query_params = [investment_strategy, investment_manager]
|
|
asset_search_common(query_params, "FTS")
|