def alerts_tab_component()

in src/backend/entrypoints/streamlit_frontend/components/tabs/alert.py [0:0]


def alerts_tab_component():
    headers = {"Authorization": "Bearer " + st.session_state.keycloak_session.access_token}

    resp = requests.get(f"{ALERTS_BACKEND_SERVICE_URL}/api/v0/alerts", headers=headers)

    alerts = json.loads(resp.content)

    columns_titles = [
        "**Title**",
        "**Active**",
        "**Tickers**",
        "**Alert prompt**",
        "**Trigger type**",
        "**Last call**",
        "**Creation time**",
        "",
        "",
    ]
    column_width = [0.09, 0.07, 0.17, 0.17, 0.07, 0.12, 0.12, 0.07, 0.07]
    title_cols = st.columns(column_width, gap="small")

    for index, column in enumerate(title_cols):
        column_phold = column.empty()
        column_phold.markdown(columns_titles[index])

    def show_alerts(alerts):
        for alert in alerts:
            (
                alert_title_col,
                active_col,
                tickers_col,
                alerts_pr_col,
                trigger_tp_col,
                last_call_col,
                created_col,
                edit_col,
                delete_col,
            ) = st.columns(column_width, gap="small")

            alert_title_phold = alert_title_col.empty()
            alert_title_phold.write(alert["title"])

            active_phold = active_col.empty()
            active_phold.checkbox(
                "Active",
                value=alert["active"],
                key="active_check_" + str(alert["id"]),
                label_visibility="hidden",
                on_change=alert_active_callback,
                args=[
                    alert,
                    st.session_state.keycloak_session.access_token,
                    "active_check_" + str(alert["id"]),
                ],
            )

            tickers_phold = tickers_col.empty()
            tickers_phold.write(alert["tickers_prompt"])

            alerts_pr_phold = alerts_pr_col.empty()
            alert_prompts = alert["alerts_prompt"].split(PROMPTS_SEPARATOR)[::2]
            alerts_pr_phold.write("\n\n".join(alert_prompts))

            trigger_tp_phold = trigger_tp_col.empty()
            trigger_tp_phold.write(alert["trigger_type"])

            last_call_phold = last_call_col.empty()

            if alert["alert_state"] is not None and alert["alert_state"]["last_event_time"] is not None:
                last_call = " ".join(alert["alert_state"]["last_event_time"].split("T"))
                last_call = last_call.split("Z")[0]
            else:
                last_call = "Hasn't been called yet"

            last_call_phold.write(last_call)

            created = " ".join(alert["created"].split("T"))
            created = created.split("Z")[0]
            created_phold = created_col.empty()
            created_phold.write(created)

            edit_phold = edit_col.empty()
            if edit_phold.button(
                "Edit",
                key="edit_btn_" + str(alert["id"]),
                use_container_width=True,
                on_click=alert_edit_callback,
                args=[alert["id"], st.session_state.keycloak_session.access_token],
            ):
                st.experimental_rerun()

            delete_phold = delete_col.empty()
            if delete_phold.button(
                "Delete",
                key="delete_btn_" + str(alert["id"]),
                use_container_width=True,
            ):
                warning_col, submit_col, cancel_col = st.columns([0.8, 0.1, 0.1])
                warning_col_phold = warning_col.container()
                submit_phold = submit_col.container()
                cancel_phold = cancel_col.container()
                warning_col_phold.warning(f"Are you sure you want to delete alert {alert['title']} ?")

                submit_phold.button(
                    "Confirm",
                    use_container_width=True,
                    on_click=alert_delete_callback,
                    args=[alert["id"], st.session_state.keycloak_session.access_token],
                )

                cancel_phold.button("Cancel", use_container_width=True)

    paginate(
        data=alerts,
        show_func=show_alerts,
        page_num=st.session_state.alert_page_num if len(alerts) else 0,
        page_num_key="alert_page_num",
        page_size=st.session_state.alert_page_size if len(alerts) else 10,
        page_size_key="alert_page_size",
    )