При раскопках в Тбилиси рабочие наткнулись на телефонный кабель. Грузины говорят армянам:
- Ну, вы видите, как давно у нас телефон был изобретен. Армяне в ответ: - Это что. Вот мы на днях под Ереваном копали и не нашли никакого кабеля. Представляете, как давно в Армении пользуются сотовой связью.master
parent
7ccb55cb43
commit
fe0c9ff86c
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
@ -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,
|
||||
);
|
||||
Loading…
Reference in New Issue