Skip to content
Snippets Groups Projects
Commit 0ac46700 authored by Fabian Tërnava's avatar Fabian Tërnava
Browse files

Merge branch 'feature/skillGUISearch' into 'master'

Implement wildcard for skill search

See merge request !428
parents 3b0b9174 f967f4a0
No related branches found
No related tags found
1 merge request!428Implement wildcard for skill search
Pipeline #17684 passed
...@@ -29,7 +29,7 @@ namespace armarx::skills::gui ...@@ -29,7 +29,7 @@ namespace armarx::skills::gui
currentStatus == skills::SkillStatus::Failed || currentStatus == skills::SkillStatus::Failed ||
currentStatus == skills::SkillStatus::Succeeded); currentStatus == skills::SkillStatus::Succeeded);
QAction* rerunSkillAction = new QAction("Re-run with similar params", this); QAction* rerunSkillAction = new QAction("Re-execute with similar parameters", this);
menu->addAction(stopSkillAction); menu->addAction(stopSkillAction);
menu->addAction(rerunSkillAction); menu->addAction(rerunSkillAction);
connect(stopSkillAction, connect(stopSkillAction,
......
...@@ -54,6 +54,26 @@ namespace armarx::skills::gui ...@@ -54,6 +54,26 @@ namespace armarx::skills::gui
} }
} }
// check if search strings occur in the skill name in order
bool
matches(std::string skillName, std::vector<std::string>& searches)
{
size_t index = 0;
for (std::string& substring : searches)
{
size_t occurance = skillName.find(substring, index);
if (occurance == std::string::npos)
{
return false;
}
// we found an occurance
index = occurance;
}
return true;
}
void void
SkillManagerWrapper::filterSkillUpdate( SkillManagerWrapper::filterSkillUpdate(
std::map<skills::manager::dto::SkillID, skills::manager::dto::SkillDescription>& update) std::map<skills::manager::dto::SkillID, skills::manager::dto::SkillDescription>& update)
...@@ -64,13 +84,21 @@ namespace armarx::skills::gui ...@@ -64,13 +84,21 @@ namespace armarx::skills::gui
return; return;
} }
// TODO: whitespace to wildcard std::vector<std::string> substrings;
{
std::vector<std::string> rawSubstrings = simox::alg::split(currentSkillSearch);
for (auto& string : rawSubstrings)
{
substrings.push_back(simox::alg::to_lower(string));
}
}
std::string key = simox::alg::to_lower(this->currentSkillSearch);
for (auto it = update.begin(); it != update.end();) for (auto it = update.begin(); it != update.end();)
{ {
if (simox::alg::to_lower(skills::SkillID::FromIce(it->first).skillName).find(key)) if (not matches(simox::alg::to_lower(skills::SkillID::FromIce(it->first).skillName),
substrings))
{ {
it = update.erase(it); it = update.erase(it);
} }
......
...@@ -27,6 +27,7 @@ namespace armarx::skills::gui ...@@ -27,6 +27,7 @@ namespace armarx::skills::gui
void void
SkillTreeWidget::updateSkills() SkillTreeWidget::updateSkills()
{ {
setSortingEnabled(false);
const auto skills = memory->fetchSkills(); const auto skills = memory->fetchSkills();
// update tree view. Remove non-existing elements // update tree view. Remove non-existing elements
...@@ -76,6 +77,7 @@ namespace armarx::skills::gui ...@@ -76,6 +77,7 @@ namespace armarx::skills::gui
// update tree view. Add new elements // update tree view. Add new elements
for (const auto& [providerId, providedSkills] : skills) for (const auto& [providerId, providedSkills] : skills)
{ {
bool newProvider = false;
QTreeWidgetItem* providerItem = nullptr; QTreeWidgetItem* providerItem = nullptr;
for (int i = 0; i < this->topLevelItemCount(); ++i) for (int i = 0; i < this->topLevelItemCount(); ++i)
{ {
...@@ -94,6 +96,8 @@ namespace armarx::skills::gui ...@@ -94,6 +96,8 @@ namespace armarx::skills::gui
{ {
providerItem = new QTreeWidgetItem(this); providerItem = new QTreeWidgetItem(this);
providerItem->setText(0, QString::fromStdString(providerId.providerName)); providerItem->setText(0, QString::fromStdString(providerId.providerName));
// expand new items
newProvider = true;
} }
for (const auto& [skillId, skill] : providedSkills) for (const auto& [skillId, skill] : providedSkills)
...@@ -118,7 +122,16 @@ namespace armarx::skills::gui ...@@ -118,7 +122,16 @@ namespace armarx::skills::gui
skillItem->setText(0, QString::fromStdString(skillId.skillName)); skillItem->setText(0, QString::fromStdString(skillId.skillName));
} }
} }
if (newProvider && PROVIDER_EXPANDED_DEFAULT)
{
providerItem->setExpanded(true);
}
} }
setSortingEnabled(true);
sortByColumn(0, Qt::AscendingOrder);
sortByColumn(1, Qt::AscendingOrder);
} }
void void
......
...@@ -51,6 +51,8 @@ namespace armarx::skills::gui ...@@ -51,6 +51,8 @@ namespace armarx::skills::gui
private: private:
SelectedSkill selectedSkill; SelectedSkill selectedSkill;
static const constexpr bool PROVIDER_EXPANDED_DEFAULT = true;
void setupUi(); void setupUi();
void connectSignals(); void connectSignals();
}; };
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment