Skip to content

Commit bb5c158

Browse files
committed
Improve global fluency
1 parent da1ad03 commit bb5c158

File tree

4 files changed

+25
-12
lines changed

4 files changed

+25
-12
lines changed

term_timer/server/templates/session.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -829,7 +829,7 @@ <h2 class="card-title">
829829
{% endif %}
830830
</td>
831831
<td class="solve-fluency">
832-
{% set fluency = solve.compute_fluency(solve.solution) %}
832+
{% set fluency = solve.fluency %}
833833
{% if fluency %}
834834
<span class="metric-{% if fluency >= 75 %}success{% elif fluency >= 50 %}caution{% else %}warning{% endif %}">
835835
{{ fluency }}%

term_timer/server/templates/solve.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -478,8 +478,8 @@
478478
annotation: {
479479
annotations: [{
480480
type: 'line',
481-
yMin: {{ solve.compute_fluency(solve.solution) }},
482-
yMax: {{ solve.compute_fluency(solve.solution) }},
481+
yMin: {{ solve.fluency }},
482+
yMax: {{ solve.fluency }},
483483
borderColor: 'rgba(255, 0, 0, 0.6)',
484484
borderWidth: 2,
485485
}],
@@ -791,7 +791,7 @@ <h2 class="card-title">
791791
<div class="stat-card">
792792
<div class="stat-title">Fluency</div>
793793
<div class="stat-value">
794-
{% set fluency = solve.compute_fluency(solve.solution) %}
794+
{% set fluency = solve.fluency %}
795795
<span class="metric-{% if fluency >= 75 %}success{% elif fluency >= 50 %}caution{% else %}warning{% endif %}">
796796
{{ fluency }}%
797797
</span>

term_timer/solve.py

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,21 @@ def reconstruction(self) -> Algorithm:
294294
translate_moves(self.orientation_moves)(self.solution),
295295
)
296296

297+
@cached_property
298+
def fluency(self) -> int:
299+
"""
300+
Calculate overall fluency for the solve.
301+
302+
Returns:
303+
Fluency score (0-100), or 0 if ≤2 moves
304+
305+
"""
306+
return self.compute_fluency(
307+
translate_moves(self.orientation_moves)(self.solution).transform(
308+
optimize_double_moves,
309+
),
310+
)
311+
297312
@cached_property
298313
def tps(self) -> float:
299314
"""
@@ -550,9 +565,8 @@ def report_line(self) -> str:
550565
pause_line = '[success]No Pauses[/success]'
551566

552567
fluency_line = ''
553-
fluency = self.compute_fluency(self.solution)
554-
if fluency > 0:
555-
fluency_line += format_fluency(fluency)
568+
if self.fluency > 0:
569+
fluency_line += format_fluency(self.fluency)
556570

557571
rotation_line = ''
558572
if self.rotations:
@@ -623,10 +637,9 @@ def trainer_line(self) -> str:
623637
f' [caution]{ self.rotations } Rotations[/caution]'
624638
)
625639

626-
fluency = self.compute_fluency(self.reconstruction)
627640
fluency_line = ''
628-
if fluency > 0:
629-
fluency_line = f'{ format_fluency(fluency) } '
641+
if self.fluency > 0:
642+
fluency_line = f'{ format_fluency(self.fluency) } '
630643

631644
return (
632645
f'{ metric_string }'
@@ -1040,7 +1053,7 @@ def fluency_graph(self) -> None:
10401053
label='Fluency',
10411054
color=129,
10421055
)
1043-
plt.hline(self.compute_fluency(self.solution), 'red')
1056+
plt.hline(self.fluency, 'red')
10441057
plt.plot_size(height=20)
10451058
plt.canvas_color('default')
10461059
plt.axes_color('default')

term_timer/stats.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -990,7 +990,7 @@ def detail( # noqa: C901, PLR0912, PLR0913, PLR0914, PLR0915
990990
console.print(missed_string)
991991

992992
fluency_string = '[stats]Fluency :[/stats] '
993-
fluency = solve.compute_fluency(solve.solution)
993+
fluency = solve.fluency
994994

995995
if fluency > 0:
996996
fluency_string += format_fluency(fluency)

0 commit comments

Comments
 (0)