Feat: better user feedback on patterns page
All checks were successful
Deploy Website / deploy (push) Has been skipped
All checks were successful
Deploy Website / deploy (push) Has been skipped
This commit is contained in:
@@ -130,6 +130,34 @@ impl PlaybackState {
|
||||
self.soloed.contains(&(bank, pattern))
|
||||
}
|
||||
|
||||
pub fn has_armed(&self) -> bool {
|
||||
!self.staged_changes.is_empty()
|
||||
|| !self.staged_mute_changes.is_empty()
|
||||
|| !self.staged_prop_changes.is_empty()
|
||||
}
|
||||
|
||||
pub fn armed_summary(&self) -> Option<String> {
|
||||
let play = self.staged_changes.iter().filter(|c| matches!(c.change, PatternChange::Start { .. })).count();
|
||||
let stop = self.staged_changes.iter().filter(|c| matches!(c.change, PatternChange::Stop { .. })).count();
|
||||
let mute = self.staged_mute_changes.iter().filter(|c| matches!(c, StagedMuteChange::ToggleMute { .. })).count();
|
||||
let solo = self.staged_mute_changes.iter().filter(|c| matches!(c, StagedMuteChange::ToggleSolo { .. })).count();
|
||||
let props = self.staged_prop_changes.len();
|
||||
|
||||
let parts: Vec<String> = [
|
||||
(play, "play"),
|
||||
(stop, "stop"),
|
||||
(mute, "mute"),
|
||||
(solo, "solo"),
|
||||
(props, "props"),
|
||||
]
|
||||
.into_iter()
|
||||
.filter(|(n, _)| *n > 0)
|
||||
.map(|(n, label)| format!("{n} {label}"))
|
||||
.collect();
|
||||
|
||||
if parts.is_empty() { None } else { Some(parts.join(", ")) }
|
||||
}
|
||||
|
||||
pub fn is_effectively_muted(&self, bank: usize, pattern: usize) -> bool {
|
||||
if self.muted.contains(&(bank, pattern)) {
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user