Спаси и сохрани

master
Алексей Алексей 2026-06-03 20:02:21 +10:00
parent 14c9038df2
commit 07a8d64167
2 changed files with 84 additions and 23 deletions

View File

@ -7,7 +7,7 @@ use crate::{
Worker, Worker,
}, },
}; };
use egui::{TextBuffer, mutex::RwLock}; use egui::{TextBuffer, Vec2, mutex::RwLock};
use egui_dock::{DockArea, Style, TabViewer}; use egui_dock::{DockArea, Style, TabViewer};
use egui_extras::{Column, TableBuilder}; use egui_extras::{Column, TableBuilder};
use sqlx::types::BigDecimal; use sqlx::types::BigDecimal;
@ -171,9 +171,22 @@ impl Default for MainTabViewer {
impl MainTabViewer { impl MainTabViewer {
fn show_equipment(&mut self, ui: &mut egui::Ui) { fn show_equipment(&mut self, ui: &mut egui::Ui) {
ui.horizontal(|ui| { ui.horizontal(|ui| {
if ui.button("Добавить").clicked() {} if ui.button("Добавить").clicked() {
if ui.button("Редактировать").clicked() {} self.equipment_modal_state.is_open = true;
if ui.button("Удалить").clicked() {} self.equipment_modal_state.status = ModalStatus::Add;
self.equipment_modal_state
.data
.insert("id".into(), "0".into());
self.equipment_modal_state
.data
.insert("name".into(), "".into());
self.equipment_modal_state
.data
.insert("inv_numver".into(), "".into());
self.equipment_modal_state
.data
.insert("worker_id".into(), "0".into());
}
}); });
let mut table = TableBuilder::new(ui) let mut table = TableBuilder::new(ui)
.striped(true) .striped(true)
@ -186,9 +199,6 @@ impl MainTabViewer {
.column(Column::auto()) .column(Column::auto())
.sense(egui::Sense::click()) .sense(egui::Sense::click())
.header(30.0, |mut header| { .header(30.0, |mut header| {
header.col(|ui| {
ui.heading("ID");
});
header.col(|ui| { header.col(|ui| {
ui.heading("Название"); ui.heading("Название");
}); });
@ -199,15 +209,13 @@ impl MainTabViewer {
ui.heading("Ответственный"); ui.heading("Ответственный");
}); });
header.col(|ui| { header.col(|ui| {
ui.heading("Дата последнего\nя техобслуживания"); ui.heading("Дата последнего\nтехобслуживания");
}); });
}) })
.body(|mut body| { .body(|mut body| {
body.ui_mut().style_mut().interaction.selectable_labels = false;
for eq in self.equipment.read().clone().unwrap().iter() { for eq in self.equipment.read().clone().unwrap().iter() {
body.row(20.0, |mut row| { body.row(20.0, |mut row| {
row.col(|ui| {
ui.label(eq.id.to_string());
});
row.col(|ui| { row.col(|ui| {
ui.label(&eq.name); ui.label(&eq.name);
}); });
@ -220,12 +228,64 @@ impl MainTabViewer {
row.col(|ui| { row.col(|ui| {
ui.label(eq.maintenance_date.date_naive().to_string()); ui.label(eq.maintenance_date.date_naive().to_string());
}); });
row.col(|ui| {
if ui.button("Удалить").clicked() {
println!("WOr!k");
}
});
if row.response().double_clicked() { if row.response().double_clicked() {
println!("I love Paris!"); self.equipment_modal_state.is_open = true;
self.equipment_modal_state.status = ModalStatus::Edit;
self.equipment_modal_state
.data
.insert("id".into(), eq.id.to_string());
self.equipment_modal_state
.data
.insert("name".into(), eq.name.clone());
self.equipment_modal_state
.data
.insert("inv_numver".into(), eq.inv_number.clone());
self.equipment_modal_state
.data
.insert("worker_id".into(), eq.worker.id.to_string());
} }
}); });
} }
}); });
if self.equipment_modal_state.is_open {
egui::Modal::new(egui::Id::new("process_equipment_modal")).show(ui.ctx(), |ui| {
if ui.button("Закрыть").clicked() {
self.equipment_modal_state.is_open = false;
}
egui::Grid::new("process_equipment_grid").show(ui, |ui| {
ui.label("Название");
let mut name = self.equipment_modal_state.data.get_mut("name").unwrap();
ui.add_sized(Vec2::new(200.0, 20.0), egui::TextEdit::singleline(name));
ui.end_row();
ui.label("Инв. номер");
let mut inv_num = self
.equipment_modal_state
.data
.get_mut("inv_number")
.unwrap();
ui.text_edit_singleline(inv_num);
ui.end_row();
ui.label("Ответственный");
// egui::ComboBox::new("process_equipment_combobox");
ui.end_row();
ui.label("Дата последнего\nтехобслуживания");
let mut maintenance = self
.equipment_modal_state
.data
.get_mut("maintenance_date")
.unwrap();
ui.text_edit_singleline(maintenance);
});
});
}
} }
fn show_worker(&mut self, ui: &mut egui::Ui) { fn show_worker(&mut self, ui: &mut egui::Ui) {

View File

@ -1,21 +1,22 @@
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] #![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
mod app; mod app;
mod models;
mod database; mod database;
mod models;
// mod schema; // mod schema;
fn main() fn main() {
{
dotenvy::dotenv().ok(); dotenvy::dotenv().ok();
database::estabilish_connection(); database::estabilish_connection();
let native_opts = eframe::NativeOptions { let native_opts = eframe::NativeOptions {
viewport: egui::ViewportBuilder::default() viewport: egui::ViewportBuilder::default()
.with_inner_size([400.0,300.0]) .with_inner_size([700.0, 300.0])
.with_min_inner_size([300.0,200.0]), .with_min_inner_size([650.0, 200.0]),
..Default::default() ..Default::default()
}; };
eframe::run_native("BCS", native_opts, Box::new(|cc| Ok(Box::new(app::App::new(cc)))),); eframe::run_native(
"BCS",
} native_opts,
Box::new(|cc| Ok(Box::new(app::App::new(cc)))),
);
}