67 lines
2.8 KiB
Python
67 lines
2.8 KiB
Python
import gradio as gr
|
|
|
|
import scripts.mo.ui_styled_html as styled
|
|
from scripts.mo.environment import env
|
|
|
|
|
|
def on_id_changed(record_id):
|
|
if record_id is not None and record_id:
|
|
record = env.storage.get_record_by_id(record_id)
|
|
if record is None:
|
|
return [
|
|
gr.HTML.update(value=f'Record with id {record_id} was not found.'),
|
|
gr.HTML.update(visible=False),
|
|
gr.Textbox.update(value=''),
|
|
gr.Button.update(visible=False),
|
|
gr.Button.update(visible=False)
|
|
]
|
|
else:
|
|
return [
|
|
gr.HTML.update(value=styled.record_details(record)),
|
|
gr.HTML.update(visible=bool(record.description)),
|
|
gr.Textbox.update(value=record.description),
|
|
gr.Button.update(visible=True),
|
|
gr.Button.update(visible=record.is_download_possible())
|
|
]
|
|
|
|
return [
|
|
gr.HTML.update(value=f'No record id passed.'),
|
|
gr.HTML.update(visible=False),
|
|
gr.Textbox.update(value=''),
|
|
gr.Button.update(visible=False),
|
|
gr.Button.update(visible=False)
|
|
]
|
|
|
|
|
|
def details_ui_block():
|
|
with gr.Blocks():
|
|
details_id_box = gr.Textbox(label='details_id_box', elem_classes='mo-alert-warning', visible=False)
|
|
with gr.Row():
|
|
back_button = gr.Button("Back")
|
|
remove_button = gr.Button("Remove")
|
|
edit_button = gr.Button('Edit')
|
|
download_button = gr.Button("Download")
|
|
|
|
content_widget = gr.HTML()
|
|
description_html = '<div><p style="margin-left: 0.2rem;">Description:</p>' \
|
|
'<textarea id="mo-description-preview"></textarea></div>'
|
|
description_html_widget = gr.HTML(label='Description:', value=description_html)
|
|
description_input_widget = gr.Textbox(label='description_input_widget',
|
|
elem_classes='mo-alert-warning',
|
|
interactive=False,
|
|
visible=False)
|
|
|
|
details_id_box.change(on_id_changed, inputs=details_id_box,
|
|
outputs=[content_widget, description_html_widget, description_input_widget, edit_button,
|
|
download_button])
|
|
|
|
description_input_widget.change(fn=None, inputs=description_input_widget,
|
|
_js='handleDescriptionPreviewContentChange')
|
|
|
|
back_button.click(fn=None, _js='navigateBack')
|
|
download_button.click(fn=None, inputs=details_id_box, _js='navigateDownloadRecord')
|
|
remove_button.click(fn=None, inputs=details_id_box, _js='navigateRemove')
|
|
edit_button.click(fn=None, inputs=details_id_box, _js='navigateEdit')
|
|
|
|
return details_id_box
|