diff --git a/scwx-qt/source/scwx/qt/view/radar_product_view_factory.cpp b/scwx-qt/source/scwx/qt/view/radar_product_view_factory.cpp index d21536fd..59496899 100644 --- a/scwx-qt/source/scwx/qt/view/radar_product_view_factory.cpp +++ b/scwx-qt/source/scwx/qt/view/radar_product_view_factory.cpp @@ -54,6 +54,11 @@ std::shared_ptr RadarProductViewFactory::Create( } else if (productGroup == common::RadarProductGroup::Level3) { + if (productCode == 0) + { + productCode = common::GetLevel3ProductCodeByAwipsId(productName); + } + if (level3RadialProducts_.contains(productCode)) { view = Level3RadialView::Create(productName, radarProductManager); diff --git a/wxdata/include/scwx/common/products.hpp b/wxdata/include/scwx/common/products.hpp index 7dfb39b8..60aabdd3 100644 --- a/wxdata/include/scwx/common/products.hpp +++ b/wxdata/include/scwx/common/products.hpp @@ -72,6 +72,8 @@ const std::string& GetLevel3Palette(int16_t productCode); std::string GetLevel3ProductByAwipsId(const std::string& awipsId); const std::string& GetLevel3ProductDescription(const std::string& productName); +int16_t GetLevel3ProductCodeByAwipsId(const std::string& awipsId); +int16_t GetLevel3ProductCodeByProduct(const std::string& productName); const std::vector& GetLevel3ProductsByCategory(Level3ProductCategory category); const std::vector& diff --git a/wxdata/source/scwx/common/products.cpp b/wxdata/source/scwx/common/products.cpp index 5d4251b1..874f2bbd 100644 --- a/wxdata/source/scwx/common/products.cpp +++ b/wxdata/source/scwx/common/products.cpp @@ -329,6 +329,30 @@ const std::string& GetLevel3ProductDescription(const std::string& productName) } } +int16_t GetLevel3ProductCodeByAwipsId(const std::string& awipsId) +{ + const std::string& productName {GetLevel3ProductByAwipsId(awipsId)}; + const int16_t productCode {GetLevel3ProductCodeByProduct(productName)}; + + return productCode; +} + +int16_t GetLevel3ProductCodeByProduct(const std::string& productName) +{ + auto it = std::find_if(level3ProductCodeMap_.cbegin(), + level3ProductCodeMap_.cend(), + [&](auto&& p) { return p.second == productName; }); + + if (it != level3ProductCodeMap_.cend()) + { + return static_cast(it->first); + } + else + { + return 0; + } +} + const std::vector& GetLevel3ProductsByCategory(Level3ProductCategory category) {