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

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,
misc,
models::{
Equipment, EquipmentModalState, LoginModalState, LoginStatus, Material, MaterialCategory,
MaterialRow, ModalStatus, ModalWinState, Position, Salary, SalaryModalState, Worker,
Equipment, EquipmentFilter, EquipmentModalState, LoginModalState, LoginStatus, Material,
MaterialCategory, MaterialRow, ModalStatus, ModalWinState, Position, Salary,
SalaryModalState, Worker,
},
recipe_tab::RecipeTabViewer,
reports::Reporter,
@ -244,6 +245,7 @@ impl Default for MainTabViewer {
can_finish: false,
equipment: Equipment::default(),
status: ModalStatus::Add,
filters: EquipmentFilter::default(),
},
salary_modal_state: SalaryModalState {
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)
.resizable(false)
.vscroll(false)
@ -359,37 +365,42 @@ impl MainTabViewer {
.body(|mut body| {
body.ui_mut().style_mut().interaction.selectable_labels = false;
for eq in self.equipment.read().clone().iter() {
body.row(20.0, |mut row| {
row.col(|ui| {
ui.label(&eq.name);
});
row.col(|ui| {
ui.label(&eq.inv_number);
});
row.col(|ui| {
ui.label(&eq.worker.full_name);
});
row.col(|ui| {
ui.label(eq.maintenance_date.date_naive().to_string());
});
row.col(|ui| {
ui.label(if eq.is_written_off { "Да" } else { "Нет" });
});
row.col(|ui| {
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 (self.equipment_modal_state.filters.without_written_offs
&& !eq.is_written_off)
|| !self.equipment_modal_state.filters.without_written_offs
{
body.row(20.0, |mut row| {
row.col(|ui| {
ui.label(&eq.name);
});
row.col(|ui| {
ui.label(&eq.inv_number);
});
row.col(|ui| {
ui.label(&eq.worker.full_name);
});
row.col(|ui| {
ui.label(eq.maintenance_date.date_naive().to_string());
});
row.col(|ui| {
ui.label(if eq.is_written_off { "Да" } else { "Нет" });
});
row.col(|ui| {
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 {
@ -441,13 +452,6 @@ impl MainTabViewer {
ui.end_row();
ui.label("Дата последнего\nтехобслуживания");
// let mut date = self
// .equipment_modal_state
// .equipment
// .maintenance_date
// .date_naive()
// .to_string();
// let bdate = date.clone();
let ndate = self
.equipment_modal_state
.equipment
@ -469,25 +473,6 @@ impl MainTabViewer {
.and_local_timezone(chrono::Local)
.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 {
ui.label("Вы уверены, что хотите удалить:");
@ -508,7 +493,9 @@ impl MainTabViewer {
}
_ => {
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(

View File

@ -1,3 +1,5 @@
use std::str::FromStr;
use bigdecimal::ToPrimitive;
use chrono::Datelike;
@ -17,3 +19,9 @@ pub fn jiff_to_naivedate(date: jiff::civil::Date) -> chrono::NaiveDate {
)
.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)]
pub struct EquipmentModalState{
pub struct EquipmentModalState {
pub is_open: bool,
pub can_finish: bool,
pub equipment: Equipment,
pub status: ModalStatus,
pub filters: EquipmentFilter,
}
#[derive(Default)]
@ -220,3 +221,7 @@ pub enum LoginStatus {
Login,
Finished,
}
#[derive(Default)]
pub struct EquipmentFilter {
pub without_written_offs: bool,
}