Improve UX (#9)
* Go to chat tab when resignin * Allow placeholder message configurable * Hide setting tabs if there aren't any settings
This commit is contained in:
parent
ecf09b275f
commit
e187e23dd1
|
@ -24,14 +24,20 @@ class App(BaseApp):
|
|||
"""Render the UI"""
|
||||
self._tabs = {}
|
||||
|
||||
with gr.Tabs() as self.tabs:
|
||||
if self.f_user_management:
|
||||
from ktem.pages.login import LoginPage
|
||||
|
||||
with gr.Tab("Welcome", elem_id="login-tab") as self._tabs["login-tab"]:
|
||||
with gr.Tab(
|
||||
"Welcome", elem_id="login-tab", id="login-tab"
|
||||
) as self._tabs["login-tab"]:
|
||||
self.login_page = LoginPage(self)
|
||||
|
||||
with gr.Tab(
|
||||
"Chat", elem_id="chat-tab", visible=not self.f_user_management
|
||||
"Chat",
|
||||
elem_id="chat-tab",
|
||||
id="chat-tab",
|
||||
visible=not self.f_user_management,
|
||||
) as self._tabs["chat-tab"]:
|
||||
self.chat_page = ChatPage(self)
|
||||
|
||||
|
@ -40,23 +46,33 @@ class App(BaseApp):
|
|||
f"{index.name} Index",
|
||||
elem_id=f"{index.id}-tab",
|
||||
elem_classes="indices-tab",
|
||||
id=f"{index.id}-tab",
|
||||
visible=not self.f_user_management,
|
||||
) as self._tabs[f"{index.id}-tab"]:
|
||||
page = index.get_index_page_ui()
|
||||
setattr(self, f"_index_{index.id}", page)
|
||||
|
||||
with gr.Tab(
|
||||
"Admin", elem_id="admin-tab", visible=not self.f_user_management
|
||||
"Admin",
|
||||
elem_id="admin-tab",
|
||||
id="admin-tab",
|
||||
visible=not self.f_user_management,
|
||||
) as self._tabs["admin-tab"]:
|
||||
self.admin_page = AdminPage(self)
|
||||
|
||||
with gr.Tab(
|
||||
"Settings", elem_id="settings-tab", visible=not self.f_user_management
|
||||
"Settings",
|
||||
elem_id="settings-tab",
|
||||
id="settings-tab",
|
||||
visible=not self.f_user_management,
|
||||
) as self._tabs["settings-tab"]:
|
||||
self.settings_page = SettingsPage(self)
|
||||
|
||||
with gr.Tab(
|
||||
"Help", elem_id="help-tab", visible=not self.f_user_management
|
||||
"Help",
|
||||
elem_id="help-tab",
|
||||
id="help-tab",
|
||||
visible=not self.f_user_management,
|
||||
) as self._tabs["help-tab"]:
|
||||
self.help_page = HelpPage(self)
|
||||
|
||||
|
@ -75,7 +91,7 @@ class App(BaseApp):
|
|||
else gr.update(visible=False)
|
||||
)
|
||||
for k in self._tabs.keys()
|
||||
)
|
||||
) + [gr.update(selected="login-tab")]
|
||||
|
||||
with Session(engine) as session:
|
||||
user = session.exec(select(User).where(User.id == user_id)).first()
|
||||
|
@ -100,6 +116,8 @@ class App(BaseApp):
|
|||
else:
|
||||
tabs_update.append(gr.update(visible=True))
|
||||
|
||||
tabs_update.append(gr.update(selected="chat-tab"))
|
||||
|
||||
return tabs_update
|
||||
|
||||
self.subscribe_event(
|
||||
|
@ -107,7 +125,7 @@ class App(BaseApp):
|
|||
definition={
|
||||
"fn": signed_in_out,
|
||||
"inputs": [self.user_id],
|
||||
"outputs": list(self._tabs.values()),
|
||||
"outputs": list(self._tabs.values()) + [self.tabs],
|
||||
"show_progress": "hidden",
|
||||
},
|
||||
)
|
||||
|
@ -117,7 +135,7 @@ class App(BaseApp):
|
|||
definition={
|
||||
"fn": signed_in_out,
|
||||
"inputs": [self.user_id],
|
||||
"outputs": list(self._tabs.values()),
|
||||
"outputs": list(self._tabs.values()) + [self.tabs],
|
||||
"show_progress": "hidden",
|
||||
},
|
||||
)
|
||||
|
|
|
@ -304,6 +304,7 @@ class ChatPage(BasePage):
|
|||
self.chat_control.conversation,
|
||||
self.chat_control.conversation_rn,
|
||||
self.chat_panel.chatbot,
|
||||
self.info_panel,
|
||||
]
|
||||
+ self._indices_input,
|
||||
"show_progress": "hidden",
|
||||
|
@ -406,13 +407,19 @@ class ChatPage(BasePage):
|
|||
text, refs = "", ""
|
||||
|
||||
len_ref = -1 # for logging purpose
|
||||
msg_placeholder = getattr(
|
||||
flowsettings, "KH_CHAT_MSG_PLACEHOLDER", "Thinking ..."
|
||||
)
|
||||
|
||||
print(msg_placeholder)
|
||||
while True:
|
||||
try:
|
||||
response = queue.get_nowait()
|
||||
except Exception:
|
||||
state[pipeline.get_info()["id"]] = reasoning_state["pipeline"]
|
||||
yield chat_history + [(chat_input, text or "Thinking ...")], refs, state
|
||||
yield chat_history + [
|
||||
(chat_input, text or msg_placeholder)
|
||||
], refs, state
|
||||
continue
|
||||
|
||||
if response is None:
|
||||
|
|
|
@ -72,6 +72,31 @@ class SettingsPage(BasePage):
|
|||
self._components = {}
|
||||
self._reasoning_mode = {}
|
||||
|
||||
# render application page if there are application settings
|
||||
self._render_app_tab = False
|
||||
if self._default_settings.application.settings:
|
||||
self._render_app_tab = True
|
||||
|
||||
# render index page if there are index settings (general and/or specific)
|
||||
self._render_index_tab = False
|
||||
if self._default_settings.index.settings:
|
||||
self._render_index_tab = True
|
||||
else:
|
||||
for sig in self._default_settings.index.options.values():
|
||||
if sig.settings:
|
||||
self._render_index_tab = True
|
||||
break
|
||||
|
||||
# render reasoning page if there are reasoning settings
|
||||
self._render_reasoning_tab = False
|
||||
if len(self._default_settings.reasoning.settings) > 1:
|
||||
self._render_reasoning_tab = True
|
||||
else:
|
||||
for sig in self._default_settings.reasoning.options.values():
|
||||
if sig.settings:
|
||||
self._render_reasoning_tab = True
|
||||
break
|
||||
|
||||
self.on_building_ui()
|
||||
|
||||
def on_building_ui(self):
|
||||
|
@ -79,11 +104,8 @@ class SettingsPage(BasePage):
|
|||
if self._app.f_user_management:
|
||||
with gr.Tab("User settings"):
|
||||
self.user_tab()
|
||||
with gr.Tab("General application settings"):
|
||||
self.app_tab()
|
||||
with gr.Tab("Index settings"):
|
||||
self.index_tab()
|
||||
with gr.Tab("Reasoning settings"):
|
||||
self.reasoning_tab()
|
||||
|
||||
def on_subscribe_public_events(self):
|
||||
|
@ -221,6 +243,7 @@ class SettingsPage(BasePage):
|
|||
return "", ""
|
||||
|
||||
def app_tab(self):
|
||||
with gr.Tab("General application settings", visible=self._render_app_tab):
|
||||
for n, si in self._default_settings.application.settings.items():
|
||||
obj = render_setting_item(si, si.value)
|
||||
self._components[f"application.{n}"] = obj
|
||||
|
@ -232,6 +255,7 @@ class SettingsPage(BasePage):
|
|||
# obj = render_setting_item(si, si.value)
|
||||
# self._components[f"index.{n}"] = obj
|
||||
|
||||
with gr.Tab("Index settings", visible=self._render_index_tab):
|
||||
for pn, sig in self._default_settings.index.options.items():
|
||||
with gr.Tab(f"Index {pn}"):
|
||||
for n, si in sig.settings.items():
|
||||
|
@ -239,6 +263,7 @@ class SettingsPage(BasePage):
|
|||
self._components[f"index.options.{pn}.{n}"] = obj
|
||||
|
||||
def reasoning_tab(self):
|
||||
with gr.Tab("Reasoning settings", visible=self._render_reasoning_tab):
|
||||
with gr.Group():
|
||||
for n, si in self._default_settings.reasoning.settings.items():
|
||||
if n == "use":
|
||||
|
|
Loading…
Reference in New Issue
Block a user