mirror of
				https://github.com/ciphervance/supercell-wx.git
				synced 2025-10-31 00:40:06 +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
	
	 Dan Paulat
						Dan Paulat