Added a show more functionnality
This commit is contained in:
@@ -13,6 +13,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
${artists class="list-group"}
|
${artists class="list-group"}
|
||||||
|
${show-more}
|
||||||
</message>
|
</message>
|
||||||
|
|
||||||
<message id="template-artists-entry">
|
<message id="template-artists-entry">
|
||||||
|
|||||||
@@ -15,4 +15,6 @@
|
|||||||
|
|
||||||
<message id="msg-filter-type">Type</message>
|
<message id="msg-filter-type">Type</message>
|
||||||
<message id="msg-filter-value">Value</message>
|
<message id="msg-filter-value">Value</message>
|
||||||
|
|
||||||
|
<message id="msg-show-more">Show more</message>
|
||||||
</messages>
|
</messages>
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
${releases class="list-group"}
|
${releases class="list-group"}
|
||||||
|
${show-more}
|
||||||
</message>
|
</message>
|
||||||
|
|
||||||
<message id="btn-releases-play-btn">
|
<message id="btn-releases-play-btn">
|
||||||
|
|||||||
@@ -17,6 +17,10 @@
|
|||||||
${contents}
|
${contents}
|
||||||
</message>
|
</message>
|
||||||
|
|
||||||
|
<message id="template-show-more">
|
||||||
|
${tr:msg-show-more}
|
||||||
|
</message>
|
||||||
|
|
||||||
<message id="template-filters">
|
<message id="template-filters">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
${add-filter}${filters}
|
${add-filter}${filters}
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
${tracks class="list-group"}
|
${tracks class="list-group"}
|
||||||
|
${show-more}
|
||||||
</message>
|
</message>
|
||||||
|
|
||||||
<message id="btn-tracks-play-btn">
|
<message id="btn-tracks-play-btn">
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ Artist::getByFilter(Wt::Dbo::Session& session,
|
|||||||
const std::vector<std::string> keywords,
|
const std::vector<std::string> keywords,
|
||||||
int offset, int size, bool& moreResults)
|
int offset, int size, bool& moreResults)
|
||||||
{
|
{
|
||||||
Wt::Dbo::collection<Artist::pointer> collection = getQuery(session, clusters, keywords).limit(size).offset(offset);
|
Wt::Dbo::collection<Artist::pointer> collection = getQuery(session, clusters, keywords).limit(size + 1).offset(offset);
|
||||||
|
|
||||||
auto res = std::vector<pointer>(collection.begin(), collection.end());
|
auto res = std::vector<pointer>(collection.begin(), collection.end());
|
||||||
|
|
||||||
|
|||||||
@@ -118,7 +118,7 @@ Release::getByFilter(Wt::Dbo::Session& session,
|
|||||||
const std::vector<std::string> keywords,
|
const std::vector<std::string> keywords,
|
||||||
int offset, int size, bool& moreResults)
|
int offset, int size, bool& moreResults)
|
||||||
{
|
{
|
||||||
Wt::Dbo::collection<pointer> collection = getQuery(session, clusterIds, keywords).limit(size).offset(offset);
|
Wt::Dbo::collection<pointer> collection = getQuery(session, clusterIds, keywords).limit(size + 1).offset(offset);
|
||||||
|
|
||||||
auto res = std::vector<pointer>(collection.begin(), collection.end());
|
auto res = std::vector<pointer>(collection.begin(), collection.end());
|
||||||
|
|
||||||
|
|||||||
@@ -169,7 +169,7 @@ Track::getByFilter(Wt::Dbo::Session& session,
|
|||||||
const std::vector<std::string> keywords,
|
const std::vector<std::string> keywords,
|
||||||
int offset, int size, bool& moreResults)
|
int offset, int size, bool& moreResults)
|
||||||
{
|
{
|
||||||
Wt::Dbo::collection<pointer> collection = getQuery(session, clusterIds, keywords).limit(size).offset(offset);
|
Wt::Dbo::collection<pointer> collection = getQuery(session, clusterIds, keywords).limit(size + 1).offset(offset);
|
||||||
|
|
||||||
auto res = std::vector<pointer>(collection.begin(), collection.end());
|
auto res = std::vector<pointer>(collection.begin(), collection.end());
|
||||||
|
|
||||||
|
|||||||
+22
-7
@@ -39,16 +39,25 @@ Artists::Artists(Filters* filters, Wt::WContainerWidget* parent)
|
|||||||
: Wt::WContainerWidget(parent),
|
: Wt::WContainerWidget(parent),
|
||||||
_filters(filters)
|
_filters(filters)
|
||||||
{
|
{
|
||||||
auto artists = new Wt::WTemplate(Wt::WString::tr("template-artists"), this);
|
auto container = new Wt::WTemplate(Wt::WString::tr("template-artists"), this);
|
||||||
artists->addFunction("tr", &Wt::WTemplate::Functions::tr);
|
container->addFunction("tr", &Wt::WTemplate::Functions::tr);
|
||||||
|
|
||||||
_search = new Wt::WLineEdit();
|
_search = new Wt::WLineEdit();
|
||||||
artists->bindWidget("search", _search);
|
container->bindWidget("search", _search);
|
||||||
_search->setPlaceholderText(Wt::WString::tr("msg-search-placeholder"));
|
_search->setPlaceholderText(Wt::WString::tr("msg-search-placeholder"));
|
||||||
_search->textInput().connect(this, &Artists::refresh);
|
_search->textInput().connect(this, &Artists::refresh);
|
||||||
|
|
||||||
_artistsContainer = new Wt::WContainerWidget();
|
_artistsContainer = new Wt::WContainerWidget();
|
||||||
artists->bindWidget("artists", _artistsContainer);
|
container->bindWidget("artists", _artistsContainer);
|
||||||
|
|
||||||
|
_showMore = new Wt::WTemplate(Wt::WString::tr("template-show-more"));
|
||||||
|
_showMore->addFunction("tr", &Wt::WTemplate::Functions::tr);
|
||||||
|
container->bindWidget("show-more", _showMore);
|
||||||
|
|
||||||
|
_showMore->clicked().connect(std::bind([=]
|
||||||
|
{
|
||||||
|
add_some();
|
||||||
|
}));
|
||||||
|
|
||||||
refresh();
|
refresh();
|
||||||
|
|
||||||
@@ -58,9 +67,14 @@ Artists::Artists(Filters* filters, Wt::WContainerWidget* parent)
|
|||||||
void
|
void
|
||||||
Artists::refresh()
|
Artists::refresh()
|
||||||
{
|
{
|
||||||
auto searchKeywords = splitString(_search->text().toUTF8(), " ");
|
|
||||||
|
|
||||||
_artistsContainer->clear();
|
_artistsContainer->clear();
|
||||||
|
add_some();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Artists::add_some()
|
||||||
|
{
|
||||||
|
auto searchKeywords = splitString(_search->text().toUTF8(), " ");
|
||||||
|
|
||||||
auto clusterIds = _filters->getClusterIds();
|
auto clusterIds = _filters->getClusterIds();
|
||||||
|
|
||||||
@@ -70,7 +84,7 @@ Artists::refresh()
|
|||||||
auto artists = Artist::getByFilter(DboSession(),
|
auto artists = Artist::getByFilter(DboSession(),
|
||||||
clusterIds,
|
clusterIds,
|
||||||
searchKeywords,
|
searchKeywords,
|
||||||
0, 40, moreResults);
|
_artistsContainer->count(), 20, moreResults);
|
||||||
|
|
||||||
for (auto artist : artists)
|
for (auto artist : artists)
|
||||||
{
|
{
|
||||||
@@ -86,6 +100,7 @@ Artists::refresh()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_showMore->setHidden(!moreResults);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace UserInterface
|
} // namespace UserInterface
|
||||||
|
|||||||
@@ -37,8 +37,10 @@ class Artists : public Wt::WContainerWidget
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
void refresh();
|
void refresh();
|
||||||
|
void add_some();
|
||||||
|
|
||||||
Filters* _filters;
|
Filters* _filters;
|
||||||
|
Wt::WTemplate* _showMore;
|
||||||
Wt::WLineEdit* _search;
|
Wt::WLineEdit* _search;
|
||||||
Wt::WContainerWidget* _artistsContainer;
|
Wt::WContainerWidget* _artistsContainer;
|
||||||
};
|
};
|
||||||
|
|||||||
+25
-8
@@ -40,36 +40,49 @@ Releases::Releases(Filters* filters, Wt::WContainerWidget* parent)
|
|||||||
: Wt::WContainerWidget(parent),
|
: Wt::WContainerWidget(parent),
|
||||||
_filters(filters)
|
_filters(filters)
|
||||||
{
|
{
|
||||||
auto releases = new Wt::WTemplate(Wt::WString::tr("template-releases"), this);
|
auto container = new Wt::WTemplate(Wt::WString::tr("template-releases"), this);
|
||||||
releases->addFunction("tr", &Wt::WTemplate::Functions::tr);
|
container->addFunction("tr", &Wt::WTemplate::Functions::tr);
|
||||||
|
|
||||||
_search = new Wt::WLineEdit();
|
_search = new Wt::WLineEdit();
|
||||||
releases->bindWidget("search", _search);
|
container->bindWidget("search", _search);
|
||||||
_search->setPlaceholderText(Wt::WString::tr("msg-search-placeholder"));
|
_search->setPlaceholderText(Wt::WString::tr("msg-search-placeholder"));
|
||||||
_search->textInput().connect(this, &Releases::refresh);
|
_search->textInput().connect(this, &Releases::refresh);
|
||||||
|
|
||||||
_releasesContainer = new Wt::WContainerWidget();
|
_releasesContainer = new Wt::WContainerWidget();
|
||||||
releases->bindWidget("releases", _releasesContainer);
|
container->bindWidget("releases", _releasesContainer);
|
||||||
|
|
||||||
|
_showMore = new Wt::WTemplate(Wt::WString::tr("template-show-more"));
|
||||||
|
_showMore->addFunction("tr", &Wt::WTemplate::Functions::tr);
|
||||||
|
container->bindWidget("show-more", _showMore);
|
||||||
|
|
||||||
|
_showMore->clicked().connect(std::bind([=]
|
||||||
|
{
|
||||||
|
add_some();
|
||||||
|
}));
|
||||||
|
|
||||||
refresh();
|
refresh();
|
||||||
|
|
||||||
filters->updated().connect(this, &Releases::refresh);
|
filters->updated().connect(this, &Releases::refresh);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
Releases::refresh()
|
Releases::refresh()
|
||||||
{
|
{
|
||||||
auto searchKeywords = splitString(_search->text().toUTF8(), " ");
|
|
||||||
|
|
||||||
_releasesContainer->clear();
|
_releasesContainer->clear();
|
||||||
|
add_some();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Releases::add_some()
|
||||||
|
{
|
||||||
|
auto searchKeywords = splitString(_search->text().toUTF8(), " ");
|
||||||
|
|
||||||
auto clusterIds = _filters->getClusterIds();
|
auto clusterIds = _filters->getClusterIds();
|
||||||
|
|
||||||
Wt::Dbo::Transaction transaction(DboSession());
|
Wt::Dbo::Transaction transaction(DboSession());
|
||||||
|
|
||||||
bool moreResults;
|
bool moreResults;
|
||||||
auto releases = Release::getByFilter(DboSession(), clusterIds, searchKeywords, 0, 40, moreResults);
|
auto releases = Release::getByFilter(DboSession(), clusterIds, searchKeywords, _releasesContainer->count(), 20, moreResults);
|
||||||
|
|
||||||
for (auto release : releases)
|
for (auto release : releases)
|
||||||
{
|
{
|
||||||
@@ -120,6 +133,10 @@ Releases::refresh()
|
|||||||
releaseAdd.emit(releaseId);
|
releaseAdd.emit(releaseId);
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::cerr << "if-show-more = " << moreResults << "\n";
|
||||||
|
|
||||||
|
_showMore->setHidden(!moreResults);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace UserInterface
|
} // namespace UserInterface
|
||||||
|
|||||||
@@ -21,6 +21,7 @@
|
|||||||
|
|
||||||
#include <Wt/WContainerWidget>
|
#include <Wt/WContainerWidget>
|
||||||
#include <Wt/WLineEdit>
|
#include <Wt/WLineEdit>
|
||||||
|
#include <Wt/WText>
|
||||||
|
|
||||||
namespace UserInterface {
|
namespace UserInterface {
|
||||||
|
|
||||||
@@ -36,8 +37,10 @@ class Releases : public Wt::WContainerWidget
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
void refresh();
|
void refresh();
|
||||||
|
void add_some();
|
||||||
|
|
||||||
Filters* _filters;
|
Filters* _filters;
|
||||||
|
Wt::WTemplate* _showMore;
|
||||||
Wt::WLineEdit* _search;
|
Wt::WLineEdit* _search;
|
||||||
Wt::WContainerWidget* _releasesContainer;
|
Wt::WContainerWidget* _releasesContainer;
|
||||||
};
|
};
|
||||||
|
|||||||
+22
-8
@@ -20,7 +20,6 @@
|
|||||||
#include <Wt/WAnchor>
|
#include <Wt/WAnchor>
|
||||||
#include <Wt/WImage>
|
#include <Wt/WImage>
|
||||||
#include <Wt/WLineEdit>
|
#include <Wt/WLineEdit>
|
||||||
#include <Wt/WTemplate>
|
|
||||||
#include <Wt/WText>
|
#include <Wt/WText>
|
||||||
|
|
||||||
#include "database/Types.hpp"
|
#include "database/Types.hpp"
|
||||||
@@ -40,16 +39,25 @@ Tracks::Tracks(Filters* filters, Wt::WContainerWidget* parent)
|
|||||||
: Wt::WContainerWidget(parent),
|
: Wt::WContainerWidget(parent),
|
||||||
_filters(filters)
|
_filters(filters)
|
||||||
{
|
{
|
||||||
auto tracks = new Wt::WTemplate(Wt::WString::tr("template-tracks"), this);
|
auto container = new Wt::WTemplate(Wt::WString::tr("template-tracks"), this);
|
||||||
tracks->addFunction("tr", &Wt::WTemplate::Functions::tr);
|
container->addFunction("tr", &Wt::WTemplate::Functions::tr);
|
||||||
|
|
||||||
_search = new Wt::WLineEdit();
|
_search = new Wt::WLineEdit();
|
||||||
tracks->bindWidget("search", _search);
|
container->bindWidget("search", _search);
|
||||||
_search->setPlaceholderText(Wt::WString::tr("msg-search-placeholder"));
|
_search->setPlaceholderText(Wt::WString::tr("msg-search-placeholder"));
|
||||||
_search->textInput().connect(this, &Tracks::refresh);
|
_search->textInput().connect(this, &Tracks::refresh);
|
||||||
|
|
||||||
_tracksContainer = new Wt::WContainerWidget();
|
_tracksContainer = new Wt::WContainerWidget();
|
||||||
tracks->bindWidget("tracks", _tracksContainer);
|
container->bindWidget("tracks", _tracksContainer);
|
||||||
|
|
||||||
|
_showMore = new Wt::WTemplate(Wt::WString::tr("template-show-more"));
|
||||||
|
_showMore->addFunction("tr", &Wt::WTemplate::Functions::tr);
|
||||||
|
container->bindWidget("show-more", _showMore);
|
||||||
|
|
||||||
|
_showMore->clicked().connect(std::bind([=]
|
||||||
|
{
|
||||||
|
add_some();
|
||||||
|
}));
|
||||||
|
|
||||||
refresh();
|
refresh();
|
||||||
|
|
||||||
@@ -60,16 +68,21 @@ Tracks::Tracks(Filters* filters, Wt::WContainerWidget* parent)
|
|||||||
void
|
void
|
||||||
Tracks::refresh()
|
Tracks::refresh()
|
||||||
{
|
{
|
||||||
auto searchKeywords = splitString(_search->text().toUTF8(), " ");
|
|
||||||
|
|
||||||
_tracksContainer->clear();
|
_tracksContainer->clear();
|
||||||
|
add_some();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Tracks::add_some()
|
||||||
|
{
|
||||||
|
auto searchKeywords = splitString(_search->text().toUTF8(), " ");
|
||||||
|
|
||||||
auto clusterIds = _filters->getClusterIds();
|
auto clusterIds = _filters->getClusterIds();
|
||||||
|
|
||||||
Wt::Dbo::Transaction transaction(DboSession());
|
Wt::Dbo::Transaction transaction(DboSession());
|
||||||
|
|
||||||
bool moreResults;
|
bool moreResults;
|
||||||
auto tracks = Track::getByFilter(DboSession(), clusterIds, searchKeywords, 0, 40, moreResults);
|
auto tracks = Track::getByFilter(DboSession(), clusterIds, searchKeywords, _tracksContainer->count(), 20, moreResults);
|
||||||
|
|
||||||
for (auto track : tracks)
|
for (auto track : tracks)
|
||||||
{
|
{
|
||||||
@@ -120,6 +133,7 @@ Tracks::refresh()
|
|||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_showMore->setHidden(!moreResults);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace UserInterface
|
} // namespace UserInterface
|
||||||
|
|||||||
@@ -21,6 +21,7 @@
|
|||||||
|
|
||||||
#include <Wt/WContainerWidget>
|
#include <Wt/WContainerWidget>
|
||||||
#include <Wt/WLineEdit>
|
#include <Wt/WLineEdit>
|
||||||
|
#include <Wt/WTemplate>
|
||||||
|
|
||||||
namespace UserInterface {
|
namespace UserInterface {
|
||||||
|
|
||||||
@@ -35,8 +36,10 @@ class Tracks : public Wt::WContainerWidget
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
void refresh();
|
void refresh();
|
||||||
|
void add_some();
|
||||||
|
|
||||||
Wt::WContainerWidget* _tracksContainer;
|
Wt::WContainerWidget* _tracksContainer;
|
||||||
|
Wt::WTemplate* _showMore;
|
||||||
Wt::WLineEdit* _search;
|
Wt::WLineEdit* _search;
|
||||||
Filters* _filters;
|
Filters* _filters;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user