From 7d7442c3f8ec06837c7c5afc3773cde680f1dd00 Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Tue, 19 Sep 2023 13:13:57 +0200 Subject: [PATCH] Sort AICD templates based on ID --- .../RicImportValveTemplatesFeature.cpp | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/ApplicationLibCode/Commands/CompletionCommands/RicImportValveTemplatesFeature.cpp b/ApplicationLibCode/Commands/CompletionCommands/RicImportValveTemplatesFeature.cpp index 8aa54abd90..e0be6fe9c5 100644 --- a/ApplicationLibCode/Commands/CompletionCommands/RicImportValveTemplatesFeature.cpp +++ b/ApplicationLibCode/Commands/CompletionCommands/RicImportValveTemplatesFeature.cpp @@ -75,7 +75,28 @@ void RicImportValveTemplatesFeature::onActionTriggered( bool isChecked ) } // There can be multiple items of the same template, make sure we have unique templates - std::sort( aicdTemplates.begin(), aicdTemplates.end() ); + std::sort( aicdTemplates.begin(), + aicdTemplates.end(), + []( RiaOpmParserTools::AicdTemplateValues& templateA, RiaOpmParserTools::AicdTemplateValues& templateB ) + { + int idA = 0; + int idB = 0; + + auto itA = templateA.find( RiaOpmParserTools::aicdTemplateId() ); + if ( itA != templateA.end() ) + { + idA = itA->second; + } + + auto itB = templateB.find( RiaOpmParserTools::aicdTemplateId() ); + if ( itB != templateB.end() ) + { + idB = itB->second; + } + + return idA < idB; + } ); + auto it = std::unique( aicdTemplates.begin(), aicdTemplates.end() ); aicdTemplates.resize( std::distance( aicdTemplates.begin(), it ) );