Added data_type to TSSpec key.
[?]
Jun 21, 2021, 11:57 PM
U4VCAFXQNTKC7KWWE3B2JJMZMFRGLBOHSZIOXCE6EEXW7WE2Q5NACDependencies
- [2]
GQVS55HIFinished generate_ts_spec() function. - [3]
GUXZCEWWAdded Country enum. - [4]
5POF332LWorking on fn cpi_included(). - [5]
AT753JPOSelected US unemployment series. - [6]
LVMGQJGHFinished framework for checking series specifications with data.
Change contents
- replacement in src/serve_ts.rs at line 3
//! The `TSPageSpec::TSCountrySpec::TSGraphicSpec` group of data-structures mirrors//! `ts_spec.keytree`. Its main function is TSPageSpec::new(PageJson//! The `TSSpec::TSPageSpec::TSGraphicSpec` group of data-structures mirrors//! `ts_spec.keytree`. Its main function is TSSpec::new(PageJson - replacement in src/serve_ts.rs at line 10
//! PageJson::new(ts_spec: TSPageSpec, checked_spec: Checked...)//! PageJson::new(ts_spec: TSSpec, checked_spec: Checked...) - replacement in src/serve_ts.rs at line 40
pub struct TSPageSpec(pub Vec<TSCountrySpec>);/// The specification for HTML pages that present a series of time-series plots. The keytree/// specification looks like/// ```text/// ts_spec:/// page:/// data_type: u/// country: Australia/// graphic:/// series:/// id: AUSURANAA/// id: AUSURAQS/// id: AUSURHARMADSMEI/// id: AUSURHARMMDSMEI/// ```pub struct TSSpec(pub Vec<TSPageSpec>); - replacement in src/serve_ts.rs at line 56
impl TSPageSpec {impl TSSpec { - replacement in src/serve_ts.rs at line 58
pub fn new() -> TSPageSpec {TSPageSpec(Vec::new())pub fn new() -> TSSpec {TSSpec(Vec::new()) - replacement in src/serve_ts.rs at line 62
pub fn push(&mut self, item: TSCountrySpec) {pub fn push(&mut self, item: TSPageSpec) { - edit in src/serve_ts.rs at line 65
pub fn from_file(path: &str) -> Self {let ts_spec = fs::read_to_string(path).unwrap();let kt = KeyTree::parse(&ts_spec).unwrap();kt.to_ref().try_into().unwrap()} - replacement in src/serve_ts.rs at line 73
impl IntoKeyTree for TSPageSpec {impl IntoKeyTree for TSSpec { - replacement in src/serve_ts.rs at line 76
kt.push_key(0, "page");for country in &self.0 {kt.push_keytree(1, country.keytree());kt.push_key(0, "ts_spec");for page in &self.0 {kt.push_keytree(1, page.keytree()); - replacement in src/serve_ts.rs at line 84
impl<'a> TryInto<TSPageSpec> for KeyTreeRef<'a> {impl<'a> TryInto<TSSpec> for KeyTreeRef<'a> { - replacement in src/serve_ts.rs at line 87
fn try_into(self) -> Result<TSPageSpec, Error> {let country_vec: Vec<TSCountrySpec> = self.vec("page::country")?;Ok(TSPageSpec(country_vec))fn try_into(self) -> Result<TSSpec, Error> {let page_vec: Vec<TSPageSpec> = self.vec("ts_spec::page")?;Ok(TSSpec(page_vec)) - replacement in src/serve_ts.rs at line 93
pub struct TSCountrySpec {pub name: Country,/// Component of `TSSpec`./// Mirrored with a keytree specification which is the `country:` key in/// ```text/// page:/// country:/// name: Australia/// graphic:/// series:/// id: AUSURANAA/// id: AUSURAQS/// id: AUSURHARMADSMEI/// id: AUSURHARMMDSMEI/// ```pub struct TSPageSpec {pub country: Country,pub data_type: DataType, - replacement in src/serve_ts.rs at line 112
impl TSCountrySpec {pub fn new(country: Country, graphics: Vec<TSGraphicSpec>) -> Self {TSCountrySpec {name: country,impl TSPageSpec {pub fn new(key: PageKey, graphics: Vec<TSGraphicSpec>) -> Self {TSPageSpec {country: key.country,data_type: key.data_type, - edit in src/serve_ts.rs at line 120
pub fn key(&self) -> PageKey {PageKey {country: self.country,data_type: self.data_type,}} - replacement in src/serve_ts.rs at line 129
impl IntoKeyTree for TSCountrySpec {impl IntoKeyTree for TSPageSpec { - replacement in src/serve_ts.rs at line 134
kt.push_key(0, "country");kt.push_keyvalue(1, "name", &self.name.to_string());kt.push_key(0, "page");kt.push_keyvalue(1, "country", &self.country.to_string());kt.push_keyvalue(1, "data_type", &self.data_type.to_string()); - replacement in src/serve_ts.rs at line 144
impl<'a> TryInto<TSCountrySpec> for KeyTreeRef<'a> {impl<'a> TryInto<TSPageSpec> for KeyTreeRef<'a> { - replacement in src/serve_ts.rs at line 147
fn try_into(self) -> Result<TSCountrySpec, Error> {fn try_into(self) -> Result<TSPageSpec, Error> { - replacement in src/serve_ts.rs at line 149
let country_str: String = self.at("country::name")?;let country_str: String = self.at("country::country")?; - edit in src/serve_ts.rs at line 151
let data_type_str: String = self.at("country::data_type")?;let data_type = DataType::from_str(&data_type_str).unwrap(); - replacement in src/serve_ts.rs at line 155
Ok(TSCountrySpec {name: country,Ok(TSPageSpec {country: country,data_type: data_type, - edit in src/serve_ts.rs at line 217
impl PageJson {// Build from a `TSSpec`.pub fn new(page_spec: TSSpec, data_root: &str) -> Self {let ts_spec = TSSpec::from_file("ts_spec.keytree"); - edit in src/serve_ts.rs at line 225
PageJson(HashMap::new())}} - replacement in src/main.rs at line 5
use keytree::serialize::IntoKeyTree;// use keytree::serialize::IntoKeyTree; - replacement in src/main.rs at line 10
use ui_data::serve_ts::*;// use ui_data::serve_ts::*; - replacement in src/main.rs at line 43
checked.generate_ts_spec();checked.bootstrap_ts_spec(); - replacement in src/check_data.rs at line 23
TSCountrySpec,PageKey, - edit in src/check_data.rs at line 26
TSSpec, - replacement in src/check_data.rs at line 98
pub fn generate_ts_spec(&self) {pub fn bootstrap_ts_spec(&self) { - replacement in src/check_data.rs at line 100
let mut h: HashMap<Country, TSCountrySpec> = HashMap::new();let mut h: HashMap<PageKey, TSPageSpec> = HashMap::new(); - replacement in src/check_data.rs at line 113
match h.get_mut(&series.country) {Some(country_spec) => {country_spec.graphics[0].push(&series.id);match h.get_mut(&series.key()) {Some(page_spec) => {page_spec.graphics[0].push(&series.id); - replacement in src/check_data.rs at line 120
let ts_country_spec = TSCountrySpec::new(series.country, vec!(ts_graphic_spec));h.insert(series.country, ts_country_spec);let ts_page_spec = TSPageSpec::new(series.key(), vec!(ts_graphic_spec));h.insert(series.key(), ts_page_spec); - replacement in src/check_data.rs at line 126
// Build TSPageSpec from the hashmap.// Build TSSpec from the hashmap. - replacement in src/check_data.rs at line 128
let mut ts_page_spec = TSPageSpec(Vec::new());for (country, country_spec) in h {ts_page_spec.push(country_spec);let mut ts_spec = TSSpec(Vec::new());for (key, page_spec) in h {ts_spec.push(page_spec); - replacement in src/check_data.rs at line 133
println!("{}", ts_page_spec.keytree())println!("{}", ts_spec.keytree()) - edit in src/check_data.rs at line 169
pub fn key(&self) -> PageKey {PageKey {data_type: self.data_type,country: self.country,}}