use genpdf::elements::TableLayout;
use genpdf::{elements, style, Alignment, Document, Size};
pub fn print_class_all() {
let fon_family = crate::fonts::font_family();
let mut doc = genpdf::Document::new(fon_family);
let mut buf: Vec<u8> = Vec::new();
print_classes(&mut doc);
}
fn print_classes(doc: &mut genpdf::Document) {
doc.set_paper_size(Size::new(297, 210));
doc.set_title(format!("{}", school_name().read()));
let mut decorator = genpdf::SimplePageDecorator::new();
decorator.set_margins(10);
doc.set_page_decorator(decorator);
let school_name = &*school_name().read();
doc.set_minimal_conformance();
doc.set_line_spacing(1.25);
let mut title = elements::LinearLayout::vertical();
let mut title_style = style::Style::new();
title_style.set_bold();
title_style.set_font_size(20);
let title_paragraph = elements::Paragraph::default();
title.push(
title_paragraph
.styled_string(school_name, title_style)
.aligned(Alignment::Center),
);
doc.push(title);
day_row(doc);
}
use crate::tabs::activities::{activities, Activity};
use crate::tabs::classes::{get_classes, Class};
use crate::tabs::generating::Schedule;
use crate::tabs::limitations::limitations_ui::{classes_sched, schedules};
use crate::tabs::{school_hour, school_name};
fn day_row(doc: &mut Document) {
let mut table = elements::TableLayout::new(vec![8, 8, 8, 8, 8, 8]);
table.set_cell_decorator(elements::FrameCellDecorator::new(true, true, false));
let mut row = table.row();
row.push_element(create_row_title(format!("{}", "Günler")).aligned(Alignment::Center));
for day in &["Pzt", "Salı", "Çarş", "Per", "Cuma"] {
row.push_element(create_row_title(format!("{}", day)).aligned(Alignment::Center));
}
row.push().expect("Invalid table row");
let mut row = table.row();
row.push_element(create_row_title(format!("{}", "Saatler")).aligned(Alignment::Center));
for _day in &["Pzt", "Salı", "Çarş", "Per", "Cuma"] {
let mut table2 = elements::TableLayout::new(vec![1, 1, 1, 1, 1, 1, 1]);
table2.set_cell_decorator(elements::FrameCellDecorator::new(true, false, false));
let mut row2 = table2.row();
for i in [1, 2, 3, 4, 5, 6, 7] {
row2.push_element(create_row_title(i.to_string()));
}
row2.push().expect("");
row.push_element(table2);
}
row.push().expect("");
create_class_row(&mut table);
doc.push(table);
}
fn create_class_row(table: &mut TableLayout) {
let clss = &*get_classes().read();
for c in clss {
let mut row = table.row();
row.push_element(create_row_title(format!("{}", &c.1.name)));
for d in 0..5 {
let t = create_table_for_row(&c.1, d + 1);
row.push_element(t);
}
row.push().expect("msg");
}
}
fn create_table_for_row(c: &Class, d: i32) -> TableLayout {
let acts = activities().read();
let c_acts: Vec<&Activity> = acts
.values()
.filter(|a| a.classes.iter().any(|c2| c2 == &c.id))
.collect();
let sch = &*classes_sched().read();
let sch = sch.get(&c.id).unwrap();
let l = &*school_hour().read();
let l = l.parse::<usize>().unwrap();
let mut table = genpdf::elements::TableLayout::new(vec![1; l]);
table.set_cell_decorator(elements::FrameCellDecorator::new(true, false, false));
let mut row = table.row();
for s in sch {
}
row.push().expect("msg");
table
}
fn create_row_title(title: String) -> elements::Paragraph {
let mut paragraph = elements::Paragraph::default();
let mut title_style = style::Style::new();
title_style.bold();
title_style.set_font_size(10);
paragraph = paragraph.styled_string(title, title_style);
paragraph = paragraph.aligned(Alignment::Center);
paragraph
}
fn create_row_title2(title: String) -> elements::Paragraph {
let paragraph = elements::Paragraph::default();
let mut title_style = style::Style::new();
title_style.set_font_size(10);
paragraph.styled_string(title, title_style)
}