Added data_type to TSSpec key.

[?]
Jun 21, 2021, 11:57 PM
U4VCAFXQNTKC7KWWE3B2JJMZMFRGLBOHSZIOXCE6EEXW7WE2Q5NAC

Dependencies

  • [2] GQVS55HI Finished generate_ts_spec() function.
  • [3] GUXZCEWW Added Country enum.
  • [4] 5POF332L Working on fn cpi_included().
  • [5] AT753JPO Selected US unemployment series.
  • [6] LVMGQJGH Finished framework for checking series specifications with data.

Change contents

  • replacement in src/serve_ts.rs at line 3
    [2.7194][2.7194:7347]()
    //! The `TSPageSpec::TSCountrySpec::TSGraphicSpec` group of data-structures mirrors
    //! `ts_spec.keytree`. Its main function is TSPageSpec::new(PageJson
    [2.7194]
    [2.7347]
    //! 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
    [2.7507][2.7507:7572]()
    //! PageJson::new(ts_spec: TSPageSpec, checked_spec: Checked...)
    [2.7507]
    [2.7572]
    //! PageJson::new(ts_spec: TSSpec, checked_spec: Checked...)
  • replacement in src/serve_ts.rs at line 40
    [2.8100][2.8100:8147]()
    pub struct TSPageSpec(pub Vec<TSCountrySpec>);
    [2.8100]
    [2.8147]
    /// 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
    [2.8148][2.8148:8166]()
    impl TSPageSpec {
    [2.8148]
    [2.8166]
    impl TSSpec {
  • replacement in src/serve_ts.rs at line 58
    [2.8167][2.8167:8231]()
    pub fn new() -> TSPageSpec {
    TSPageSpec(Vec::new())
    [2.8167]
    [2.8231]
    pub fn new() -> TSSpec {
    TSSpec(Vec::new())
  • replacement in src/serve_ts.rs at line 62
    [2.8238][2.8238:8288]()
    pub fn push(&mut self, item: TSCountrySpec) {
    [2.8238]
    [2.8288]
    pub fn push(&mut self, item: TSPageSpec) {
  • edit in src/serve_ts.rs at line 65
    [2.8320]
    [2.8320]
    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
    [2.8323][2.8323:8357]()
    impl IntoKeyTree for TSPageSpec {
    [2.8323]
    [2.8357]
    impl IntoKeyTree for TSSpec {
  • replacement in src/serve_ts.rs at line 76
    [2.8441][2.8441:8557]()
    kt.push_key(0, "page");
    for country in &self.0 {
    kt.push_keytree(1, country.keytree());
    [2.8441]
    [2.8557]
    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
    [2.8587][2.8587:8637]()
    impl<'a> TryInto<TSPageSpec> for KeyTreeRef<'a> {
    [2.8587]
    [2.8637]
    impl<'a> TryInto<TSSpec> for KeyTreeRef<'a> {
  • replacement in src/serve_ts.rs at line 87
    [2.8662][2.8662:8825]()
    fn try_into(self) -> Result<TSPageSpec, Error> {
    let country_vec: Vec<TSCountrySpec> = self.vec("page::country")?;
    Ok(TSPageSpec(country_vec))
    [2.8662]
    [2.8825]
    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
    [2.8834][2.8834:8890]()
    pub struct TSCountrySpec {
    pub name: Country,
    [2.8834]
    [2.8890]
    /// 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
    [2.8933][2.8933:9078]()
    impl TSCountrySpec {
    pub fn new(country: Country, graphics: Vec<TSGraphicSpec>) -> Self {
    TSCountrySpec {
    name: country,
    [2.8933]
    [2.9078]
    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
    [2.9126]
    [2.9126]
    pub fn key(&self) -> PageKey {
    PageKey {
    country: self.country,
    data_type: self.data_type,
    }
    }
  • replacement in src/serve_ts.rs at line 129
    [2.9129][2.9129:9166]()
    impl IntoKeyTree for TSCountrySpec {
    [2.9129]
    [2.9166]
    impl IntoKeyTree for TSPageSpec {
  • replacement in src/serve_ts.rs at line 134
    [2.9252][2.9252:9348]()
    kt.push_key(0, "country");
    kt.push_keyvalue(1, "name", &self.name.to_string());
    [2.9252]
    [2.9348]
    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
    [2.9469][2.9469:9522]()
    impl<'a> TryInto<TSCountrySpec> for KeyTreeRef<'a> {
    [2.9469]
    [2.9522]
    impl<'a> TryInto<TSPageSpec> for KeyTreeRef<'a> {
  • replacement in src/serve_ts.rs at line 147
    [2.9547][2.9547:9603]()
    fn try_into(self) -> Result<TSCountrySpec, Error> {
    [2.9547]
    [2.9603]
    fn try_into(self) -> Result<TSPageSpec, Error> {
  • replacement in src/serve_ts.rs at line 149
    [2.9604][2.9604:9665]()
    let country_str: String = self.at("country::name")?;
    [2.9604]
    [2.9665]
    let country_str: String = self.at("country::country")?;
  • edit in src/serve_ts.rs at line 151
    [2.9729]
    [2.9729]
    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
    [2.9734][2.9734:9788]()
    Ok(TSCountrySpec {
    name: country,
    [2.9734]
    [2.9788]
    Ok(TSPageSpec {
    country: country,
    data_type: data_type,
  • edit in src/serve_ts.rs at line 217
    [2.11376]
    [2.11376]
    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
    [2.11377]
    [2.11377]
    PageJson(HashMap::new())
    }
    }
  • replacement in src/main.rs at line 5
    [2.12530][3.11577:11614](),[3.21][3.11577:11614]()
    use keytree::serialize::IntoKeyTree;
    [2.12530]
    [3.0]
    // use keytree::serialize::IntoKeyTree;
  • replacement in src/main.rs at line 10
    [2.12605][2.12605:12631]()
    use ui_data::serve_ts::*;
    [2.12605]
    [3.110]
    // use ui_data::serve_ts::*;
  • replacement in src/main.rs at line 43
    [3.11802][2.12756:12788]()
    checked.generate_ts_spec();
    [3.11802]
    [3.292]
    checked.bootstrap_ts_spec();
  • replacement in src/check_data.rs at line 23
    [2.13434][2.13434:13453]()
    TSCountrySpec,
    [2.13434]
    [2.13453]
    PageKey,
  • edit in src/check_data.rs at line 26
    [2.13488]
    [2.13488]
    TSSpec,
  • replacement in src/check_data.rs at line 98
    [2.14348][2.14348:14385]()
    pub fn generate_ts_spec(&self) {
    [2.14348]
    [2.14385]
    pub fn bootstrap_ts_spec(&self) {
  • replacement in src/check_data.rs at line 100
    [2.14386][2.14386:14455]()
    let mut h: HashMap<Country, TSCountrySpec> = HashMap::new();
    [2.14386]
    [2.14455]
    let mut h: HashMap<PageKey, TSPageSpec> = HashMap::new();
  • replacement in src/check_data.rs at line 113
    [2.14725][2.14725:14875]()
    match h.get_mut(&series.country) {
    Some(country_spec) => {
    country_spec.graphics[0].push(&series.id);
    [2.14725]
    [2.14875]
    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
    [2.15042][2.15042:15207]()
    let ts_country_spec = TSCountrySpec::new(series.country, vec!(ts_graphic_spec));
    h.insert(series.country, ts_country_spec);
    [2.15042]
    [2.15207]
    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
    [2.15243][2.15243:15289]()
    // Build TSPageSpec from the hashmap.
    [2.15243]
    [2.15289]
    // Build TSSpec from the hashmap.
  • replacement in src/check_data.rs at line 128
    [2.15290][2.15290:15433]()
    let mut ts_page_spec = TSPageSpec(Vec::new());
    for (country, country_spec) in h {
    ts_page_spec.push(country_spec);
    [2.15290]
    [2.15433]
    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
    [2.15445][2.15445:15492]()
    println!("{}", ts_page_spec.keytree())
    [2.15445]
    [3.15407]
    println!("{}", ts_spec.keytree())
  • edit in src/check_data.rs at line 169
    [2.15845]
    [2.15845]
    pub fn key(&self) -> PageKey {
    PageKey {
    data_type: self.data_type,
    country: self.country,
    }
    }