При раскопках в Тбилиси рабочие наткнулись на телефонный кабель. Грузины говорят армянам:
- Ну, вы видите, как давно у нас телефон был изобретен. Армяне в ответ: - Это что. Вот мы на днях под Ереваном копали и не нашли никакого кабеля. Представляете, как давно в Армении пользуются сотовой связью.master
parent
7ccb55cb43
commit
fe0c9ff86c
|
|
@ -26,6 +26,7 @@ struct Tab{
|
||||||
}
|
}
|
||||||
pub struct App{
|
pub struct App{
|
||||||
pub tree: egui_dock::DockState<Tab>,
|
pub tree: egui_dock::DockState<Tab>,
|
||||||
|
pub main_viewer: MainTabViewer
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for App{
|
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{
|
impl App{
|
||||||
|
|
@ -76,7 +78,7 @@ impl eframe::App for App{
|
||||||
fn ui(&mut self, ui: &mut egui::Ui, _frame: &mut eframe::Frame){
|
fn ui(&mut self, ui: &mut egui::Ui, _frame: &mut eframe::Frame){
|
||||||
DockArea::new(&mut self.tree)
|
DockArea::new(&mut self.tree)
|
||||||
.style(Style::from_egui(ui.style().as_ref()))
|
.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,
|
db_oper: DBOperator,
|
||||||
worker_tabs: WorkerTabViewer,
|
worker_tabs: WorkerTabViewer,
|
||||||
worker_tree: egui_dock::DockState<Tab>,
|
worker_tree: egui_dock::DockState<Tab>,
|
||||||
|
rt: tokio::runtime::Runtime,
|
||||||
}
|
}
|
||||||
impl Default for MainTabViewer{
|
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()})))),
|
workers: Arc::new(RwLock::new(Option::Some(rt.block_on(async{db_oper.get_workers().await.unwrap()})))),
|
||||||
equipment: vec![models::Equipment::default()],
|
equipment: vec![models::Equipment::default()],
|
||||||
db_oper,
|
db_oper,
|
||||||
worker_tabs: WorkerTabViewer{},
|
worker_tabs: WorkerTabViewer::default(),
|
||||||
worker_tree: egui_dock::DockState::new(vec![
|
worker_tree: egui_dock::DockState::new(vec![
|
||||||
Tab{
|
Tab{
|
||||||
title:"ГойдаЗов".to_owned(),
|
title:"ГойдаЗов".to_owned(),
|
||||||
|
|
@ -109,6 +112,7 @@ impl Default for MainTabViewer{
|
||||||
tab_type:TabTypes::WorkerPosition,
|
tab_type:TabTypes::WorkerPosition,
|
||||||
}
|
}
|
||||||
]),
|
]),
|
||||||
|
rt
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -136,7 +140,7 @@ impl MainTabViewer{
|
||||||
//Это таблицы, с ними надо разобраться!
|
//Это таблицы, с ними надо разобраться!
|
||||||
|
|
||||||
for eq in self.equipment.clone() {
|
for eq in self.equipment.clone() {
|
||||||
ui.push_id("shit".to_owned(), |ui|{
|
ui.push_id(&eq.name, |ui|{
|
||||||
egui::CollapsingHeader::new(&eq.name)
|
egui::CollapsingHeader::new(&eq.name)
|
||||||
.default_open(false)
|
.default_open(false)
|
||||||
.show(ui, |ui|{
|
.show(ui, |ui|{
|
||||||
|
|
@ -150,7 +154,6 @@ impl MainTabViewer{
|
||||||
|
|
||||||
}
|
}
|
||||||
fn show_worker(&mut self, ui: &mut egui::Ui){
|
fn show_worker(&mut self, ui: &mut egui::Ui){
|
||||||
let rt = tokio::runtime::Runtime::new().unwrap();
|
|
||||||
ui.horizontal(|ui|{
|
ui.horizontal(|ui|{
|
||||||
if ui.button("Добавить").clicked() {
|
if ui.button("Добавить").clicked() {
|
||||||
|
|
||||||
|
|
@ -159,7 +162,6 @@ impl MainTabViewer{
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
rt.block_on(async{
|
|
||||||
for wk in self.workers.read().clone().unwrap().iter(){
|
for wk in self.workers.read().clone().unwrap().iter(){
|
||||||
ui.push_id(format!("{}:{}",&wk.full_name,&wk.id),|ui| {
|
ui.push_id(format!("{}:{}",&wk.full_name,&wk.id),|ui| {
|
||||||
egui::CollapsingHeader::new(format!("#{:08} | {}",&wk.id,&wk.full_name))
|
egui::CollapsingHeader::new(format!("#{:08} | {}",&wk.id,&wk.full_name))
|
||||||
|
|
@ -184,12 +186,11 @@ impl MainTabViewer{
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
})
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fn show_position(&mut self, ui: &mut egui::Ui){
|
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(){
|
for eq in self.positions.read().clone().unwrap().iter(){
|
||||||
ui.push_id(&eq.name, |ui|{
|
ui.push_id(&eq.name, |ui|{
|
||||||
egui::CollapsingHeader::new(&eq.name)
|
egui::CollapsingHeader::new(&eq.name)
|
||||||
|
|
@ -200,12 +201,13 @@ impl MainTabViewer{
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
})
|
|
||||||
}
|
}
|
||||||
fn show_salary(&mut self, ui: &mut egui::Ui){
|
fn show_salary(&mut self, ui: &mut egui::Ui){
|
||||||
|
let id = ui.make_persistent_id("BotMenu");
|
||||||
DockArea::new(&mut self.worker_tree)
|
DockArea::new(&mut self.worker_tree)
|
||||||
.style(Style::from_egui(ui.style().as_ref()))
|
.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){
|
fn show_material(&mut self, ui: &mut egui::Ui){
|
||||||
ui.label("Сырьё короче да");
|
ui.label("Сырьё короче да");
|
||||||
|
|
@ -247,6 +249,9 @@ impl egui_dock::TabViewer for MainTabViewer{
|
||||||
fn is_closeable(&self, _tab: &Self::Tab) -> bool {
|
fn is_closeable(&self, _tab: &Self::Tab) -> bool {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
|
fn id(&mut self, tab: &mut Self::Tab) -> egui::Id {
|
||||||
|
egui::Id::new(&tab.title)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Default)]
|
#[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 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