use crate::*;
pub(crate) fn init_console() {
let signal: Signal<Vec<ConsoleEntry>> = Signal::create(Vec::new());
CONSOLE_LOG_SIGNAL.set(signal);
}
pub(crate) fn get_console_signal() -> Signal<Vec<ConsoleEntry>> {
CONSOLE_LOG_SIGNAL.get()
}
pub(crate) fn filter_console_entries(
logs: Signal<Vec<ConsoleEntry>>,
filter: Signal<LogFilter>,
) -> Vec<(usize, ConsoleEntry)> {
let log_list: Vec<ConsoleEntry> = logs.get();
let filter_value: LogFilter = filter.get();
log_list
.iter()
.enumerate()
.filter(|(_, entry): &(usize, &ConsoleEntry)| match filter_value {
LogFilter::All => true,
LogFilter::Log => entry.get_level() == LogLevel::Log,
LogFilter::Warn => entry.get_level() == LogLevel::Warn,
LogFilter::Error => entry.get_level() == LogLevel::Error,
})
.map(|(index, entry): (usize, &ConsoleEntry)| (index, entry.clone()))
.collect::<Vec<(usize, ConsoleEntry)>>()
.into_iter()
.rev()
.collect()
}
pub(crate) fn get_log_item_class(level: LogLevel) -> String {
let base_name: &'static str = c_vconsole_log_item().get_name();
let level_class: &'static str = match level {
LogLevel::Log => c_vconsole_log_latest().get_name(),
LogLevel::Warn => c_vconsole_log_warn().get_name(),
LogLevel::Error => c_vconsole_log_error().get_name(),
};
if level_class.is_empty() {
base_name.to_string()
} else {
format!("{base_name} {level_class}")
}
}
pub(crate) fn get_badge_class(level: LogLevel) -> String {
let base_name: &'static str = c_vconsole_level_badge().get_name();
let badge_class: &'static str = match level {
LogLevel::Log => c_vconsole_badge_log().get_name(),
LogLevel::Warn => c_vconsole_badge_warn().get_name(),
LogLevel::Error => c_vconsole_badge_error().get_name(),
};
format!("{} {}", base_name, badge_class)
}
pub(crate) fn get_log_level_badge(level: LogLevel) -> String {
match level {
LogLevel::Log => "LOG".to_string(),
LogLevel::Warn => "WRN".to_string(),
LogLevel::Error => "ERR".to_string(),
}
}