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<String>,
) -> Vec<(usize, ConsoleEntry)> {
let log_list: Vec<ConsoleEntry> = logs.get();
let filter_value: String = filter.get();
log_list
.iter()
.enumerate()
.filter(|(_, entry)| {
if filter_value == "all" {
return true;
}
match filter_value.as_str() {
"log" => entry.get_level() == LogLevel::Log,
"warn" => entry.get_level() == LogLevel::Warn,
"error" => entry.get_level() == LogLevel::Error,
_ => true,
}
})
.map(|(index, entry)| (index, entry.clone()))
.collect::<Vec<(usize, ConsoleEntry)>>()
.into_iter()
.rev()
.collect()
}
pub(crate) fn get_log_item_class(level: LogLevel, is_latest: bool) -> String {
let base_name: &'static str = c_vconsole_log_item().get_name();
let level_class: &'static str = match level {
LogLevel::Log => {
if is_latest {
c_vconsole_log_latest().get_name()
} else {
c_vconsole_log_item().get_name()
}
}
LogLevel::Warn => {
if is_latest {
c_vconsole_log_warn_latest().get_name()
} else {
c_vconsole_log_warn().get_name()
}
}
LogLevel::Error => {
if is_latest {
c_vconsole_log_error_latest().get_name()
} else {
c_vconsole_log_error().get_name()
}
}
};
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(),
}
}