Added interactions for clusters/filters
This commit is contained in:
@@ -79,7 +79,14 @@ Artist::refresh()
|
||||
auto clusters = artist->getClusters(3);
|
||||
|
||||
for (auto cluster : clusters)
|
||||
clusterContainers->addWidget(LmsApp->createCluster(cluster));
|
||||
{
|
||||
auto clusterId = cluster.id();
|
||||
auto entry = clusterContainers->addWidget(LmsApp->createCluster(cluster));
|
||||
entry->clicked().connect([=]
|
||||
{
|
||||
_filters->add(clusterId);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
t->bindString("name", Wt::WString::fromUTF8(artist->getName()), Wt::TextFormat::Plain);
|
||||
|
||||
+25
-11
@@ -109,22 +109,36 @@ Filters::showDialog()
|
||||
if (!cluster)
|
||||
return;
|
||||
|
||||
auto clusterId = cluster.id();
|
||||
_filterIds.insert(clusterId);
|
||||
_sigUpdated.emit();
|
||||
|
||||
auto filter = _filters->addWidget(LmsApp->createCluster(cluster, true));
|
||||
filter->clicked().connect(std::bind([=]
|
||||
{
|
||||
_filters->removeWidget(filter);
|
||||
_filterIds.erase(clusterId);
|
||||
_sigUpdated.emit();
|
||||
}));
|
||||
add(cluster.id());
|
||||
}));
|
||||
|
||||
dialog->show();
|
||||
}
|
||||
|
||||
void
|
||||
Filters::add(Database::Cluster::id_type clusterId)
|
||||
{
|
||||
Wt::Dbo::Transaction transaction(LmsApp->getDboSession());
|
||||
|
||||
auto cluster = Database::Cluster::getById(LmsApp->getDboSession(), clusterId);
|
||||
if (!cluster)
|
||||
return;
|
||||
|
||||
auto res = _filterIds.insert(clusterId);
|
||||
if (!res.second)
|
||||
return;
|
||||
|
||||
auto filter = _filters->addWidget(LmsApp->createCluster(cluster, true));
|
||||
filter->clicked().connect(std::bind([=]
|
||||
{
|
||||
_filters->removeWidget(filter);
|
||||
_filterIds.erase(clusterId);
|
||||
_sigUpdated.emit();
|
||||
}));
|
||||
|
||||
_sigUpdated.emit();
|
||||
}
|
||||
|
||||
Filters::Filters()
|
||||
: Wt::WTemplate(Wt::WString::tr("Lms.Explore.template.filters"))
|
||||
{
|
||||
|
||||
@@ -34,6 +34,8 @@ class Filters : public Wt::WTemplate
|
||||
public:
|
||||
Filters();
|
||||
|
||||
void add(Database::Cluster::id_type clusterId);
|
||||
|
||||
std::set<Database::Cluster::id_type> getClusterIds() const { return _filterIds; }
|
||||
|
||||
Wt::Signal<>& updated() { return _sigUpdated; }
|
||||
|
||||
@@ -112,7 +112,14 @@ Release::refresh()
|
||||
auto clusters = release->getClusters(3);
|
||||
|
||||
for (auto cluster : clusters)
|
||||
clusterContainers->addWidget(LmsApp->createCluster(cluster));
|
||||
{
|
||||
auto clusterId = cluster.id();
|
||||
auto entry = clusterContainers->addWidget(LmsApp->createCluster(cluster));
|
||||
entry->clicked().connect([=]
|
||||
{
|
||||
_filters->add(clusterId);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user