From 38c50914fbffe04c2b997a905dbd6c5cd86f1a26 Mon Sep 17 00:00:00 2001 From: John Arban Lewis Date: Mon, 27 Jan 2025 18:19:39 -0500 Subject: [PATCH] ignore last marker for all but stage 6 --- .../01-spectra-&-velocity/component_state.py | 18 ++++-------------- .../component_state.py | 15 +++------------ .../pages/04-explore-data/component_state.py | 13 ++++--------- .../component_state.py | 16 ++++------------ src/hubbleds/pages/06-prodata/__init__.py | 9 --------- .../pages/06-prodata/component_state.py | 17 +---------------- 6 files changed, 16 insertions(+), 72 deletions(-) diff --git a/src/hubbleds/pages/01-spectra-&-velocity/component_state.py b/src/hubbleds/pages/01-spectra-&-velocity/component_state.py index 25ebd6bcd..a2a1f7bc3 100644 --- a/src/hubbleds/pages/01-spectra-&-velocity/component_state.py +++ b/src/hubbleds/pages/01-spectra-&-velocity/component_state.py @@ -87,7 +87,6 @@ class VelocityReflection(BaseModel): class ComponentState(BaseComponentState, BaseState): current_step: Marker = Marker.mee_gui1 - total_steps: int = len(Marker) stage_id: str = "spectra_&_velocity" show_example_galaxy: bool = False selected_galaxy: int = 0 @@ -116,22 +115,13 @@ class ComponentState(BaseComponentState, BaseState): velocity_reflection_state: VelocityReflection = VelocityReflection() reflection_complete: bool = False show_dop_cal4_values: bool = False - - _max_step: int = 0 # not included in model - + # computed fields are included in the model when serialized @computed_field @property - def max_step(self) -> int: - self._max_step = max(self.current_step.value, self._max_step) # type: ignore - return self._max_step - - @computed_field - @property - def progress(self) -> float: - # +1 for zero index, -1 for extra step - return round(100 * (self._max_step + 1) / (self.total_steps - 1)) - + def total_steps(self) -> int: + # ignore the last marker, which is a dummy marker + return len(Marker) - 1 @field_validator("current_step", mode="before") def convert_int_to_enum(cls, v: Any) -> Marker: diff --git a/src/hubbleds/pages/03-distance-measurements/component_state.py b/src/hubbleds/pages/03-distance-measurements/component_state.py index f97286326..e8b267531 100644 --- a/src/hubbleds/pages/03-distance-measurements/component_state.py +++ b/src/hubbleds/pages/03-distance-measurements/component_state.py @@ -48,7 +48,6 @@ class Marker(enum.Enum, BaseMarker): class ComponentState(BaseComponentState, BaseState): current_step: Marker = Marker.ang_siz1 - total_steps: int = len(Marker) stage_id: str = "distance_measurements" example_angular_sizes_total: int = 0 @@ -68,19 +67,11 @@ class ComponentState(BaseComponentState, BaseState): angular_size_line: Optional[float | int] = None distance_line: Optional[float | int] = None - _max_step: int = 0 # not included in model - - # computed fields are included in the model when serialized - @computed_field - @property - def max_step(self) -> int: - self._max_step = max(self.current_step.value, self._max_step) # type: ignore - return self._max_step - @computed_field @property - def progress(self) -> float: - return round(100 * (self._max_step + 1) / (self.total_steps - 1)) + def total_steps(self) -> int: + # ignore the last marker, which is a dummy marker + return len(Marker) - 1 @field_validator("current_step", mode="before") diff --git a/src/hubbleds/pages/04-explore-data/component_state.py b/src/hubbleds/pages/04-explore-data/component_state.py index 87afec001..3c517b0a7 100644 --- a/src/hubbleds/pages/04-explore-data/component_state.py +++ b/src/hubbleds/pages/04-explore-data/component_state.py @@ -40,7 +40,6 @@ class HubbleSlideshow(BaseModel): class ComponentState(BaseComponentState, BaseState): current_step: Marker = Marker.first() - total_steps: int = len(Marker) stage_id: str = "explore_data" show_hubble_slideshow_dialog: bool = False hubble_slideshow_finished: bool = False @@ -56,14 +55,10 @@ class ComponentState(BaseComponentState, BaseState): # computed fields are included in the model when serialized @computed_field @property - def max_step(self) -> int: - self._max_step = max(self.current_step.value, self._max_step) # type: ignore - return self._max_step - - @computed_field - @property - def progress(self) -> float: - return round(100 * (self._max_step + 1) / (self.total_steps - 1)) + def total_steps(self) -> int: + # ignore the last marker, which is a dummy marker + return len(Marker) - 1 + @field_validator("current_step", mode="before") diff --git a/src/hubbleds/pages/05-class-results-uncertainty/component_state.py b/src/hubbleds/pages/05-class-results-uncertainty/component_state.py index 549ede9c9..40dcddcf8 100644 --- a/src/hubbleds/pages/05-class-results-uncertainty/component_state.py +++ b/src/hubbleds/pages/05-class-results-uncertainty/component_state.py @@ -54,7 +54,6 @@ class UncertaintyState(BaseModel): class ComponentState(BaseComponentState, BaseState): current_step: Marker = Marker.first() - total_steps: int = len(Marker) stage_id: str = "class_results_and_uncertainty" student_low_age: int = 0 student_high_age: int = 0 @@ -65,19 +64,12 @@ class ComponentState(BaseComponentState, BaseState): uncertainty_slideshow_finished: bool = False class_best_fit_clicked: bool = False - _max_step: int = 0 # not included in model - - # computed fields are included in the model when serialized @computed_field @property - def max_step(self) -> int: - self._max_step = max(self.current_step.value, self._max_step) # type: ignore - return self._max_step - - @computed_field - @property - def progress(self) -> float: - return round(100 * (self._max_step + 1) / (self.total_steps - 1)) + def total_steps(self) -> int: + # ignore the last marker, which is a dummy marker + return len(Marker) - 1 + @field_validator("current_step", mode="before") diff --git a/src/hubbleds/pages/06-prodata/__init__.py b/src/hubbleds/pages/06-prodata/__init__.py index 27339f7fb..3bc1dc596 100644 --- a/src/hubbleds/pages/06-prodata/__init__.py +++ b/src/hubbleds/pages/06-prodata/__init__.py @@ -289,15 +289,6 @@ def _on_component_state_loaded(value: bool): event_mc_callback = lambda event: mc_callback(event, LOCAL_STATE, COMPONENT_STATE), state_view={'mc_score': get_multiple_choice(LOCAL_STATE, COMPONENT_STATE, 'pro-dat2'), 'score_tag': 'pro-dat2'} ) - ScaffoldAlert( - GUIDELINE_ROOT / "GuidelineProfessionalData3.vue", - event_next_callback=lambda _: transition_next(COMPONENT_STATE), - event_back_callback=lambda _: transition_previous(COMPONENT_STATE), - can_advance=COMPONENT_STATE.value.can_transition(next=True), - show=COMPONENT_STATE.value.is_current_step(Marker.pro_dat3), - event_mc_callback = lambda event: mc_callback(event, LOCAL_STATE, COMPONENT_STATE), - state_view={'mc_score': get_multiple_choice(LOCAL_STATE, COMPONENT_STATE, 'pro-dat3'), 'score_tag': 'pro-dat3'} - ) # ScaffoldAlert( # GUIDELINE_ROOT / "GuidelineProfessionalData3.vue", # event_next_callback=lambda _: transition_next(COMPONENT_STATE), diff --git a/src/hubbleds/pages/06-prodata/component_state.py b/src/hubbleds/pages/06-prodata/component_state.py index a7038977c..6265e32bd 100644 --- a/src/hubbleds/pages/06-prodata/component_state.py +++ b/src/hubbleds/pages/06-prodata/component_state.py @@ -1,6 +1,6 @@ import solara -from pydantic import field_validator, computed_field +from pydantic import field_validator from cosmicds.state import BaseState from hubbleds.base_marker import BaseMarker @@ -32,7 +32,6 @@ class Marker(enum.Enum, BaseMarker): class ComponentState(BaseComponentState, BaseState): current_step: Marker = Marker.pro_dat0 - total_steps: int = len(Marker) stage_id: str = "professional_data" # TODO: I don't think our_age is used anywhere @@ -44,20 +43,6 @@ class ComponentState(BaseComponentState, BaseState): fit_line_shown: bool = False - _max_step: int = 0 # not included in model - - # computed fields are included in the model when serialized - @computed_field - @property - def max_step(self) -> int: - self._max_step = max(self.current_step.value, self._max_step) # type: ignore - return self._max_step - - @computed_field - @property - def progress(self) -> float: - return round(100 * (self._max_step + 1) / (self.total_steps - 1)) - @field_validator("current_step", mode="before")