Added interactions for clusters/filters
This commit is contained in:
@@ -232,6 +232,12 @@ Cluster::getAll(Wt::Dbo::Session& session)
|
|||||||
return std::vector<Cluster::pointer>(res.begin(), res.end());
|
return std::vector<Cluster::pointer>(res.begin(), res.end());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Cluster::pointer
|
||||||
|
Cluster::getById(Wt::Dbo::Session& session, id_type id)
|
||||||
|
{
|
||||||
|
return session.find<Cluster>().where("id = ?").bind(id);
|
||||||
|
}
|
||||||
|
|
||||||
ClusterType::ClusterType(std::string name)
|
ClusterType::ClusterType(std::string name)
|
||||||
: _name(name)
|
: _name(name)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ class Cluster : public Wt::Dbo::Dbo<Cluster>
|
|||||||
|
|
||||||
// Find utility
|
// Find utility
|
||||||
static std::vector<pointer> getAll(Wt::Dbo::Session& session);
|
static std::vector<pointer> getAll(Wt::Dbo::Session& session);
|
||||||
|
static pointer getById(Wt::Dbo::Session& session, id_type id);
|
||||||
|
|
||||||
// Create utility
|
// Create utility
|
||||||
static pointer create(Wt::Dbo::Session& session, Wt::Dbo::ptr<ClusterType> type, std::string name);
|
static pointer create(Wt::Dbo::Session& session, Wt::Dbo::ptr<ClusterType> type, std::string name);
|
||||||
|
|||||||
@@ -79,7 +79,14 @@ Artist::refresh()
|
|||||||
auto clusters = artist->getClusters(3);
|
auto clusters = artist->getClusters(3);
|
||||||
|
|
||||||
for (auto cluster : clusters)
|
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);
|
t->bindString("name", Wt::WString::fromUTF8(artist->getName()), Wt::TextFormat::Plain);
|
||||||
|
|||||||
+25
-11
@@ -109,22 +109,36 @@ Filters::showDialog()
|
|||||||
if (!cluster)
|
if (!cluster)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
auto clusterId = cluster.id();
|
add(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();
|
|
||||||
}));
|
|
||||||
}));
|
}));
|
||||||
|
|
||||||
dialog->show();
|
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()
|
Filters::Filters()
|
||||||
: Wt::WTemplate(Wt::WString::tr("Lms.Explore.template.filters"))
|
: Wt::WTemplate(Wt::WString::tr("Lms.Explore.template.filters"))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -34,6 +34,8 @@ class Filters : public Wt::WTemplate
|
|||||||
public:
|
public:
|
||||||
Filters();
|
Filters();
|
||||||
|
|
||||||
|
void add(Database::Cluster::id_type clusterId);
|
||||||
|
|
||||||
std::set<Database::Cluster::id_type> getClusterIds() const { return _filterIds; }
|
std::set<Database::Cluster::id_type> getClusterIds() const { return _filterIds; }
|
||||||
|
|
||||||
Wt::Signal<>& updated() { return _sigUpdated; }
|
Wt::Signal<>& updated() { return _sigUpdated; }
|
||||||
|
|||||||
@@ -112,7 +112,14 @@ Release::refresh()
|
|||||||
auto clusters = release->getClusters(3);
|
auto clusters = release->getClusters(3);
|
||||||
|
|
||||||
for (auto cluster : clusters)
|
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