При раскопках в Тбилиси рабочие наткнулись на телефонный кабель. Грузины говорят армянам:

- Ну, вы видите, как давно у нас телефон был изобретен.
Армяне в ответ:
- Это что. Вот мы на днях под Ереваном копали и не нашли никакого кабеля. Представляете, как давно в Армении пользуются сотовой связью.
master
Алексей Алексей 2026-05-21 19:55:25 +10:00
parent 7ccb55cb43
commit fe0c9ff86c
2 changed files with 42 additions and 80 deletions

View File

@ -26,6 +26,7 @@ struct Tab{
}
pub struct App{
pub tree: egui_dock::DockState<Tab>,
pub main_viewer: MainTabViewer
}
impl Default for App{
@ -61,7 +62,8 @@ impl Default for App{
}
]);
Self{tree}
let main_viewer = MainTabViewer::default();
Self{tree, main_viewer}
}
}
impl App{
@ -76,7 +78,7 @@ impl eframe::App for App{
fn ui(&mut self, ui: &mut egui::Ui, _frame: &mut eframe::Frame){
DockArea::new(&mut self.tree)
.style(Style::from_egui(ui.style().as_ref()))
.show_inside(ui, &mut MainTabViewer::default());
.show_inside(ui, &mut self.main_viewer);
}
}
@ -87,6 +89,7 @@ struct MainTabViewer {
db_oper: DBOperator,
worker_tabs: WorkerTabViewer,
worker_tree: egui_dock::DockState<Tab>,
rt: tokio::runtime::Runtime,
}
impl Default for MainTabViewer{
@ -98,7 +101,7 @@ impl Default for MainTabViewer{
workers: Arc::new(RwLock::new(Option::Some(rt.block_on(async{db_oper.get_workers().await.unwrap()})))),
equipment: vec![models::Equipment::default()],
db_oper,
worker_tabs: WorkerTabViewer{},
worker_tabs: WorkerTabViewer::default(),
worker_tree: egui_dock::DockState::new(vec![
Tab{
title:"ГойдаЗов".to_owned(),
@ -109,6 +112,7 @@ impl Default for MainTabViewer{
tab_type:TabTypes::WorkerPosition,
}
]),
rt
}
}
}
@ -136,7 +140,7 @@ impl MainTabViewer{
//Это таблицы, с ними надо разобраться!
for eq in self.equipment.clone() {
ui.push_id("shit".to_owned(), |ui|{
ui.push_id(&eq.name, |ui|{
egui::CollapsingHeader::new(&eq.name)
.default_open(false)
.show(ui, |ui|{
@ -150,7 +154,6 @@ impl MainTabViewer{
}
fn show_worker(&mut self, ui: &mut egui::Ui){
let rt = tokio::runtime::Runtime::new().unwrap();
ui.horizontal(|ui|{
if ui.button("Добавить").clicked() {
@ -159,37 +162,35 @@ impl MainTabViewer{
}
});
rt.block_on(async{
for wk in self.workers.read().clone().unwrap().iter(){
ui.push_id(format!("{}:{}",&wk.full_name,&wk.id),|ui| {
egui::CollapsingHeader::new(format!("#{:08} | {}",&wk.id,&wk.full_name))
.default_open(false)
.show(ui, |ui|{
ui.horizontal(|ui|{
ui.label("Нанят: ");
ui.label(format!("{}",wk.hire_date.date_naive().format("%d-%m-%Y").to_string()));
});
ui.horizontal(|ui|{
ui.label("Должность: ");
ui.label(&wk.position.name);
});
ui.horizontal(|ui|{
ui.label("Уволен: ");
ui.label(if wk.is_fired {
"Да"
}else{
"Нет"
})
for wk in self.workers.read().clone().unwrap().iter(){
ui.push_id(format!("{}:{}",&wk.full_name,&wk.id),|ui| {
egui::CollapsingHeader::new(format!("#{:08} | {}",&wk.id,&wk.full_name))
.default_open(false)
.show(ui, |ui|{
ui.horizontal(|ui|{
ui.label("Нанят: ");
ui.label(format!("{}",wk.hire_date.date_naive().format("%d-%m-%Y").to_string()));
});
ui.horizontal(|ui|{
ui.label("Должность: ");
ui.label(&wk.position.name);
});
ui.horizontal(|ui|{
ui.label("Уволен: ");
ui.label(if wk.is_fired {
"Да"
}else{
"Нет"
})
})
});
}
})
})
});
}
}
}
fn show_position(&mut self, ui: &mut egui::Ui){
let rt = tokio::runtime::Runtime::new().unwrap();
rt.block_on(async{
for eq in self.positions.read().clone().unwrap().iter(){
ui.push_id(&eq.name, |ui|{
egui::CollapsingHeader::new(&eq.name)
@ -200,12 +201,13 @@ impl MainTabViewer{
});
}
})
}
fn show_salary(&mut self, ui: &mut egui::Ui){
let id = ui.make_persistent_id("BotMenu");
DockArea::new(&mut self.worker_tree)
.style(Style::from_egui(ui.style().as_ref()))
.show_inside(ui, &mut WorkerTabViewer::default());
.id(id)
.show_inside(ui, &mut self.worker_tabs);
}
fn show_material(&mut self, ui: &mut egui::Ui){
ui.label("Сырьё короче да");
@ -247,6 +249,9 @@ impl egui_dock::TabViewer for MainTabViewer{
fn is_closeable(&self, _tab: &Self::Tab) -> bool {
false
}
fn id(&mut self, tab: &mut Self::Tab) -> egui::Id {
egui::Id::new(&tab.title)
}
}
#[derive(Default)]
@ -262,4 +267,7 @@ impl egui_dock::TabViewer for WorkerTabViewer{
fn ui(&mut self, ui: &mut egui::Ui, tab: &mut Self::Tab) {
}
fn id(&mut self, tab: &mut Self::Tab) -> egui::Id {
egui::Id::new(&tab.title)
}
}

View File

@ -1,46 +0,0 @@
use diesel::*;
table!{
equipment(id){
id -> Integer,
inv_number -> VarChar,
maintenance_date -> Datetime,
worker_id -> Integer,
name -> VarChar,
}
}
table! {
salary(id){
id -> Integer,
worker_id -> Integer,
salary_size -> Decimal,
salary_date -> Datetime
}
}
table! {
position(id){
id -> Integer,
name -> VarChar,
wage -> Decimal
}
}
table! {
worker(id){
id -> Integer,
position_id -> Integer,
hire_date -> Datetime,
is_fired -> Bool,
full_name -> VarChar
}
}
joinable!(equipment -> worker(worker_id));
joinable!(worker -> position(position_id));
joinable!(salary -> worker(worker_id));
allow_tables_to_appear_in_same_query!(
equipment,
salary,
position,
worker,
);