#include ".\regional_state_capital_report_generator.h" void Xport_report_suite::regional_state_capital_report_generator::create_header(Xport::document& doc) const { using namespace Xport; *doc.title() << "Regional State Capital Report"; element hdr(Xport::div, "id_header"); markup::iterator it = hdr.insert(element(Xport::div, "id_header_left")); element image(img); image.attribute(src, "../img/us_regions.png"); *it << image; hdr << (element(h1) << "US Regional State Capital Report"); element lnk(a); lnk << "Wikipedia"; lnk.attribute(href, "http://en.wikipedia.org/wiki/Wiki"); hdr << (element(Xport::div, "id_aknowledgement") << "Statistics and images courtesy of " << lnk); *doc.body() << hdr; } void Xport_report_suite::regional_state_capital_report_generator::create_report_body(Xport::document& doc) const { using namespace Xport; int rgn = northeast; for (; rgn <= west; ++rgn) { std::ostringstream sRegion; sRegion << "id_region" << rgn; element rgn_div(Xport::div, "", "region"); create_table_heading(rgn, rgn_div); element tbl(table); create_region_table(tbl, rgn); rgn_div << tbl; *doc.body() << rgn_div; } } void Xport_report_suite::regional_state_capital_report_generator::create_region_table(Xport::element& tbl, int rgn) const { using namespace Xport; std::vector<state_info> siv; us_state_report_generator::get_regional_state_data(rgn, siv, sf_name, ascending); std::vector<state_info>::const_iterator it = siv.begin(); create_table_header(tbl, rgn); int rows = 0; long total_area = 0; for (; it != siv.end(); ++it, ++rows) { markup::iterator mit = tbl.insert(element(tr)); *mit << (element(td, "", "state_name") << it->name()); *mit << (element(td) << it->abbr()); *mit << (element(td, "", "capital") << it->capital()); } } void Xport_report_suite::regional_state_capital_report_generator::create_table_heading(int rgn, Xport::element& container) const { using namespace Xport; std::ostringstream img_path; img_path << "../img/region_" << rgn << ".png"; element heading(Xport::div, "", "tbl_heading"); markup::iterator it = heading.insert(element(Xport::div, "", "tbl_heading_left")); it = it->insert(element(img)); it->attribute(src, img_path.str()); heading << (element(h2) << get_region_name(rgn)); container << heading; } void Xport_report_suite::regional_state_capital_report_generator::create_table_header(Xport::element& tbl, int rgn) const { using namespace Xport; markup::iterator it_row = tbl.insert(element(tr, "", "titles")); *it_row << (element(th) << "State"); *it_row << (element(th) << "Abbr"); *it_row << (element(th) << "Capital"); } void Xport_report_suite::regional_state_capital_report_generator::create_footer(Xport::document& doc) const { using namespace Xport; element footer(Xport::div, "id_footer"); element para(p); para << "xhtml report and stylesheet created by "; element lnk(a); lnk.attribute(href, "http://www.xportpro.com"); lnk << "Xport"; footer << (para << lnk); *doc.body() << footer; } void Xport_report_suite::regional_state_capital_report_generator::create_stylesheet(Xport::document& doc, Xport::stylesheet& ss) const { using namespace Xport; xhtml_stylesheet_rule<char> rule("body"); stylesheet::iterator it = ss.insert(stylesheet_rule("body")); *it << declaration(css::border, "0px"); it = ss.insert(stylesheet_rule("#id_header")); *it << declaration(css::height, "200px") << declaration(css::border, "5px solid #8e2800") << declaration(background_color, "#ffb03b") << declaration(position, "relative"); it = ss.insert(stylesheet_rule("#id_header_left")); *it << declaration(css::width, "300px") << declaration(float_css, "left") << declaration(background_color, "white") << declaration(css::height, "100%") << declaration(border_right, "5px solid #8e2800"); it = ss.insert(stylesheet_rule("#id_header_left img")); *it << declaration(css::height, "150px") << declaration(margin_left, "40px") << declaration(margin_top, "20px"); it = ss.insert(stylesheet_rule("#id_header h1")); *it << declaration(padding_left, "40%") << declaration(margin_top, "50px"); it = ss.insert(stylesheet_rule("#id_aknowledgement")); *it << declaration(position, "absolute") << declaration(right, "20px") << declaration(bottom, "5px") << declaration(font_style, "italic"); it = ss.insert(stylesheet_rule(".region")); *it << declaration(position, "relative") << declaration(margin_left, "auto") << declaration(margin_right, "auto") << declaration(css::width, "50%") << declaration(margin_top, "50px") << declaration(css::border, "3px solid #8e2800"); it = ss.insert(stylesheet_rule(".tbl_heading")); *it << declaration(css::width, "100%") << declaration(css::height, "100px") << declaration(background_color, "#ffb03b") << declaration(border_bottom, "3px solid #8e2800"); it = ss.insert(stylesheet_rule(".tbl_heading div")); *it << declaration(float_css, "left") << declaration(css::width, "130px") << declaration(css::height, "100%") << declaration(background_color, "white") << declaration(border_right, "3px solid #8e2800"); it = ss.insert(stylesheet_rule(".tbl_heading div img")); *it << declaration(css::height, "80px") << declaration(margin_left, "20px") << declaration(margin_top, "10px"); it = ss.insert(stylesheet_rule(".tbl_heading h2")); *it << declaration(padding_top, "30px") << declaration(padding_left, "50%") << declaration(margin_top, "0px"); it = ss.insert(stylesheet_rule("table")); *it << declaration(css::width, "100%") << declaration(border_collapse, "collapse"); it = ss.insert(stylesheet_rule("tr.titles")); *it << declaration(background_color, "#468966") << declaration(line_height, "150%"); it = ss.insert(stylesheet_rule("th")); *it << declaration(border_bottom, "3px solid #8e2800") << declaration(text_align, "left") << declaration(padding_left, "10px"); it = ss.insert(stylesheet_rule("td")); *it << declaration(background_color, "#fff0a5") << declaration(text_align, "left") << declaration(padding_left, "10px"); it = ss.insert(stylesheet_rule("td.state_name")); *it << declaration(css::width, "200px"); it = ss.insert(stylesheet_rule(".capital")); *it << declaration(css::color, "#8e2800") << declaration(font_weight, "bold"); it = ss.insert(stylesheet_rule("#id_footer")); *it << declaration(css::width, "40%") << declaration(background_color, "#fff0a5") << declaration(margin_left, "auto") << declaration(margin_right, "auto") << declaration(margin_top, "50px") << declaration(css::border, "4px ridge #b64926") << declaration(css::height, "30px") << declaration(text_align, "center"); it = ss.insert(stylesheet_rule("#id_footer p")); *it << declaration(margin_top, "5px"); element css_link(Xport::link); css_link.attribute(rel, "stylesheet"); css_link.attribute(type, "text/css"); css_link.attribute(href, "regional_state_capital_report.css"); *doc.head() << css_link; }