feat: adiciona nova ação de confirmação para iniciar nova análise e implementa breadcrumb na interface
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
use crate::application::usecases::importar_arquivo::{importar_csv, importar_xlsx};
|
||||
use crate::domain::entities::layout::TipoArquivo;
|
||||
use crate::domain::entities::layout::{Layout, TipoArquivo};
|
||||
use crate::ui::app::{App, EstadoApp};
|
||||
use egui::{Context, Ui};
|
||||
|
||||
@@ -12,6 +12,51 @@ pub fn renderizar(ui: &mut Ui, ctx: &Context, app: &mut App) {
|
||||
ui.label(format!("Arquivo: {}", caminho.display()));
|
||||
}
|
||||
|
||||
ui.add_space(8.0);
|
||||
|
||||
// Seletor de layout
|
||||
let tipo_atual = app.tipo_arquivo_atual.clone();
|
||||
let opcoes_layout: Vec<(i64, String)> = app
|
||||
.layouts_salvos
|
||||
.iter()
|
||||
.filter(|l| l.tipo() == tipo_atual)
|
||||
.filter_map(|l| l.id().map(|id| (id, l.nome().to_string())))
|
||||
.collect();
|
||||
let nome_layout_atual = app.nome_layout_atual.clone();
|
||||
|
||||
ui.horizontal(|ui| {
|
||||
ui.label("Layout:");
|
||||
egui::ComboBox::from_id_salt("combo_layouts_config")
|
||||
.selected_text(if nome_layout_atual.is_empty() {
|
||||
"— Selecionar layout —"
|
||||
} else {
|
||||
&nome_layout_atual
|
||||
})
|
||||
.show_ui(ui, |ui| {
|
||||
for (id, nome) in &opcoes_layout {
|
||||
if ui
|
||||
.selectable_label(nome_layout_atual == *nome, nome.as_str())
|
||||
.clicked()
|
||||
{
|
||||
app.nome_layout_atual = nome.clone();
|
||||
if let Some(layout) =
|
||||
app.layouts_salvos.iter().find(|l| l.id() == Some(*id))
|
||||
{
|
||||
let layout = layout.clone();
|
||||
match &layout {
|
||||
Layout::Csv { config, .. } => {
|
||||
app.layout_csv_atual = config.clone();
|
||||
}
|
||||
Layout::Xlsx { config, .. } => {
|
||||
app.layout_xlsx_atual = config.clone();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
ui.add_space(12.0);
|
||||
|
||||
match app.tipo_arquivo_atual.clone() {
|
||||
|
||||
Reference in New Issue
Block a user