Select product times based on current time, rather than volume time

Ensures scans not included in the volume times (e.g., multiple level 2 scans per file) are selected
This commit is contained in:
Dan Paulat 2024-10-27 08:45:15 -05:00
parent d209ce97ea
commit 2a9dc72721
5 changed files with 18 additions and 26 deletions

View file

@ -241,7 +241,7 @@ public:
std::vector<map::MapWidget*> maps_;
std::chrono::system_clock::time_point volumeTime_ {};
std::chrono::system_clock::time_point selectedTime_ {};
public slots:
void UpdateMapParameters(double latitude,
@ -997,22 +997,15 @@ void MainWindowImpl::ConnectAnimationSignals()
connect(timelineManager_.get(),
&manager::TimelineManager::SelectedTimeUpdated,
[this]()
{
for (auto map : maps_)
{
QMetaObject::invokeMethod(
map, static_cast<void (QWidget::*)()>(&QWidget::update));
}
});
connect(timelineManager_.get(),
&manager::TimelineManager::VolumeTimeUpdated,
[this](std::chrono::system_clock::time_point dateTime)
{
volumeTime_ = dateTime;
selectedTime_ = dateTime;
for (auto map : maps_)
{
map->SelectTime(dateTime);
QMetaObject::invokeMethod(
map, static_cast<void (QWidget::*)()>(&QWidget::update));
}
});
@ -1400,7 +1393,8 @@ void MainWindowImpl::SelectRadarProduct(map::MapWidget* mapWidget,
UpdateRadarProductSettings();
}
mapWidget->SelectRadarProduct(group, productName, productCode, volumeTime_);
mapWidget->SelectRadarProduct(
group, productName, productCode, selectedTime_);
}
void MainWindowImpl::SetActiveMap(map::MapWidget* mapWidget)

View file

@ -470,16 +470,8 @@ void TimelineManager::Impl::PlaySync()
auto selectTimeEnd = std::chrono::steady_clock::now();
auto elapsedTime = selectTimeEnd - selectTimeStart;
if (volumeTimeUpdated)
{
// Wait for radar sweeps to update
RadarSweepMonitorWait(radarSweepMonitorLock);
}
else
{
// Disable radar sweep monitor
RadarSweepMonitorDisable();
}
// Wait for radar sweeps to update
RadarSweepMonitorWait(radarSweepMonitorLock);
// Calculate the interval until the next update, prior to selecting
std::chrono::milliseconds interval;

View file

@ -497,7 +497,7 @@ void Level2ProductView::UpdateColorTableLut()
void Level2ProductView::ComputeSweep()
{
logger_->debug("ComputeSweep()");
logger_->trace("ComputeSweep()");
boost::timer::cpu_timer timer;
@ -529,6 +529,8 @@ void Level2ProductView::ComputeSweep()
return;
}
logger_->debug("Computing Sweep");
std::size_t radials = radarData->crbegin()->first + 1;
std::size_t vertexRadials = radials;

View file

@ -117,7 +117,7 @@ std::tuple<const void*, size_t, size_t> Level3RadialView::GetMomentData() const
void Level3RadialView::ComputeSweep()
{
logger_->debug("ComputeSweep()");
logger_->trace("ComputeSweep()");
boost::timer::cpu_timer timer;
@ -185,6 +185,8 @@ void Level3RadialView::ComputeSweep()
return;
}
logger_->debug("Computing Sweep");
// A message with radial data should either have a Digital Radial Data
// Array Packet, or a Radial Data Array Packet
std::shared_ptr<wsr88d::rpg::DigitalRadialDataArrayPacket>

View file

@ -101,7 +101,7 @@ std::tuple<const void*, size_t, size_t> Level3RasterView::GetMomentData() const
void Level3RasterView::ComputeSweep()
{
logger_->debug("ComputeSweep()");
logger_->trace("ComputeSweep()");
boost::timer::cpu_timer timer;
@ -169,6 +169,8 @@ void Level3RasterView::ComputeSweep()
return;
}
logger_->debug("Computing Sweep");
// A message with raster data should have a Raster Data Packet
std::shared_ptr<wsr88d::rpg::RasterDataPacket> rasterData = nullptr;