From 49e3e00b871e4bc1e48c470ac5cab1add40b180f Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Sun, 9 Jan 2022 16:42:49 +0100 Subject: [PATCH] Fix models.yml for empty categories or unsorted models --- companion/src/firmwares/edgetx/edgetxinterface.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/companion/src/firmwares/edgetx/edgetxinterface.cpp b/companion/src/firmwares/edgetx/edgetxinterface.cpp index eaca13e8c..ad97a2b79 100644 --- a/companion/src/firmwares/edgetx/edgetxinterface.cpp +++ b/companion/src/firmwares/edgetx/edgetxinterface.cpp @@ -111,13 +111,25 @@ bool writeModelsListToYaml(const std::vector& categories, { YAML::Node node; std::vector cats = categories; + std::vector files = { modelFiles.begin(), modelFiles.end() }; + + std::stable_sort(files.begin(), files.end(), + [](const EtxModelMetadata &a, const EtxModelMetadata &b) { + return a.category < b.category; + }); + + int catIdx = 0; + for (const auto& cat : cats) { + node[catIdx++][cat.name] = YAML::Node(); + } + for (const auto& modelFile: modelFiles) { YAML::Node cat_attrs; cat_attrs["filename"] = modelFile.filename; cat_attrs["name"] = modelFile.name; - auto catIdx = modelFile.category; + catIdx = modelFile.category; if (catIdx >= (int)cats.size()) { catIdx = 0; if (cats.size() == 0) {