бебебебабаба

master
Алексей Алексей 2026-06-24 19:36:55 +10:00
parent dba801f34f
commit 6f784d149b
3 changed files with 59 additions and 59 deletions

View File

@ -10,8 +10,9 @@ use crate::{
material_tab::MaterialTabViewer, material_tab::MaterialTabViewer,
misc, misc,
models::{ models::{
Equipment, EquipmentModalState, LoginModalState, LoginStatus, Material, MaterialCategory, Equipment, EquipmentFilter, EquipmentModalState, LoginModalState, LoginStatus, Material,
MaterialRow, ModalStatus, ModalWinState, Position, Salary, SalaryModalState, Worker, MaterialCategory, MaterialRow, ModalStatus, ModalWinState, Position, Salary,
SalaryModalState, Worker,
}, },
recipe_tab::RecipeTabViewer, recipe_tab::RecipeTabViewer,
reports::Reporter, reports::Reporter,
@ -244,6 +245,7 @@ impl Default for MainTabViewer {
can_finish: false, can_finish: false,
equipment: Equipment::default(), equipment: Equipment::default(),
status: ModalStatus::Add, status: ModalStatus::Add,
filters: EquipmentFilter::default(),
}, },
salary_modal_state: SalaryModalState { salary_modal_state: SalaryModalState {
is_open: false, is_open: false,
@ -327,7 +329,11 @@ impl MainTabViewer {
} }
}); });
} }
let mut table = TableBuilder::new(ui) ui.add(egui::Checkbox::new(
&mut self.equipment_modal_state.filters.without_written_offs,
"Без списанных",
));
TableBuilder::new(ui)
.striped(true) .striped(true)
.resizable(false) .resizable(false)
.vscroll(false) .vscroll(false)
@ -359,37 +365,42 @@ impl MainTabViewer {
.body(|mut body| { .body(|mut body| {
body.ui_mut().style_mut().interaction.selectable_labels = false; body.ui_mut().style_mut().interaction.selectable_labels = false;
for eq in self.equipment.read().clone().iter() { for eq in self.equipment.read().clone().iter() {
body.row(20.0, |mut row| { if (self.equipment_modal_state.filters.without_written_offs
row.col(|ui| { && !eq.is_written_off)
ui.label(&eq.name); || !self.equipment_modal_state.filters.without_written_offs
}); {
row.col(|ui| { body.row(20.0, |mut row| {
ui.label(&eq.inv_number); row.col(|ui| {
}); ui.label(&eq.name);
row.col(|ui| { });
ui.label(&eq.worker.full_name); row.col(|ui| {
}); ui.label(&eq.inv_number);
row.col(|ui| { });
ui.label(eq.maintenance_date.date_naive().to_string()); row.col(|ui| {
}); ui.label(&eq.worker.full_name);
row.col(|ui| { });
ui.label(if eq.is_written_off { "Да" } else { "Нет" }); row.col(|ui| {
}); ui.label(eq.maintenance_date.date_naive().to_string());
row.col(|ui| { });
if self.is_admin { row.col(|ui| {
if ui.button("Списать").clicked() { ui.label(if eq.is_written_off { "Да" } else { "Нет" });
self.equipment_modal_state.is_open = true; });
self.equipment_modal_state.status = ModalStatus::Remove; row.col(|ui| {
self.equipment_modal_state.equipment = eq.clone(); if self.is_admin {
if ui.button("Списать").clicked() {
self.equipment_modal_state.is_open = true;
self.equipment_modal_state.status = ModalStatus::Remove;
self.equipment_modal_state.equipment = eq.clone();
}
} }
});
if row.response().double_clicked() {
self.equipment_modal_state.is_open = true;
self.equipment_modal_state.status = ModalStatus::Edit;
self.equipment_modal_state.equipment = eq.clone();
} }
}); });
if row.response().double_clicked() { }
self.equipment_modal_state.is_open = true;
self.equipment_modal_state.status = ModalStatus::Edit;
self.equipment_modal_state.equipment = eq.clone();
}
});
} }
}); });
if self.equipment_modal_state.is_open { if self.equipment_modal_state.is_open {
@ -441,13 +452,6 @@ impl MainTabViewer {
ui.end_row(); ui.end_row();
ui.label("Дата последнего\nтехобслуживания"); ui.label("Дата последнего\nтехобслуживания");
// let mut date = self
// .equipment_modal_state
// .equipment
// .maintenance_date
// .date_naive()
// .to_string();
// let bdate = date.clone();
let ndate = self let ndate = self
.equipment_modal_state .equipment_modal_state
.equipment .equipment
@ -469,25 +473,6 @@ impl MainTabViewer {
.and_local_timezone(chrono::Local) .and_local_timezone(chrono::Local)
.unwrap(); .unwrap();
} }
// if date != bdate {
// self.equipment_modal_state.equipment.maintenance_date =
// match NaiveDate::parse_from_str(&date, "%Y-%m-%d") {
// Ok(o) => {date_okay = true;
// o
// .and_hms_opt(0, 0, 0)
// .unwrap()
// .and_local_timezone(chrono::Local)
// .unwrap()},
// Err(e) => {
// date_okay = false;
// NaiveDate::default()
// .and_hms_opt(0, 0, 0)
// .unwrap()
// .and_local_timezone(chrono::Local)
// .unwrap()
// }
// };
// }
}); });
} else { } else {
ui.label("Вы уверены, что хотите удалить:"); ui.label("Вы уверены, что хотите удалить:");
@ -508,7 +493,9 @@ impl MainTabViewer {
} }
_ => { _ => {
self.equipment_modal_state.can_finish = self.equipment_modal_state.can_finish =
self.equipment_modal_state.equipment.name.len() > 0 && date_okay self.equipment_modal_state.equipment.name.len() > 0
&& self.equipment_modal_state.equipment.inv_number.len() > 0
&& self.equipment_modal_state.equipment.worker.id != 0;
} }
} }
let resp = ui.add_enabled( let resp = ui.add_enabled(

View File

@ -1,3 +1,5 @@
use std::str::FromStr;
use bigdecimal::ToPrimitive; use bigdecimal::ToPrimitive;
use chrono::Datelike; use chrono::Datelike;
@ -17,3 +19,9 @@ pub fn jiff_to_naivedate(date: jiff::civil::Date) -> chrono::NaiveDate {
) )
.unwrap() .unwrap()
} }
pub fn is_date_okay(date: String) -> bool {
match chrono::NaiveDate::from_str(&date) {
Ok(_) => true,
Err(_) => false,
}
}

View File

@ -156,11 +156,12 @@ pub struct Promotion {
} }
#[derive(Default)] #[derive(Default)]
pub struct EquipmentModalState{ pub struct EquipmentModalState {
pub is_open: bool, pub is_open: bool,
pub can_finish: bool, pub can_finish: bool,
pub equipment: Equipment, pub equipment: Equipment,
pub status: ModalStatus, pub status: ModalStatus,
pub filters: EquipmentFilter,
} }
#[derive(Default)] #[derive(Default)]
@ -220,3 +221,7 @@ pub enum LoginStatus {
Login, Login,
Finished, Finished,
} }
#[derive(Default)]
pub struct EquipmentFilter {
pub without_written_offs: bool,
}