Skip to content

Commit 2fffe80

Browse files
committed
chore: Combine discard form with action form
1 parent f27efd4 commit 2fffe80

File tree

7 files changed

+69
-164
lines changed

7 files changed

+69
-164
lines changed

crates/frontend/src/api.rs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -567,6 +567,30 @@ pub async fn resume_experiment(
567567
parse_json_response(response).await
568568
}
569569

570+
pub async fn discard_experiment(
571+
exp_id: &str,
572+
change_reason: String,
573+
tenant: &str,
574+
org_id: &str,
575+
) -> Result<ExperimentResponse, String> {
576+
let payload = ExperimentStateChangeRequest {
577+
change_reason: ChangeReason::try_from(change_reason)?,
578+
};
579+
580+
let host = get_host();
581+
let url = format!("{host}/experiments/{exp_id}/discard");
582+
583+
let response = request(
584+
url,
585+
reqwest::Method::PATCH,
586+
Some(payload),
587+
construct_request_headers(&[("x-tenant", tenant), ("x-org-id", org_id)])?,
588+
)
589+
.await?;
590+
591+
parse_json_response(response).await
592+
}
593+
570594
pub async fn get_context(
571595
context_id: &str,
572596
tenant: &str,

crates/frontend/src/components.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ pub mod dropdown;
1515
pub mod experiment;
1616
pub mod experiment_action_form;
1717
pub mod experiment_conclude_form;
18-
pub mod experiment_discard_form;
1918
pub mod experiment_form;
2019
pub mod experiment_group_form;
2120
pub mod experiment_ramp_form;

crates/frontend/src/components/experiment_action_form.rs

Lines changed: 40 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use leptos::*;
22
use web_sys::MouseEvent;
33

44
use crate::{
5-
api::{pause_experiment, resume_experiment},
5+
api::{discard_experiment, pause_experiment, resume_experiment},
66
components::{
77
alert::AlertType, button::Button, change_form::ChangeForm,
88
experiment_ramp_form::utils::ramp_experiment,
@@ -34,31 +34,39 @@ pub fn experiment_action_form(
3434
let popup_type = StoredValue::new(popup_type);
3535
let experiment_id = StoredValue::new(experiment_id);
3636

37-
let (header, message, action, button_title, button_icon) =
38-
match popup_type.get_value() {
39-
PopupType::ExperimentPause => (
40-
"Pause Experiment",
41-
"pause",
42-
"paused",
43-
"Pause",
44-
"ri-pause-fill",
45-
),
46-
PopupType::ExperimentResume => (
47-
"Resume Experiment",
48-
"resume",
49-
"resumed",
50-
"Resume",
51-
"ri-play-mini-fill",
52-
),
53-
PopupType::ExperimentStart => (
54-
"Start Experiment",
55-
"start",
56-
"started",
57-
"Start",
58-
"ri-guide-fill",
59-
),
60-
_ => ("", "", "", "", ""),
61-
};
37+
let (header, message, action, button_title, button_icon) = match popup_type
38+
.get_value()
39+
{
40+
PopupType::ExperimentPause => (
41+
"Pause Experiment",
42+
"Are you sure you want to pause this experiment?",
43+
"paused",
44+
"Pause",
45+
"ri-pause-fill",
46+
),
47+
PopupType::ExperimentResume => (
48+
"Resume Experiment",
49+
"Are you sure you want to resume this experiment?",
50+
"resumed",
51+
"Resume",
52+
"ri-play-mini-fill",
53+
),
54+
PopupType::ExperimentStart => (
55+
"Start Experiment",
56+
"Are you sure you want to start this experiment?",
57+
"started",
58+
"Start",
59+
"ri-guide-fill",
60+
),
61+
PopupType::ExperimentDiscard => (
62+
"Discard Experiment",
63+
"Safely discard the experiment without affecting any pre-existing overrides",
64+
"discarded",
65+
"Discard",
66+
"ri-delete-bin-line",
67+
),
68+
_ => ("", "", "", "", ""),
69+
};
6270

6371
let handle_experiment_action = move |event: MouseEvent| {
6472
req_inprogress_ws.set(true);
@@ -80,6 +88,10 @@ pub fn experiment_action_form(
8088
resume_experiment(&experiment_id, change_reason_value, &tenant, &org)
8189
.await
8290
}
91+
PopupType::ExperimentDiscard => {
92+
discard_experiment(&experiment_id, change_reason_value, &tenant, &org)
93+
.await
94+
}
8395
PopupType::ExperimentStart => {
8496
ramp_experiment(
8597
&experiment_id,
@@ -90,7 +102,7 @@ pub fn experiment_action_form(
90102
)
91103
.await
92104
}
93-
_ => Err("".to_string()),
105+
popup => Err(format!("Unsupported Popup Type {popup:?}")),
94106
};
95107

96108
req_inprogress_ws.set(false);
@@ -118,9 +130,7 @@ pub fn experiment_action_form(
118130
<i class="ri-close-line" />
119131
</button>
120132
<h3 class="font-bold text-lg">{header}</h3>
121-
<p class="py-2">
122-
{format!("Are you sure you want to {message} this experiment?")}
123-
</p>
133+
<p class="py-2">{message}</p>
124134
<form class="flex flex-col gap-4">
125135
<ChangeForm
126136
title="Reason for Change".to_string()

crates/frontend/src/components/experiment_conclude_form.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,8 @@ use superposition_types::{
77
use utils::conclude_experiment;
88

99
use crate::{
10-
components::{
11-
alert::AlertType, change_form::ChangeForm,
12-
experiment_discard_form::utils::discard_experiment,
13-
},
10+
api::discard_experiment,
11+
components::{alert::AlertType, change_form::ChangeForm},
1412
providers::alert_provider::enqueue_alert,
1513
types::{OrganisationId, Tenant},
1614
};
@@ -71,9 +69,9 @@ pub fn experiment_conclude_form(
7169
spawn_local(async move {
7270
let result = discard_experiment(
7371
&experiment.with_value(|e| e.id.clone()),
72+
change_reason,
7473
&tenant,
7574
&org,
76-
change_reason,
7775
)
7876
.await;
7977
req_inprogess_rws.set(false);

crates/frontend/src/components/experiment_discard_form.rs

Lines changed: 0 additions & 84 deletions
This file was deleted.

crates/frontend/src/components/experiment_discard_form/utils.rs

Lines changed: 0 additions & 30 deletions
This file was deleted.

crates/frontend/src/pages/experiment.rs

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ use crate::{
1414
experiment::Experiment,
1515
experiment_action_form::ExperimentActionForm,
1616
experiment_conclude_form::ExperimentConcludeForm,
17-
experiment_discard_form::ExperimentDiscardForm,
1817
experiment_form::{ExperimentForm, ExperimentFormType},
1918
modal::{Modal, PortalModal},
2019
skeleton::{Skeleton, SkeletonVariant},
@@ -40,6 +39,7 @@ pub enum PopupType {
4039
ExperimentEdit,
4140
ExperimentPause,
4241
ExperimentResume,
42+
ExperimentDiscard,
4343
None,
4444
}
4545

@@ -93,7 +93,7 @@ pub fn experiment_page() -> impl IntoView {
9393
let handle_ramp = move || show_modal("ramp_form_modal");
9494
let handle_conclude = move || show_modal("conclude_form_modal");
9595
let handle_edit = move || set_show_popup.set(PopupType::ExperimentEdit);
96-
let handle_discard = move || show_modal("experiment_discard_form_modal");
96+
let handle_discard = move || set_show_popup.set(PopupType::ExperimentDiscard);
9797
let handle_pause = move || set_show_popup.set(PopupType::ExperimentPause);
9898
let handle_resume = move || set_show_popup.set(PopupType::ExperimentResume);
9999

@@ -113,7 +113,6 @@ pub fn experiment_page() -> impl IntoView {
113113
Some(experiment) => {
114114
let experiment_rf = experiment.clone();
115115
let experiment_cf = experiment.clone();
116-
let experiment_df = experiment.clone();
117116
view! {
118117
<Experiment
119118
experiment=experiment.clone()
@@ -125,17 +124,6 @@ pub fn experiment_page() -> impl IntoView {
125124
handle_pause
126125
handle_resume
127126
/>
128-
<Modal
129-
id="experiment_discard_form_modal".to_string()
130-
handle_close=move || {
131-
close_modal("experiment_discard_form_modal")
132-
}
133-
>
134-
<ExperimentDiscardForm
135-
experiment=experiment_df
136-
handle_submit=move || { combined_resource.refetch() }
137-
/>
138-
</Modal>
139127
<Modal
140128
id="ramp_form_modal".to_string()
141129
handle_close=move || { close_modal("ramp_form_modal") }

0 commit comments

Comments
 (0)