Rename and clear bad code
This commit is contained in:
+25
-54
@@ -1,9 +1,9 @@
|
||||
use crate::AppState;
|
||||
use crate::data_provider::card_stats::{delete_stat, load_stats_of_set, update_stat_score};
|
||||
use crate::data_provider::history::{HistoryItem, push_note};
|
||||
use crate::data_provider::history::{push_note, HistoryItem};
|
||||
use crate::AppState;
|
||||
use chrono::{DateTime, Utc};
|
||||
use rand::distr::Distribution;
|
||||
use rand::distr::weighted::WeightedIndex;
|
||||
use rand::distr::Distribution;
|
||||
use rand::prelude::SliceRandom;
|
||||
use rand::rng;
|
||||
use rand::rngs::ThreadRng;
|
||||
@@ -12,7 +12,6 @@ use rayon::iter::IntoParallelRefIterator;
|
||||
use rayon::iter::ParallelIterator;
|
||||
use rhai::{Engine, Scope};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::cmp::min;
|
||||
use std::collections::HashMap;
|
||||
use std::sync::{Arc, Mutex};
|
||||
use std::time::Instant;
|
||||
@@ -300,17 +299,17 @@ pub enum WordOpenMode {
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct CardSet {
|
||||
pub struct DeckData {
|
||||
words: Vec<WordData>,
|
||||
set: Vec<CardStatistics>,
|
||||
current_word_index: Option<usize>,
|
||||
state: Arc<Mutex<AppState>>,
|
||||
order_module: OrderModule,
|
||||
settings: CardSetSettings,
|
||||
settings: DeckSettings,
|
||||
}
|
||||
|
||||
impl CardSet {
|
||||
pub fn new(settings: &CardSetSettings, state: Arc<Mutex<AppState>>) -> Self {
|
||||
impl DeckData {
|
||||
pub fn new(settings: &DeckSettings, state: Arc<Mutex<AppState>>) -> Self {
|
||||
let state_for = state.clone();
|
||||
let state_locked = state.lock().unwrap();
|
||||
|
||||
@@ -322,31 +321,7 @@ impl CardSet {
|
||||
.cloned()
|
||||
.collect();
|
||||
let word_ids = last_list.iter().map(|l| l.id).collect::<Vec<u32>>();
|
||||
|
||||
// let new_stats: &mut Vec<CardStatistics> = &mut last_list
|
||||
// .iter()
|
||||
// .filter(|word| !saved_ids.contains(&word.id))
|
||||
// .map(|word| CardStatistics {
|
||||
// id: 0,
|
||||
// word_id: word.id,
|
||||
// last_open: Utc::now(),
|
||||
// score: 1,
|
||||
// set_id: settings.id,
|
||||
// })
|
||||
// .collect();
|
||||
//
|
||||
// let time = Instant::now();
|
||||
//
|
||||
// if !new_stats.is_empty() {
|
||||
// add_stat_list(new_stats, &state_locked.connection);
|
||||
// current_set.append(new_stats);
|
||||
// }
|
||||
//
|
||||
// println!(
|
||||
// "Added {} stats: {}",
|
||||
// new_stats.len(),
|
||||
// time.elapsed().as_millis()
|
||||
// );
|
||||
|
||||
let mut index = 0;
|
||||
for stat in current_set.clone() {
|
||||
if !word_ids.contains(&stat.word_id) {
|
||||
@@ -455,9 +430,10 @@ pub enum OrderMode {
|
||||
FullRandom,
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, Eq, PartialEq)]
|
||||
#[derive(Clone, Copy, Eq, PartialEq, Default)]
|
||||
pub enum AppendMode {
|
||||
Full,
|
||||
#[default]
|
||||
Manual,
|
||||
}
|
||||
|
||||
@@ -469,9 +445,9 @@ enum OrderModule {
|
||||
}
|
||||
|
||||
trait SRSModule {
|
||||
fn next(&mut self, set: &mut CardSet) -> usize;
|
||||
fn next(&mut self, set: &mut DeckData) -> usize;
|
||||
fn open(&mut self, status: WordOpenMode, index: usize, updated_word: CardStatistics);
|
||||
fn init(&mut self, set: &mut CardSet);
|
||||
fn init(&mut self, set: &mut DeckData);
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
@@ -490,7 +466,7 @@ impl RandomSRSModule {
|
||||
}
|
||||
|
||||
impl SRSModule for RandomSRSModule {
|
||||
fn next(&mut self, set: &mut CardSet) -> usize {
|
||||
fn next(&mut self, set: &mut DeckData) -> usize {
|
||||
if self.basket.is_empty() {
|
||||
self.basket = (0..set.words.len()).collect::<Vec<usize>>();
|
||||
self.basket.shuffle(&mut rand::rng())
|
||||
@@ -501,7 +477,7 @@ impl SRSModule for RandomSRSModule {
|
||||
|
||||
fn open(&mut self, _: WordOpenMode, _: usize, _: CardStatistics) {}
|
||||
|
||||
fn init(&mut self, set: &mut CardSet) {
|
||||
fn init(&mut self, set: &mut DeckData) {
|
||||
self.initialized = true;
|
||||
self.basket = (0..set.words.len()).collect::<Vec<usize>>();
|
||||
self.basket.shuffle(&mut rand::rng())
|
||||
@@ -528,7 +504,7 @@ impl SemiRandomSRSModule {
|
||||
}
|
||||
|
||||
impl SRSModule for SemiRandomSRSModule {
|
||||
fn next(&mut self, set: &mut CardSet) -> usize {
|
||||
fn next(&mut self, set: &mut DeckData) -> usize {
|
||||
let index = self.last_weights.sample(&mut self.generator);
|
||||
|
||||
if self.history.contains(&index) {
|
||||
@@ -550,7 +526,7 @@ impl SRSModule for SemiRandomSRSModule {
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
fn init(&mut self, set: &mut CardSet) {
|
||||
fn init(&mut self, set: &mut DeckData) {
|
||||
self.initialized = true;
|
||||
let weights = set
|
||||
.set
|
||||
@@ -562,11 +538,8 @@ impl SRSModule for SemiRandomSRSModule {
|
||||
}
|
||||
|
||||
impl SemiRandomSRSModule {
|
||||
fn history_len(&self, set: &CardSet) -> usize {
|
||||
min(
|
||||
MAX_HISTORY_LEN,
|
||||
(set.len() as f32 * MAX_HISTORY_LEN_PART) as usize,
|
||||
)
|
||||
fn history_len(&self, set: &DeckData) -> usize {
|
||||
((set.len() as f32 * MAX_HISTORY_LEN_PART) as usize).clamp(1, MAX_HISTORY_LEN)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -581,7 +554,7 @@ struct WorstWordsSRSModule {
|
||||
}
|
||||
|
||||
impl SRSModule for WorstWordsSRSModule {
|
||||
fn next(&mut self, set: &mut CardSet) -> usize {
|
||||
fn next(&mut self, set: &mut DeckData) -> usize {
|
||||
if self.rounds_remaining == 0 {
|
||||
self.fill_pool(set);
|
||||
self.rounds_remaining = self.rounds_count;
|
||||
@@ -597,7 +570,7 @@ impl SRSModule for WorstWordsSRSModule {
|
||||
|
||||
fn open(&mut self, _: WordOpenMode, _: usize, _: CardStatistics) {}
|
||||
|
||||
fn init(&mut self, _: &mut CardSet) {
|
||||
fn init(&mut self, _: &mut DeckData) {
|
||||
self.initialized = true;
|
||||
}
|
||||
}
|
||||
@@ -614,7 +587,7 @@ impl WorstWordsSRSModule {
|
||||
}
|
||||
}
|
||||
|
||||
fn fill_pool(&mut self, set: &CardSet) {
|
||||
fn fill_pool(&mut self, set: &DeckData) {
|
||||
let mut sorted = set
|
||||
.set
|
||||
.clone()
|
||||
@@ -632,7 +605,7 @@ impl WorstWordsSRSModule {
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct CardSetSettings {
|
||||
pub struct DeckSettings {
|
||||
pub id: u32,
|
||||
pub name: String,
|
||||
pub forward: String,
|
||||
@@ -641,12 +614,11 @@ pub struct CardSetSettings {
|
||||
pub count: Option<usize>,
|
||||
pub worst_words_list: Option<Vec<WordData>>,
|
||||
pub open_mode: OrderMode,
|
||||
pub append_mode: AppendMode,
|
||||
}
|
||||
|
||||
impl CardSetSettings {
|
||||
pub(crate) fn with_name(name: String) -> CardSetSettings {
|
||||
CardSetSettings {
|
||||
impl DeckSettings {
|
||||
pub(crate) fn with_name(name: String) -> DeckSettings {
|
||||
DeckSettings {
|
||||
id: 0,
|
||||
name,
|
||||
forward: "".to_string(),
|
||||
@@ -655,7 +627,6 @@ impl CardSetSettings {
|
||||
count: None,
|
||||
worst_words_list: None,
|
||||
open_mode: OrderMode::Default,
|
||||
append_mode: AppendMode::Manual,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user