mirror of
https://github.com/ciphervance/supercell-wx.git
synced 2025-10-30 19:50:05 +00:00
County display for alerts, alert cleanup
This commit is contained in:
parent
305e5c3698
commit
c87a77795d
5 changed files with 27 additions and 5 deletions
|
|
@ -25,11 +25,17 @@ static const auto logger_ = scwx::util::Logger::Create(logPrefix_);
|
|||
|
||||
static const std::string countyDatabaseFilename_ = ":/res/db/counties.db";
|
||||
|
||||
static bool initialized_ {false};
|
||||
static std::unordered_map<std::string, std::string> countyMap_;
|
||||
static std::shared_mutex countyMutex_;
|
||||
|
||||
void CountyDatabase::Initialize()
|
||||
{
|
||||
if (initialized_)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
logger_->debug("Loading database");
|
||||
|
||||
// Generate UUID for temporary file
|
||||
|
|
@ -124,6 +130,8 @@ void CountyDatabase::Initialize()
|
|||
|
||||
// Remove temporary file
|
||||
std::filesystem::remove(countyDatabaseCache);
|
||||
|
||||
initialized_ = true;
|
||||
}
|
||||
|
||||
std::string GetCountyName(const std::string& id)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#include <scwx/qt/manager/resource_manager.hpp>
|
||||
#include <scwx/qt/config/county_database.hpp>
|
||||
#include <scwx/qt/util/font.hpp>
|
||||
#include <scwx/qt/util/texture_atlas.hpp>
|
||||
|
||||
|
|
@ -19,6 +20,8 @@ void PreLoad()
|
|||
|
||||
static void LoadFonts()
|
||||
{
|
||||
config::CountyDatabase::Initialize();
|
||||
|
||||
util::Font::Create(":/res/fonts/din1451alt.ttf");
|
||||
util::Font::Create(":/res/fonts/din1451alt_g.ttf");
|
||||
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ public:
|
|||
TextEventManager* self_;
|
||||
|
||||
std::unordered_map<types::TextEventKey,
|
||||
std::list<std::shared_ptr<awips::TextProductMessage>>,
|
||||
std::vector<std::shared_ptr<awips::TextProductMessage>>,
|
||||
types::TextEventHash<types::TextEventKey>>
|
||||
textEventMap_;
|
||||
std::shared_mutex textEventMutex_;
|
||||
|
|
@ -131,7 +131,7 @@ void TextEventManager::Impl::HandleMessage(
|
|||
if (it == textEventMap_.cend())
|
||||
{
|
||||
// If there was no matching event, add the message to a new event
|
||||
textEventMap_.emplace(key, std::list {message});
|
||||
textEventMap_.emplace(key, std::vector {message});
|
||||
messageIndex = 0;
|
||||
updated = true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ static QString GetSuffix(awips::Phenomenon phenomenon, bool alertActive);
|
|||
static const QVariantMap kEmptyFeatureCollection_ {
|
||||
{"type", "geojson"},
|
||||
{"data", QVariant::fromValue(std::list<QMapLibreGL::Feature> {})}};
|
||||
static const std::list<awips::Phenomenon> kAlertPhenomena_ {
|
||||
static const std::vector<awips::Phenomenon> kAlertPhenomena_ {
|
||||
awips::Phenomenon::Marine,
|
||||
awips::Phenomenon::FlashFlood,
|
||||
awips::Phenomenon::SevereThunderstorm,
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#include <scwx/qt/model/alert_model.hpp>
|
||||
#include <scwx/qt/config/county_database.hpp>
|
||||
#include <scwx/qt/manager/text_event_manager.hpp>
|
||||
#include <scwx/qt/types/qt_types.hpp>
|
||||
#include <scwx/common/geographic.hpp>
|
||||
|
|
@ -174,7 +175,7 @@ AlertModel::headerData(int section, Qt::Orientation orientation, int role) const
|
|||
case kColumnState:
|
||||
return tr("State");
|
||||
case kColumnCounties:
|
||||
return tr("Counties");
|
||||
return tr("Counties / Areas");
|
||||
case kColumnStartTime:
|
||||
return tr("Start Time");
|
||||
case kColumnEndTime:
|
||||
|
|
@ -287,7 +288,17 @@ std::string AlertModelImpl::GetCounties(const types::TextEventKey& key)
|
|||
auto& lastMessage = messageList.back();
|
||||
size_t segmentCount = lastMessage->segment_count();
|
||||
auto lastSegment = lastMessage->segment(segmentCount - 1);
|
||||
return util::ToString(lastSegment->header_->ugc_.fips_ids());
|
||||
auto fipsIds = lastSegment->header_->ugc_.fips_ids();
|
||||
|
||||
std::vector<std::string> counties;
|
||||
counties.reserve(fipsIds.size());
|
||||
for (auto& id : fipsIds)
|
||||
{
|
||||
counties.push_back(config::CountyDatabase::GetCountyName(id));
|
||||
}
|
||||
std::sort(counties.begin(), counties.end());
|
||||
|
||||
return util::ToString(counties);
|
||||
}
|
||||
|
||||
std::string AlertModelImpl::GetState(const types::TextEventKey& key)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue