Update most instances of current time to use a time offset

This commit is contained in:
Dan Paulat 2025-08-22 23:42:08 -05:00
parent e0a4dee72b
commit bd27d0e562
19 changed files with 48 additions and 38 deletions

View file

@ -4,6 +4,7 @@
#include <scwx/qt/util/texture_atlas.hpp> #include <scwx/qt/util/texture_atlas.hpp>
#include <scwx/qt/util/tooltip.hpp> #include <scwx/qt/util/tooltip.hpp>
#include <scwx/util/logger.hpp> #include <scwx/util/logger.hpp>
#include <scwx/util/time.hpp>
#include <execution> #include <execution>
@ -313,7 +314,7 @@ void GeoIcons::Render(const QMapLibre::CustomLayerRenderParameters& params,
// Selected time // Selected time
std::chrono::system_clock::time_point selectedTime = std::chrono::system_clock::time_point selectedTime =
(p->selectedTime_ == std::chrono::system_clock::time_point {}) ? (p->selectedTime_ == std::chrono::system_clock::time_point {}) ?
std::chrono::system_clock::now() : scwx::util::time::now() :
p->selectedTime_; p->selectedTime_;
glUniform1i( glUniform1i(
p->uSelectedTimeLocation_, p->uSelectedTimeLocation_,
@ -930,7 +931,7 @@ bool GeoIcons::RunMousePicking(
// If no time has been selected, use the current time // If no time has been selected, use the current time
std::chrono::system_clock::time_point selectedTime = std::chrono::system_clock::time_point selectedTime =
(p->selectedTime_ == std::chrono::system_clock::time_point {}) ? (p->selectedTime_ == std::chrono::system_clock::time_point {}) ?
std::chrono::system_clock::now() : scwx::util::time::now() :
p->selectedTime_; p->selectedTime_;
// For each pickable icon // For each pickable icon

View file

@ -3,6 +3,7 @@
#include <scwx/qt/util/maplibre.hpp> #include <scwx/qt/util/maplibre.hpp>
#include <scwx/qt/util/tooltip.hpp> #include <scwx/qt/util/tooltip.hpp>
#include <scwx/util/logger.hpp> #include <scwx/util/logger.hpp>
#include <scwx/util/time.hpp>
#include <execution> #include <execution>
@ -284,7 +285,7 @@ void GeoLines::Render(const QMapLibre::CustomLayerRenderParameters& params)
// Selected time // Selected time
std::chrono::system_clock::time_point selectedTime = std::chrono::system_clock::time_point selectedTime =
(p->selectedTime_ == std::chrono::system_clock::time_point {}) ? (p->selectedTime_ == std::chrono::system_clock::time_point {}) ?
std::chrono::system_clock::now() : scwx::util::time::now() :
p->selectedTime_; p->selectedTime_;
glUniform1i( glUniform1i(
p->uSelectedTimeLocation_, p->uSelectedTimeLocation_,
@ -723,7 +724,7 @@ bool GeoLines::RunMousePicking(
// If no time has been selected, use the current time // If no time has been selected, use the current time
std::chrono::system_clock::time_point selectedTime = std::chrono::system_clock::time_point selectedTime =
(p->selectedTime_ == std::chrono::system_clock::time_point {}) ? (p->selectedTime_ == std::chrono::system_clock::time_point {}) ?
std::chrono::system_clock::now() : scwx::util::time::now() :
p->selectedTime_; p->selectedTime_;
// For each pickable line // For each pickable line

View file

@ -3,6 +3,7 @@
#include <scwx/qt/util/texture_atlas.hpp> #include <scwx/qt/util/texture_atlas.hpp>
#include <scwx/qt/util/tooltip.hpp> #include <scwx/qt/util/tooltip.hpp>
#include <scwx/util/logger.hpp> #include <scwx/util/logger.hpp>
#include <scwx/util/time.hpp>
#include <execution> #include <execution>
@ -295,7 +296,7 @@ void PlacefileIcons::Render(
// Selected time // Selected time
std::chrono::system_clock::time_point selectedTime = std::chrono::system_clock::time_point selectedTime =
(p->selectedTime_ == std::chrono::system_clock::time_point {}) ? (p->selectedTime_ == std::chrono::system_clock::time_point {}) ?
std::chrono::system_clock::now() : scwx::util::time::now() :
p->selectedTime_; p->selectedTime_;
glUniform1i( glUniform1i(
p->uSelectedTimeLocation_, p->uSelectedTimeLocation_,
@ -720,7 +721,7 @@ bool PlacefileIcons::RunMousePicking(
// If no time has been selected, use the current time // If no time has been selected, use the current time
std::chrono::system_clock::time_point selectedTime = std::chrono::system_clock::time_point selectedTime =
(p->selectedTime_ == std::chrono::system_clock::time_point {}) ? (p->selectedTime_ == std::chrono::system_clock::time_point {}) ?
std::chrono::system_clock::now() : scwx::util::time::now() :
p->selectedTime_; p->selectedTime_;
// For each pickable icon // For each pickable icon

View file

@ -2,6 +2,7 @@
#include <scwx/qt/util/maplibre.hpp> #include <scwx/qt/util/maplibre.hpp>
#include <scwx/qt/util/texture_atlas.hpp> #include <scwx/qt/util/texture_atlas.hpp>
#include <scwx/util/logger.hpp> #include <scwx/util/logger.hpp>
#include <scwx/util/time.hpp>
#include <QDir> #include <QDir>
#include <QUrl> #include <QUrl>
@ -264,7 +265,7 @@ void PlacefileImages::Render(
// Selected time // Selected time
std::chrono::system_clock::time_point selectedTime = std::chrono::system_clock::time_point selectedTime =
(p->selectedTime_ == std::chrono::system_clock::time_point {}) ? (p->selectedTime_ == std::chrono::system_clock::time_point {}) ?
std::chrono::system_clock::now() : scwx::util::time::now() :
p->selectedTime_; p->selectedTime_;
glUniform1i( glUniform1i(
p->uSelectedTimeLocation_, p->uSelectedTimeLocation_,

View file

@ -3,6 +3,7 @@
#include <scwx/qt/util/maplibre.hpp> #include <scwx/qt/util/maplibre.hpp>
#include <scwx/qt/util/tooltip.hpp> #include <scwx/qt/util/tooltip.hpp>
#include <scwx/util/logger.hpp> #include <scwx/util/logger.hpp>
#include <scwx/util/time.hpp>
#include <execution> #include <execution>
@ -248,7 +249,7 @@ void PlacefileLines::Render(
// Selected time // Selected time
std::chrono::system_clock::time_point selectedTime = std::chrono::system_clock::time_point selectedTime =
(p->selectedTime_ == std::chrono::system_clock::time_point {}) ? (p->selectedTime_ == std::chrono::system_clock::time_point {}) ?
std::chrono::system_clock::now() : scwx::util::time::now() :
p->selectedTime_; p->selectedTime_;
glUniform1i( glUniform1i(
p->uSelectedTimeLocation_, p->uSelectedTimeLocation_,
@ -526,7 +527,7 @@ bool PlacefileLines::RunMousePicking(
// If no time has been selected, use the current time // If no time has been selected, use the current time
std::chrono::system_clock::time_point selectedTime = std::chrono::system_clock::time_point selectedTime =
(p->selectedTime_ == std::chrono::system_clock::time_point {}) ? (p->selectedTime_ == std::chrono::system_clock::time_point {}) ?
std::chrono::system_clock::now() : scwx::util::time::now() :
p->selectedTime_; p->selectedTime_;
// For each pickable line // For each pickable line

View file

@ -1,6 +1,7 @@
#include <scwx/qt/gl/draw/placefile_polygons.hpp> #include <scwx/qt/gl/draw/placefile_polygons.hpp>
#include <scwx/qt/util/maplibre.hpp> #include <scwx/qt/util/maplibre.hpp>
#include <scwx/util/logger.hpp> #include <scwx/util/logger.hpp>
#include <scwx/util/time.hpp>
#include <mutex> #include <mutex>
@ -259,7 +260,7 @@ void PlacefilePolygons::Render(
// Selected time // Selected time
std::chrono::system_clock::time_point selectedTime = std::chrono::system_clock::time_point selectedTime =
(p->selectedTime_ == std::chrono::system_clock::time_point {}) ? (p->selectedTime_ == std::chrono::system_clock::time_point {}) ?
std::chrono::system_clock::now() : scwx::util::time::now() :
p->selectedTime_; p->selectedTime_;
glUniform1i( glUniform1i(
p->uSelectedTimeLocation_, p->uSelectedTimeLocation_,

View file

@ -5,6 +5,7 @@
#include <scwx/qt/util/maplibre.hpp> #include <scwx/qt/util/maplibre.hpp>
#include <scwx/qt/util/tooltip.hpp> #include <scwx/qt/util/tooltip.hpp>
#include <scwx/util/logger.hpp> #include <scwx/util/logger.hpp>
#include <scwx/util/time.hpp>
#include <fmt/format.h> #include <fmt/format.h>
#include <imgui.h> #include <imgui.h>
@ -127,7 +128,7 @@ void PlacefileText::Impl::RenderTextDrawItem(
// If no time has been selected, use the current time // If no time has been selected, use the current time
std::chrono::system_clock::time_point selectedTime = std::chrono::system_clock::time_point selectedTime =
(selectedTime_ == std::chrono::system_clock::time_point {}) ? (selectedTime_ == std::chrono::system_clock::time_point {}) ?
std::chrono::system_clock::now() : scwx::util::time::now() :
selectedTime_; selectedTime_;
const bool thresholdMet = const bool thresholdMet =

View file

@ -1,6 +1,7 @@
#include <scwx/qt/gl/draw/placefile_triangles.hpp> #include <scwx/qt/gl/draw/placefile_triangles.hpp>
#include <scwx/qt/util/maplibre.hpp> #include <scwx/qt/util/maplibre.hpp>
#include <scwx/util/logger.hpp> #include <scwx/util/logger.hpp>
#include <scwx/util/time.hpp>
#include <mutex> #include <mutex>
@ -203,7 +204,7 @@ void PlacefileTriangles::Render(
// Selected time // Selected time
std::chrono::system_clock::time_point selectedTime = std::chrono::system_clock::time_point selectedTime =
(p->selectedTime_ == std::chrono::system_clock::time_point {}) ? (p->selectedTime_ == std::chrono::system_clock::time_point {}) ?
std::chrono::system_clock::now() : scwx::util::time::now() :
p->selectedTime_; p->selectedTime_;
glUniform1i( glUniform1i(
p->uSelectedTimeLocation_, p->uSelectedTimeLocation_,

View file

@ -2,12 +2,13 @@
#include <scwx/qt/manager/media_manager.hpp> #include <scwx/qt/manager/media_manager.hpp>
#include <scwx/qt/manager/position_manager.hpp> #include <scwx/qt/manager/position_manager.hpp>
#include <scwx/qt/manager/text_event_manager.hpp> #include <scwx/qt/manager/text_event_manager.hpp>
#include <scwx/qt/config/radar_site.hpp>
#include <scwx/qt/settings/audio_settings.hpp> #include <scwx/qt/settings/audio_settings.hpp>
#include <scwx/qt/settings/general_settings.hpp>
#include <scwx/qt/types/location_types.hpp> #include <scwx/qt/types/location_types.hpp>
#include <scwx/qt/util/geographic_lib.hpp> #include <scwx/qt/util/geographic_lib.hpp>
#include <scwx/util/logger.hpp> #include <scwx/util/logger.hpp>
#include <scwx/qt/config/radar_site.hpp> #include <scwx/util/time.hpp>
#include <scwx/qt/settings/general_settings.hpp>
#include <boost/asio/post.hpp> #include <boost/asio/post.hpp>
#include <boost/asio/thread_pool.hpp> #include <boost/asio/thread_pool.hpp>
@ -172,7 +173,7 @@ void AlertManager::Impl::HandleAlert(const types::TextEventKey& key,
// If the event has ended or is inactive, or if the alert is not enabled, // If the event has ended or is inactive, or if the alert is not enabled,
// skip it // skip it
if (eventEnd < std::chrono::system_clock::now() || !alertActive || if (eventEnd < scwx::util::time::now() || !alertActive ||
!audioSettings.alert_enabled(phenomenon).GetValue()) !audioSettings.alert_enabled(phenomenon).GetValue())
{ {
continue; continue;

View file

@ -9,6 +9,7 @@
#include <scwx/util/logger.hpp> #include <scwx/util/logger.hpp>
#include <scwx/util/map.hpp> #include <scwx/util/map.hpp>
#include <scwx/util/threads.hpp> #include <scwx/util/threads.hpp>
#include <scwx/util/time.hpp>
#include <scwx/wsr88d/nexrad_file_factory.hpp> #include <scwx/wsr88d/nexrad_file_factory.hpp>
#include <execution> #include <execution>
@ -821,7 +822,7 @@ void RadarProductManagerImpl::RefreshDataSync(
auto latestTime = providerManager->provider_->FindLatestTime(); auto latestTime = providerManager->provider_->FindLatestTime();
auto updatePeriod = providerManager->provider_->update_period(); auto updatePeriod = providerManager->provider_->update_period();
auto lastModified = providerManager->provider_->last_modified(); auto lastModified = providerManager->provider_->last_modified();
auto sinceLastModified = std::chrono::system_clock::now() - lastModified; auto sinceLastModified = scwx::util::time::now() - lastModified;
// For the default interval, assume products are updated at a // For the default interval, assume products are updated at a
// constant rate. Expect the next product at a time based on the // constant rate. Expect the next product at a time based on the
@ -939,7 +940,7 @@ RadarProductManager::GetActiveVolumeTimes(
[&](const auto& date) [&](const auto& date)
{ {
// Don't query for a time point in the future // Don't query for a time point in the future
if (date > std::chrono::system_clock::now()) if (date > scwx::util::time::now())
{ {
return; return;
} }
@ -1259,7 +1260,7 @@ void RadarProductManagerImpl::PopulateProductTimes(
[&](const auto& date) [&](const auto& date)
{ {
// Don't query for a time point in the future // Don't query for a time point in the future
if (date > std::chrono::system_clock::now()) if (date > scwx::util::time::now())
{ {
return; return;
} }
@ -1556,7 +1557,7 @@ RadarProductManager::GetLevel2Data(wsr88d::rda::DataBlockType dataBlockType,
bool needArchive = true; bool needArchive = true;
static const auto maxChunkDelay = std::chrono::minutes(10); static const auto maxChunkDelay = std::chrono::minutes(10);
const std::chrono::system_clock::time_point firstValidChunkTime = const std::chrono::system_clock::time_point firstValidChunkTime =
(isEpox ? std::chrono::system_clock::now() : time) - maxChunkDelay; (isEpox ? scwx::util::time::now() : time) - maxChunkDelay;
// See if we have this one in the chunk provider. // See if we have this one in the chunk provider.
auto chunkFile = std::dynamic_pointer_cast<wsr88d::Ar2vFile>( auto chunkFile = std::dynamic_pointer_cast<wsr88d::Ar2vFile>(

View file

@ -678,7 +678,7 @@ void TextEventManager::Impl::Refresh()
// If the time jumps, we should attempt to load from no later than the // If the time jumps, we should attempt to load from no later than the
// previous load time // previous load time
auto loadTime = auto loadTime =
std::chrono::floor<std::chrono::hours>(std::chrono::system_clock::now()); std::chrono::floor<std::chrono::hours>(scwx::util::time::now());
auto startTime = loadTime - loadHistoryDuration_; auto startTime = loadTime - loadHistoryDuration_;
if (prevLoadTime_ != std::chrono::sys_time<std::chrono::hours> {}) if (prevLoadTime_ != std::chrono::sys_time<std::chrono::hours> {})

View file

@ -218,7 +218,7 @@ void TimelineManager::AnimationStepBegin()
p->pinnedTime_ == std::chrono::system_clock::time_point {}) p->pinnedTime_ == std::chrono::system_clock::time_point {})
{ {
// If the selected view type is live, select the current products // If the selected view type is live, select the current products
p->SelectTimeAsync(std::chrono::system_clock::now() - p->loopTime_); p->SelectTimeAsync(scwx::util::time::now() - p->loopTime_);
} }
else else
{ {
@ -385,8 +385,8 @@ TimelineManager::Impl::GetLoopStartAndEndTimes()
if (viewType_ == types::MapTime::Live || if (viewType_ == types::MapTime::Live ||
pinnedTime_ == std::chrono::system_clock::time_point {}) pinnedTime_ == std::chrono::system_clock::time_point {})
{ {
endTime = std::chrono::floor<std::chrono::minutes>( endTime =
std::chrono::system_clock::now()); std::chrono::floor<std::chrono::minutes>(scwx::util::time::now());
} }
else else
{ {
@ -656,8 +656,8 @@ void TimelineManager::Impl::Step(Direction direction)
{ {
if (direction == Direction::Back) if (direction == Direction::Back)
{ {
newTime = std::chrono::floor<std::chrono::minutes>( newTime =
std::chrono::system_clock::now()); std::chrono::floor<std::chrono::minutes>(scwx::util::time::now());
} }
else else
{ {
@ -688,7 +688,7 @@ void TimelineManager::Impl::Step(Direction direction)
newTime += 1min; newTime += 1min;
// If the new time is more than 2 minutes in the future, stop stepping // If the new time is more than 2 minutes in the future, stop stepping
if (newTime > std::chrono::system_clock::now() + 2min) if (newTime > scwx::util::time::now() + 2min)
{ {
break; break;
} }

View file

@ -6,6 +6,7 @@
#include <scwx/qt/util/color.hpp> #include <scwx/qt/util/color.hpp>
#include <scwx/qt/util/tooltip.hpp> #include <scwx/qt/util/tooltip.hpp>
#include <scwx/util/logger.hpp> #include <scwx/util/logger.hpp>
#include <scwx/util/time.hpp>
#include <chrono> #include <chrono>
#include <mutex> #include <mutex>
@ -581,8 +582,7 @@ void AlertLayer::Impl::ScheduleRefresh()
// Expires at the top of the next minute // Expires at the top of the next minute
std::chrono::system_clock::time_point now = std::chrono::system_clock::time_point now =
std::chrono::floor<std::chrono::minutes>( std::chrono::floor<std::chrono::minutes>(scwx::util::time::now());
std::chrono::system_clock::now());
refreshTimer_.expires_at(now + 1min); refreshTimer_.expires_at(now + 1min);
refreshTimer_.async_wait( refreshTimer_.async_wait(

View file

@ -3,6 +3,7 @@
#include <scwx/qt/types/qt_types.hpp> #include <scwx/qt/types/qt_types.hpp>
#include <scwx/util/logger.hpp> #include <scwx/util/logger.hpp>
#include <scwx/util/threads.hpp> #include <scwx/util/threads.hpp>
#include <scwx/util/time.hpp>
#include <chrono> #include <chrono>
#include <mutex> #include <mutex>
@ -67,7 +68,7 @@ bool AlertProxyModel::filterAcceptsRow(int sourceRow,
.value<std::chrono::system_clock::time_point>(); .value<std::chrono::system_clock::time_point>();
// Compare end time to current // Compare end time to current
if (endTime < std::chrono::system_clock::now()) if (endTime < scwx::util::time::now())
{ {
acceptAlertActiveFilter = false; acceptAlertActiveFilter = false;
} }

View file

@ -5,6 +5,7 @@
#include <scwx/qt/settings/general_settings.hpp> #include <scwx/qt/settings/general_settings.hpp>
#include <scwx/qt/util/time.hpp> #include <scwx/qt/util/time.hpp>
#include <scwx/util/logger.hpp> #include <scwx/util/logger.hpp>
#include <scwx/util/time.hpp>
#include <QTimer> #include <QTimer>
@ -81,8 +82,7 @@ AnimationDockWidget::AnimationDockWidget(QWidget* parent) :
p->timeZone_ = date::get_tzdb().locate_zone("UTC"); p->timeZone_ = date::get_tzdb().locate_zone("UTC");
#endif #endif
const std::chrono::sys_seconds currentTimePoint = const std::chrono::sys_seconds currentTimePoint =
std::chrono::floor<std::chrono::minutes>( std::chrono::floor<std::chrono::minutes>(scwx::util::time::now());
std::chrono::system_clock::now());
p->SetTimePoint(currentTimePoint); p->SetTimePoint(currentTimePoint);
// Update maximum date on a timer // Update maximum date on a timer

View file

@ -187,7 +187,7 @@ void OverlayProductView::Impl::LoadProduct(
header.date_of_message(), header.time_of_message() * 1000); header.date_of_message(), header.time_of_message() * 1000);
// If the record is from the last 30 minutes // If the record is from the last 30 minutes
if (productTime + 30min >= std::chrono::system_clock::now() || if (productTime + 30min >= scwx::util::time::now() ||
(selectedTime_ != std::chrono::system_clock::time_point {} && (selectedTime_ != std::chrono::system_clock::time_point {} &&
productTime + 30min >= selectedTime_)) productTime + 30min >= selectedTime_))
{ {

View file

@ -302,7 +302,7 @@ AwsLevel2ChunksDataProvider::Impl::GetScanTime(const std::string& prefix)
if (scanTimeIt != scanTimes_.cend()) if (scanTimeIt != scanTimes_.cend())
{ {
// If the time is greater than 2 hours ago, it may be a new scan // If the time is greater than 2 hours ago, it may be a new scan
auto replaceBy = system_clock::now() - hours {2}; auto replaceBy = util::time::now() - hours {2};
if (scanTimeIt->second > replaceBy) if (scanTimeIt->second > replaceBy)
{ {
return scanTimeIt->second; return scanTimeIt->second;
@ -333,8 +333,7 @@ AwsLevel2ChunksDataProvider::Impl::ListObjects()
size_t newObjects = 0; size_t newObjects = 0;
const size_t totalObjects = 0; const size_t totalObjects = 0;
const std::chrono::system_clock::time_point now = const std::chrono::system_clock::time_point now = util::time::now();
std::chrono::system_clock::now();
if (currentScan_.valid_ && !currentScan_.hasAllFiles_ && if (currentScan_.valid_ && !currentScan_.hasAllFiles_ &&
lastTimeListed_ + std::chrono::minutes(2) > now) lastTimeListed_ + std::chrono::minutes(2) > now)

View file

@ -352,7 +352,7 @@ std::pair<size_t, size_t> AwsNexradDataProvider::Refresh()
logger_->debug("Refresh()"); logger_->debug("Refresh()");
auto today = floor<days>(system_clock::now()); auto today = floor<days>(util::time::now());
auto yesterday = today - days {1}; auto yesterday = today - days {1};
std::unique_lock lock(p->refreshMutex_); std::unique_lock lock(p->refreshMutex_);
@ -388,7 +388,7 @@ void AwsNexradDataProvider::Impl::PruneObjects()
{ {
using namespace std::chrono; using namespace std::chrono;
auto today = floor<days>(system_clock::now()); auto today = floor<days>(util::time::now());
auto yesterday = today - days {1}; auto yesterday = today - days {1};
std::unique_lock lock(objectsMutex_); std::unique_lock lock(objectsMutex_);

View file

@ -108,7 +108,7 @@ WarningsProvider::LoadUpdatedFiles(
std::vector<std::shared_ptr<awips::TextProductFile>> updatedFiles; std::vector<std::shared_ptr<awips::TextProductFile>> updatedFiles;
const std::chrono::sys_time<std::chrono::hours> now = const std::chrono::sys_time<std::chrono::hours> now =
std::chrono::floor<std::chrono::hours>(std::chrono::system_clock::now()); std::chrono::floor<std::chrono::hours>(util::time::now());
std::chrono::sys_time<std::chrono::hours> currentHour = std::chrono::sys_time<std::chrono::hours> currentHour =
(startTime != std::chrono::sys_time<std::chrono::hours> {}) ? (startTime != std::chrono::sys_time<std::chrono::hours> {}) ?
startTime : startTime :