бебебебабаба
parent
dba801f34f
commit
6f784d149b
103
code/src/app.rs
103
code/src/app.rs
|
|
@ -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(
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue