diff --git a/src/app.rs b/src/app.rs index a80db5e..c01333a 100644 --- a/src/app.rs +++ b/src/app.rs @@ -342,7 +342,7 @@ impl Summary { for tile_id in config.request_tiles(cx.view_interval) { config .data_source - .fetch_summary_tile(&self.entry_id, tile_id); + .fetch_summary_tile(&self.entry_id, tile_id, false); self.tiles.insert(tile_id, None); } } diff --git a/src/archive_data.rs b/src/archive_data.rs index eeee0e9..da61fd7 100644 --- a/src/archive_data.rs +++ b/src/archive_data.rs @@ -222,7 +222,8 @@ impl DataSourceArchiveWriter { match entry_id.last_index().unwrap() { EntryIndex::Summary => { for tile_id in tile_ids { - self.data_source.fetch_summary_tile(entry_id, *tile_id); + self.data_source + .fetch_summary_tile(entry_id, *tile_id, full); } } EntryIndex::Slot(..) => { diff --git a/src/data.rs b/src/data.rs index f49445a..3da97f5 100644 --- a/src/data.rs +++ b/src/data.rs @@ -207,7 +207,7 @@ pub struct SlotMetaTile { pub trait DataSource { fn fetch_info(&self) -> DataSourceInfo; - fn fetch_summary_tile(&self, entry_id: &EntryID, tile_id: TileID) -> SummaryTile; + fn fetch_summary_tile(&self, entry_id: &EntryID, tile_id: TileID, full: bool) -> SummaryTile; fn fetch_slot_tile(&self, entry_id: &EntryID, tile_id: TileID, full: bool) -> SlotTile; fn fetch_slot_meta_tile(&self, entry_id: &EntryID, tile_id: TileID, full: bool) -> SlotMetaTile; @@ -215,7 +215,12 @@ pub trait DataSource { pub trait DataSourceMut { fn fetch_info(&mut self) -> DataSourceInfo; - fn fetch_summary_tile(&mut self, entry_id: &EntryID, tile_id: TileID) -> SummaryTile; + fn fetch_summary_tile( + &mut self, + entry_id: &EntryID, + tile_id: TileID, + full: bool, + ) -> SummaryTile; fn fetch_slot_tile(&mut self, entry_id: &EntryID, tile_id: TileID, full: bool) -> SlotTile; fn fetch_slot_meta_tile( &mut self, @@ -229,8 +234,13 @@ impl DataSourceMut for T { fn fetch_info(&mut self) -> DataSourceInfo { DataSource::fetch_info(self) } - fn fetch_summary_tile(&mut self, entry_id: &EntryID, tile_id: TileID) -> SummaryTile { - DataSource::fetch_summary_tile(self, entry_id, tile_id) + fn fetch_summary_tile( + &mut self, + entry_id: &EntryID, + tile_id: TileID, + full: bool, + ) -> SummaryTile { + DataSource::fetch_summary_tile(self, entry_id, tile_id, full) } fn fetch_slot_tile(&mut self, entry_id: &EntryID, tile_id: TileID, full: bool) -> SlotTile { DataSource::fetch_slot_tile(self, entry_id, tile_id, full) diff --git a/src/deferred_data.rs b/src/deferred_data.rs index fb1cfde..361e578 100644 --- a/src/deferred_data.rs +++ b/src/deferred_data.rs @@ -5,7 +5,7 @@ use crate::data::{ pub trait DeferredDataSource { fn fetch_info(&mut self); fn get_infos(&mut self) -> Vec; - fn fetch_summary_tile(&mut self, entry_id: &EntryID, tile_id: TileID); + fn fetch_summary_tile(&mut self, entry_id: &EntryID, tile_id: TileID, full: bool); fn get_summary_tiles(&mut self) -> Vec; fn fetch_slot_tile(&mut self, entry_id: &EntryID, tile_id: TileID, full: bool); fn get_slot_tiles(&mut self) -> Vec; @@ -42,9 +42,9 @@ impl DeferredDataSource for DeferredDataSourceWrapper { std::mem::take(&mut self.infos) } - fn fetch_summary_tile(&mut self, entry_id: &EntryID, tile_id: TileID) { + fn fetch_summary_tile(&mut self, entry_id: &EntryID, tile_id: TileID, full: bool) { self.summary_tiles - .push(self.data_source.fetch_summary_tile(entry_id, tile_id)); + .push(self.data_source.fetch_summary_tile(entry_id, tile_id, full)); } fn get_summary_tiles(&mut self) -> Vec { @@ -112,9 +112,9 @@ impl DeferredDataSource for CountingDeferredDataSource self.finish_request(result) } - fn fetch_summary_tile(&mut self, entry_id: &EntryID, tile_id: TileID) { + fn fetch_summary_tile(&mut self, entry_id: &EntryID, tile_id: TileID, full: bool) { self.start_request(); - self.data_source.fetch_summary_tile(entry_id, tile_id) + self.data_source.fetch_summary_tile(entry_id, tile_id, full) } fn get_summary_tiles(&mut self) -> Vec { @@ -153,8 +153,8 @@ impl DeferredDataSource for Box { self.as_mut().get_infos() } - fn fetch_summary_tile(&mut self, entry_id: &EntryID, tile_id: TileID) { - self.as_mut().fetch_summary_tile(entry_id, tile_id) + fn fetch_summary_tile(&mut self, entry_id: &EntryID, tile_id: TileID, full: bool) { + self.as_mut().fetch_summary_tile(entry_id, tile_id, full) } fn get_summary_tiles(&mut self) -> Vec { diff --git a/src/http/client.rs b/src/http/client.rs index 63a75d4..5754284 100644 --- a/src/http/client.rs +++ b/src/http/client.rs @@ -71,13 +71,14 @@ impl DeferredDataSource for HTTPClientDataSource { std::mem::take(&mut self.infos.lock().unwrap()) } - fn fetch_summary_tile(&mut self, entry_id: &EntryID, tile_id: TileID) { + fn fetch_summary_tile(&mut self, entry_id: &EntryID, tile_id: TileID, full: bool) { let req = TileRequestRef { entry_id, tile_id }; - let url = self + let mut url = self .baseurl .join("summary_tile/") .and_then(|u| u.join(&req.to_slug())) .expect("invalid baseurl"); + url.set_query(Some(&format!("full={}", full))); self.request::(url, self.summary_tiles.clone()); } diff --git a/src/http/server.rs b/src/http/server.rs index 508c449..9cab1cb 100644 --- a/src/http/server.rs +++ b/src/http/server.rs @@ -41,6 +41,7 @@ async fn fetch_info(state: web::Data) -> Result { #[get("/summary_tile/{entry_id}/{tile_id}")] async fn fetch_summary_tile( path: web::Path, + query: web::Query, state: web::Data, ) -> Result { let path = path @@ -48,7 +49,7 @@ async fn fetch_summary_tile( .map_err(|e| error::ErrorBadRequest(format!("bad request: {}", e)))?; let result = state .data_source - .fetch_summary_tile(&path.entry_id, path.tile_id); + .fetch_summary_tile(&path.entry_id, path.tile_id, query.full); encode(result) } diff --git a/src/main.rs b/src/main.rs index a5ec123..690a47a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -272,7 +272,12 @@ impl DataSourceMut for RandomDataSource { self.info.clone() } - fn fetch_summary_tile(&mut self, entry_id: &EntryID, tile_id: TileID) -> SummaryTile { + fn fetch_summary_tile( + &mut self, + entry_id: &EntryID, + tile_id: TileID, + _full: bool, + ) -> SummaryTile { let utilization = self.generate_summary(entry_id); let mut tile_utilization = Vec::new(); diff --git a/src/parallel_data.rs b/src/parallel_data.rs index 6fd8880..248f6ad 100644 --- a/src/parallel_data.rs +++ b/src/parallel_data.rs @@ -39,12 +39,12 @@ impl DeferredDataSource for ParallelDefer std::mem::take(&mut self.infos.lock().unwrap()) } - fn fetch_summary_tile(&mut self, entry_id: &EntryID, tile_id: TileID) { + fn fetch_summary_tile(&mut self, entry_id: &EntryID, tile_id: TileID, full: bool) { let entry_id = entry_id.clone(); let data_source = self.data_source.clone(); let summary_tiles = self.summary_tiles.clone(); rayon::spawn(move || { - let result = data_source.fetch_summary_tile(&entry_id, tile_id); + let result = data_source.fetch_summary_tile(&entry_id, tile_id, full); summary_tiles.lock().unwrap().push(result); }); }