From 07a8d64167e3b6d5827301e7a13bf9394a6b38d4 Mon Sep 17 00:00:00 2001 From: ultrageese Date: Wed, 3 Jun 2026 20:02:21 +1000 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=BF=D0=B0=D1=81=D0=B8=20=D0=B8=20?= =?UTF-8?q?=D1=81=D0=BE=D1=85=D1=80=D0=B0=D0=BD=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/src/app.rs | 84 +++++++++++++++++++++++++++++++++++++++++------- code/src/main.rs | 23 ++++++------- 2 files changed, 84 insertions(+), 23 deletions(-) diff --git a/code/src/app.rs b/code/src/app.rs index db05724..7cfaa85 100644 --- a/code/src/app.rs +++ b/code/src/app.rs @@ -7,7 +7,7 @@ use crate::{ Worker, }, }; -use egui::{TextBuffer, mutex::RwLock}; +use egui::{TextBuffer, Vec2, mutex::RwLock}; use egui_dock::{DockArea, Style, TabViewer}; use egui_extras::{Column, TableBuilder}; use sqlx::types::BigDecimal; @@ -171,9 +171,22 @@ impl Default for MainTabViewer { impl MainTabViewer { fn show_equipment(&mut self, ui: &mut egui::Ui) { ui.horizontal(|ui| { - if ui.button("Добавить").clicked() {} - if ui.button("Редактировать").clicked() {} - if ui.button("Удалить").clicked() {} + if ui.button("Добавить").clicked() { + self.equipment_modal_state.is_open = true; + 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) .striped(true) @@ -186,9 +199,6 @@ impl MainTabViewer { .column(Column::auto()) .sense(egui::Sense::click()) .header(30.0, |mut header| { - header.col(|ui| { - ui.heading("ID"); - }); header.col(|ui| { ui.heading("Название"); }); @@ -199,15 +209,13 @@ impl MainTabViewer { ui.heading("Ответственный"); }); header.col(|ui| { - ui.heading("Дата последнего\nя техобслуживания"); + ui.heading("Дата последнего\nтехобслуживания"); }); }) .body(|mut body| { + body.ui_mut().style_mut().interaction.selectable_labels = false; for eq in self.equipment.read().clone().unwrap().iter() { body.row(20.0, |mut row| { - row.col(|ui| { - ui.label(eq.id.to_string()); - }); row.col(|ui| { ui.label(&eq.name); }); @@ -220,12 +228,64 @@ impl MainTabViewer { row.col(|ui| { ui.label(eq.maintenance_date.date_naive().to_string()); }); + row.col(|ui| { + if ui.button("Удалить").clicked() { + println!("WOr!k"); + } + }); 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) { diff --git a/code/src/main.rs b/code/src/main.rs index c64ca9e..564f70b 100644 --- a/code/src/main.rs +++ b/code/src/main.rs @@ -1,21 +1,22 @@ #![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] - mod app; -mod models; mod database; +mod models; // mod schema; -fn main() -{ - dotenvy::dotenv().ok(); +fn main() { + dotenvy::dotenv().ok(); database::estabilish_connection(); let native_opts = eframe::NativeOptions { viewport: egui::ViewportBuilder::default() - .with_inner_size([400.0,300.0]) - .with_min_inner_size([300.0,200.0]), - ..Default::default() + .with_inner_size([700.0, 300.0]) + .with_min_inner_size([650.0, 200.0]), + ..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)))), + ); +}