mirror of
https://github.com/Athou/commafeed.git
synced 2026-03-21 21:37:29 +00:00
allow ordering (fix #30)
This commit is contained in:
@@ -10,6 +10,7 @@ import javax.persistence.NoResultException;
|
|||||||
import javax.persistence.Query;
|
import javax.persistence.Query;
|
||||||
import javax.persistence.TypedQuery;
|
import javax.persistence.TypedQuery;
|
||||||
import javax.persistence.criteria.CriteriaQuery;
|
import javax.persistence.criteria.CriteriaQuery;
|
||||||
|
import javax.persistence.criteria.Path;
|
||||||
import javax.persistence.criteria.Predicate;
|
import javax.persistence.criteria.Predicate;
|
||||||
import javax.persistence.criteria.Root;
|
import javax.persistence.criteria.Root;
|
||||||
|
|
||||||
@@ -23,6 +24,7 @@ import com.commafeed.backend.model.FeedEntry_;
|
|||||||
import com.commafeed.backend.model.FeedSubscription;
|
import com.commafeed.backend.model.FeedSubscription;
|
||||||
import com.commafeed.backend.model.FeedSubscription_;
|
import com.commafeed.backend.model.FeedSubscription_;
|
||||||
import com.commafeed.backend.model.User;
|
import com.commafeed.backend.model.User;
|
||||||
|
import com.commafeed.backend.model.UserSettings.ReadingOrder;
|
||||||
import com.commafeed.frontend.utils.ModelFactory.MF;
|
import com.commafeed.frontend.utils.ModelFactory.MF;
|
||||||
import com.google.api.client.util.Lists;
|
import com.google.api.client.util.Lists;
|
||||||
import com.google.api.client.util.Maps;
|
import com.google.api.client.util.Maps;
|
||||||
@@ -83,25 +85,21 @@ public class FeedEntryStatusService extends GenericDAO<FeedEntryStatus> {
|
|||||||
predicates.add(builder.or(content, title));
|
predicates.add(builder.or(content, title));
|
||||||
|
|
||||||
query.where(predicates.toArray(new Predicate[0]));
|
query.where(predicates.toArray(new Predicate[0]));
|
||||||
query.orderBy(builder.desc(root.get(FeedEntryStatus_.entry).get(
|
|
||||||
FeedEntry_.updated)));
|
orderBy(query, root, ReadingOrder.desc);
|
||||||
|
|
||||||
TypedQuery<FeedEntryStatus> q = em.createQuery(query);
|
TypedQuery<FeedEntryStatus> q = em.createQuery(query);
|
||||||
if (offset > -1) {
|
limit(q, offset, limit);
|
||||||
q.setFirstResult(offset);
|
|
||||||
}
|
|
||||||
if (limit > -1) {
|
|
||||||
q.setMaxResults(limit);
|
|
||||||
}
|
|
||||||
return q.getResultList();
|
return q.getResultList();
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<FeedEntryStatus> getStatuses(User user, boolean unreadOnly) {
|
public List<FeedEntryStatus> getStatuses(User user, boolean unreadOnly,
|
||||||
return getStatuses(user, unreadOnly, -1, -1);
|
ReadingOrder order) {
|
||||||
|
return getStatuses(user, unreadOnly, -1, -1, order);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<FeedEntryStatus> getStatuses(User user, boolean unreadOnly,
|
public List<FeedEntryStatus> getStatuses(User user, boolean unreadOnly,
|
||||||
int offset, int limit) {
|
int offset, int limit, ReadingOrder order) {
|
||||||
CriteriaQuery<FeedEntryStatus> query = builder.createQuery(getType());
|
CriteriaQuery<FeedEntryStatus> query = builder.createQuery(getType());
|
||||||
Root<FeedEntryStatus> root = query.from(getType());
|
Root<FeedEntryStatus> root = query.from(getType());
|
||||||
|
|
||||||
@@ -112,16 +110,10 @@ public class FeedEntryStatusService extends GenericDAO<FeedEntryStatus> {
|
|||||||
predicates.add(builder.isFalse(root.get(FeedEntryStatus_.read)));
|
predicates.add(builder.isFalse(root.get(FeedEntryStatus_.read)));
|
||||||
}
|
}
|
||||||
query.where(predicates.toArray(new Predicate[0]));
|
query.where(predicates.toArray(new Predicate[0]));
|
||||||
query.orderBy(builder.desc(root.get(FeedEntryStatus_.entry).get(
|
orderBy(query, root, order);
|
||||||
FeedEntry_.updated)));
|
|
||||||
|
|
||||||
TypedQuery<FeedEntryStatus> q = em.createQuery(query);
|
TypedQuery<FeedEntryStatus> q = em.createQuery(query);
|
||||||
if (offset > -1) {
|
limit(q, offset, limit);
|
||||||
q.setFirstResult(offset);
|
|
||||||
}
|
|
||||||
if (limit > -1) {
|
|
||||||
q.setMaxResults(limit);
|
|
||||||
}
|
|
||||||
return q.getResultList();
|
return q.getResultList();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -142,12 +134,12 @@ public class FeedEntryStatusService extends GenericDAO<FeedEntryStatus> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public List<FeedEntryStatus> getStatuses(Feed feed, User user,
|
public List<FeedEntryStatus> getStatuses(Feed feed, User user,
|
||||||
boolean unreadOnly) {
|
boolean unreadOnly, ReadingOrder order) {
|
||||||
return getStatuses(feed, user, unreadOnly, -1, -1);
|
return getStatuses(feed, user, unreadOnly, -1, -1, order);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<FeedEntryStatus> getStatuses(Feed feed, User user,
|
public List<FeedEntryStatus> getStatuses(Feed feed, User user,
|
||||||
boolean unreadOnly, int offset, int limit) {
|
boolean unreadOnly, int offset, int limit, ReadingOrder order) {
|
||||||
|
|
||||||
CriteriaQuery<FeedEntryStatus> query = builder.createQuery(getType());
|
CriteriaQuery<FeedEntryStatus> query = builder.createQuery(getType());
|
||||||
Root<FeedEntryStatus> root = query.from(getType());
|
Root<FeedEntryStatus> root = query.from(getType());
|
||||||
@@ -161,26 +153,22 @@ public class FeedEntryStatusService extends GenericDAO<FeedEntryStatus> {
|
|||||||
predicates.add(builder.isFalse(root.get(FeedEntryStatus_.read)));
|
predicates.add(builder.isFalse(root.get(FeedEntryStatus_.read)));
|
||||||
}
|
}
|
||||||
query.where(predicates.toArray(new Predicate[0]));
|
query.where(predicates.toArray(new Predicate[0]));
|
||||||
query.orderBy(builder.desc(root.get(FeedEntryStatus_.entry).get(
|
|
||||||
FeedEntry_.updated)));
|
orderBy(query, root, order);
|
||||||
|
|
||||||
TypedQuery<FeedEntryStatus> q = em.createQuery(query);
|
TypedQuery<FeedEntryStatus> q = em.createQuery(query);
|
||||||
if (offset > -1) {
|
limit(q, offset, limit);
|
||||||
q.setFirstResult(offset);
|
|
||||||
}
|
|
||||||
if (limit > -1) {
|
|
||||||
q.setMaxResults(limit);
|
|
||||||
}
|
|
||||||
return q.getResultList();
|
return q.getResultList();
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<FeedEntryStatus> getStatuses(List<FeedCategory> categories,
|
public List<FeedEntryStatus> getStatuses(List<FeedCategory> categories,
|
||||||
User user, boolean unreadOnly) {
|
User user, boolean unreadOnly, ReadingOrder order) {
|
||||||
return getStatuses(categories, user, unreadOnly, -1, -1);
|
return getStatuses(categories, user, unreadOnly, -1, -1, order);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<FeedEntryStatus> getStatuses(List<FeedCategory> categories,
|
public List<FeedEntryStatus> getStatuses(List<FeedCategory> categories,
|
||||||
User user, boolean unreadOnly, int offset, int limit) {
|
User user, boolean unreadOnly, int offset, int limit,
|
||||||
|
ReadingOrder order) {
|
||||||
|
|
||||||
CriteriaQuery<FeedEntryStatus> query = builder.createQuery(getType());
|
CriteriaQuery<FeedEntryStatus> query = builder.createQuery(getType());
|
||||||
Root<FeedEntryStatus> root = query.from(getType());
|
Root<FeedEntryStatus> root = query.from(getType());
|
||||||
@@ -194,32 +182,51 @@ public class FeedEntryStatusService extends GenericDAO<FeedEntryStatus> {
|
|||||||
predicates.add(builder.isFalse(root.get(FeedEntryStatus_.read)));
|
predicates.add(builder.isFalse(root.get(FeedEntryStatus_.read)));
|
||||||
}
|
}
|
||||||
query.where(predicates.toArray(new Predicate[0]));
|
query.where(predicates.toArray(new Predicate[0]));
|
||||||
query.orderBy(builder.desc(root.get(FeedEntryStatus_.entry).get(
|
|
||||||
FeedEntry_.updated)));
|
orderBy(query, root, order);
|
||||||
|
|
||||||
TypedQuery<FeedEntryStatus> q = em.createQuery(query);
|
TypedQuery<FeedEntryStatus> q = em.createQuery(query);
|
||||||
if (offset > -1) {
|
limit(q, offset, limit);
|
||||||
q.setFirstResult(offset);
|
|
||||||
}
|
|
||||||
if (limit > -1) {
|
|
||||||
q.setMaxResults(limit);
|
|
||||||
}
|
|
||||||
return q.getResultList();
|
return q.getResultList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void limit(TypedQuery<FeedEntryStatus> query, int offset, int limit) {
|
||||||
|
if (offset > -1) {
|
||||||
|
query.setFirstResult(offset);
|
||||||
|
}
|
||||||
|
if (limit > -1) {
|
||||||
|
query.setMaxResults(limit);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void orderBy(CriteriaQuery<FeedEntryStatus> query,
|
||||||
|
Root<FeedEntryStatus> root, ReadingOrder order) {
|
||||||
|
Path<Date> orderPath = root.get(FeedEntryStatus_.entry).get(
|
||||||
|
FeedEntry_.updated);
|
||||||
|
if (order == ReadingOrder.asc) {
|
||||||
|
query.orderBy(builder.asc(orderPath));
|
||||||
|
} else {
|
||||||
|
query.orderBy(builder.desc(orderPath));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public void markFeedEntries(User user, Feed feed, Date olderThan) {
|
public void markFeedEntries(User user, Feed feed, Date olderThan) {
|
||||||
List<FeedEntryStatus> statuses = getStatuses(feed, user, true);
|
List<FeedEntryStatus> statuses = getStatuses(feed, user, true,
|
||||||
|
ReadingOrder.desc);
|
||||||
update(markList(statuses, olderThan));
|
update(markList(statuses, olderThan));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void markCategoryEntries(User user, List<FeedCategory> categories,
|
public void markCategoryEntries(User user, List<FeedCategory> categories,
|
||||||
Date olderThan) {
|
Date olderThan) {
|
||||||
List<FeedEntryStatus> statuses = getStatuses(categories, user, true);
|
List<FeedEntryStatus> statuses = getStatuses(categories, user, true,
|
||||||
|
ReadingOrder.desc);
|
||||||
update(markList(statuses, olderThan));
|
update(markList(statuses, olderThan));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void markAllEntries(User user, Date olderThan) {
|
public void markAllEntries(User user, Date olderThan) {
|
||||||
List<FeedEntryStatus> statuses = getStatuses(user, true);
|
List<FeedEntryStatus> statuses = getStatuses(user, true,
|
||||||
|
ReadingOrder.desc);
|
||||||
update(markList(statuses, olderThan));
|
update(markList(statuses, olderThan));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -18,6 +18,10 @@ public class UserSettings extends AbstractModel {
|
|||||||
all, unread
|
all, unread
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public enum ReadingOrder {
|
||||||
|
asc, desc
|
||||||
|
}
|
||||||
|
|
||||||
@OneToOne
|
@OneToOne
|
||||||
@JoinColumn(name = "user_id", nullable = false)
|
@JoinColumn(name = "user_id", nullable = false)
|
||||||
private User user;
|
private User user;
|
||||||
@@ -26,6 +30,10 @@ public class UserSettings extends AbstractModel {
|
|||||||
@Column(nullable = false)
|
@Column(nullable = false)
|
||||||
private ReadingMode readingMode;
|
private ReadingMode readingMode;
|
||||||
|
|
||||||
|
@Enumerated(EnumType.STRING)
|
||||||
|
@Column(nullable = false)
|
||||||
|
private ReadingOrder readingOrder;
|
||||||
|
|
||||||
@Lob
|
@Lob
|
||||||
@Column(length = Integer.MAX_VALUE)
|
@Column(length = Integer.MAX_VALUE)
|
||||||
private String customCss;
|
private String customCss;
|
||||||
@@ -54,4 +62,12 @@ public class UserSettings extends AbstractModel {
|
|||||||
this.customCss = customCss;
|
this.customCss = customCss;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ReadingOrder getReadingOrder() {
|
||||||
|
return readingOrder;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setReadingOrder(ReadingOrder readingOrder) {
|
||||||
|
this.readingOrder = readingOrder;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import java.io.Serializable;
|
|||||||
public class Settings implements Serializable {
|
public class Settings implements Serializable {
|
||||||
|
|
||||||
private String readingMode;
|
private String readingMode;
|
||||||
|
private String readingOrder;
|
||||||
private String customCss;
|
private String customCss;
|
||||||
|
|
||||||
public String getReadingMode() {
|
public String getReadingMode() {
|
||||||
@@ -24,4 +25,12 @@ public class Settings implements Serializable {
|
|||||||
this.customCss = customCss;
|
this.customCss = customCss;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getReadingOrder() {
|
||||||
|
return readingOrder;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setReadingOrder(String readingOrder) {
|
||||||
|
this.readingOrder = readingOrder;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import com.commafeed.backend.StartupBean;
|
|||||||
import com.commafeed.backend.model.User;
|
import com.commafeed.backend.model.User;
|
||||||
import com.commafeed.backend.model.UserRole;
|
import com.commafeed.backend.model.UserRole;
|
||||||
import com.commafeed.backend.model.UserRole.Role;
|
import com.commafeed.backend.model.UserRole.Role;
|
||||||
|
import com.commafeed.backend.model.UserSettings.ReadingOrder;
|
||||||
import com.commafeed.frontend.SecurityCheck;
|
import com.commafeed.frontend.SecurityCheck;
|
||||||
import com.commafeed.frontend.model.UserModel;
|
import com.commafeed.frontend.model.UserModel;
|
||||||
import com.google.common.base.Preconditions;
|
import com.google.common.base.Preconditions;
|
||||||
@@ -135,7 +136,7 @@ public class AdminUsersREST extends AbstractREST {
|
|||||||
.entity("You cannot delete the admin user.").build();
|
.entity("You cannot delete the admin user.").build();
|
||||||
}
|
}
|
||||||
feedEntryStatusService.delete(feedEntryStatusService.getStatuses(user,
|
feedEntryStatusService.delete(feedEntryStatusService.getStatuses(user,
|
||||||
false));
|
false, ReadingOrder.desc));
|
||||||
feedSubscriptionService.delete(feedSubscriptionService.findAll(user));
|
feedSubscriptionService.delete(feedSubscriptionService.findAll(user));
|
||||||
feedCategoryService.delete(feedCategoryService.findAll(user));
|
feedCategoryService.delete(feedCategoryService.findAll(user));
|
||||||
userSettingsService.delete(userSettingsService.findByUser(user));
|
userSettingsService.delete(userSettingsService.findByUser(user));
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ import com.commafeed.backend.model.FeedCategory;
|
|||||||
import com.commafeed.backend.model.FeedEntry;
|
import com.commafeed.backend.model.FeedEntry;
|
||||||
import com.commafeed.backend.model.FeedEntryStatus;
|
import com.commafeed.backend.model.FeedEntryStatus;
|
||||||
import com.commafeed.backend.model.FeedSubscription;
|
import com.commafeed.backend.model.FeedSubscription;
|
||||||
|
import com.commafeed.backend.model.UserSettings.ReadingOrder;
|
||||||
import com.commafeed.frontend.model.Entries;
|
import com.commafeed.frontend.model.Entries;
|
||||||
import com.commafeed.frontend.model.Entry;
|
import com.commafeed.frontend.model.Entry;
|
||||||
import com.google.common.base.Preconditions;
|
import com.google.common.base.Preconditions;
|
||||||
@@ -42,7 +43,8 @@ public class EntriesREST extends AbstractREST {
|
|||||||
@QueryParam("id") String id,
|
@QueryParam("id") String id,
|
||||||
@QueryParam("readType") ReadType readType,
|
@QueryParam("readType") ReadType readType,
|
||||||
@DefaultValue("0") @QueryParam("offset") int offset,
|
@DefaultValue("0") @QueryParam("offset") int offset,
|
||||||
@DefaultValue("-1") @QueryParam("limit") int limit) {
|
@DefaultValue("-1") @QueryParam("limit") int limit,
|
||||||
|
@QueryParam("order") @DefaultValue("desc") ReadingOrder order) {
|
||||||
|
|
||||||
Preconditions.checkNotNull(type);
|
Preconditions.checkNotNull(type);
|
||||||
Preconditions.checkNotNull(id);
|
Preconditions.checkNotNull(id);
|
||||||
@@ -61,7 +63,7 @@ public class EntriesREST extends AbstractREST {
|
|||||||
|
|
||||||
List<FeedEntryStatus> unreadEntries = feedEntryStatusService
|
List<FeedEntryStatus> unreadEntries = feedEntryStatusService
|
||||||
.getStatuses(subscription.getFeed(), getUser(),
|
.getStatuses(subscription.getFeed(), getUser(),
|
||||||
unreadOnly, offset, limit);
|
unreadOnly, offset, limit, order);
|
||||||
for (FeedEntryStatus status : unreadEntries) {
|
for (FeedEntryStatus status : unreadEntries) {
|
||||||
entries.getEntries().add(buildEntry(status));
|
entries.getEntries().add(buildEntry(status));
|
||||||
}
|
}
|
||||||
@@ -72,7 +74,8 @@ public class EntriesREST extends AbstractREST {
|
|||||||
if (ALL.equals(id)) {
|
if (ALL.equals(id)) {
|
||||||
entries.setName("All");
|
entries.setName("All");
|
||||||
List<FeedEntryStatus> unreadEntries = feedEntryStatusService
|
List<FeedEntryStatus> unreadEntries = feedEntryStatusService
|
||||||
.getStatuses(getUser(), unreadOnly, offset, limit);
|
.getStatuses(getUser(), unreadOnly, offset, limit,
|
||||||
|
order);
|
||||||
for (FeedEntryStatus status : unreadEntries) {
|
for (FeedEntryStatus status : unreadEntries) {
|
||||||
entries.getEntries().add(buildEntry(status));
|
entries.getEntries().add(buildEntry(status));
|
||||||
}
|
}
|
||||||
@@ -85,7 +88,7 @@ public class EntriesREST extends AbstractREST {
|
|||||||
.findAllChildrenCategories(getUser(), feedCategory);
|
.findAllChildrenCategories(getUser(), feedCategory);
|
||||||
List<FeedEntryStatus> unreadEntries = feedEntryStatusService
|
List<FeedEntryStatus> unreadEntries = feedEntryStatusService
|
||||||
.getStatuses(childrenCategories, getUser(),
|
.getStatuses(childrenCategories, getUser(),
|
||||||
unreadOnly, offset, limit);
|
unreadOnly, offset, limit, order);
|
||||||
for (FeedEntryStatus status : unreadEntries) {
|
for (FeedEntryStatus status : unreadEntries) {
|
||||||
entries.getEntries().add(buildEntry(status));
|
entries.getEntries().add(buildEntry(status));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import javax.ws.rs.core.Response.Status;
|
|||||||
|
|
||||||
import com.commafeed.backend.model.UserSettings;
|
import com.commafeed.backend.model.UserSettings;
|
||||||
import com.commafeed.backend.model.UserSettings.ReadingMode;
|
import com.commafeed.backend.model.UserSettings.ReadingMode;
|
||||||
|
import com.commafeed.backend.model.UserSettings.ReadingOrder;
|
||||||
import com.commafeed.frontend.model.Settings;
|
import com.commafeed.frontend.model.Settings;
|
||||||
import com.google.common.base.Preconditions;
|
import com.google.common.base.Preconditions;
|
||||||
|
|
||||||
@@ -21,9 +22,11 @@ public class SettingsREST extends AbstractREST {
|
|||||||
UserSettings settings = userSettingsService.findByUser(getUser());
|
UserSettings settings = userSettingsService.findByUser(getUser());
|
||||||
if (settings != null) {
|
if (settings != null) {
|
||||||
s.setReadingMode(settings.getReadingMode().name());
|
s.setReadingMode(settings.getReadingMode().name());
|
||||||
|
s.setReadingOrder(settings.getReadingOrder().name());
|
||||||
s.setCustomCss(settings.getCustomCss());
|
s.setCustomCss(settings.getCustomCss());
|
||||||
} else {
|
} else {
|
||||||
s.setReadingMode(ReadingMode.unread.name());
|
s.setReadingMode(ReadingMode.unread.name());
|
||||||
|
s.setReadingOrder(ReadingOrder.desc.name());
|
||||||
}
|
}
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
@@ -39,6 +42,7 @@ public class SettingsREST extends AbstractREST {
|
|||||||
s.setUser(getUser());
|
s.setUser(getUser());
|
||||||
}
|
}
|
||||||
s.setReadingMode(ReadingMode.valueOf(settings.getReadingMode()));
|
s.setReadingMode(ReadingMode.valueOf(settings.getReadingMode()));
|
||||||
|
s.setReadingOrder(ReadingOrder.valueOf(settings.getReadingOrder()));
|
||||||
s.setCustomCss(settings.getCustomCss());
|
s.setCustomCss(settings.getCustomCss());
|
||||||
userSettingsService.saveOrUpdate(s);
|
userSettingsService.saveOrUpdate(s);
|
||||||
return Response.ok(Status.OK).build();
|
return Response.ok(Status.OK).build();
|
||||||
|
|||||||
@@ -214,6 +214,12 @@ module.controller('ToolbarCtrl', function($scope, $http, $state, $stateParams,
|
|||||||
SettingsService.save();
|
SettingsService.save();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
$scope.$watch('settingsService.settings.readingOrder', function(newValue,
|
||||||
|
oldValue) {
|
||||||
|
if (newValue && oldValue && newValue != oldValue) {
|
||||||
|
SettingsService.save();
|
||||||
|
}
|
||||||
|
});
|
||||||
$scope.refresh = function() {
|
$scope.refresh = function() {
|
||||||
$scope.$emit('emitReload');
|
$scope.$emit('emitReload');
|
||||||
};
|
};
|
||||||
@@ -267,6 +273,12 @@ module.controller('FeedListCtrl', function($scope, $stateParams, $http, $route,
|
|||||||
$scope.$emit('emitReload');
|
$scope.$emit('emitReload');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
$scope.$watch('settingsService.settings.readingOrder', function(newValue,
|
||||||
|
oldValue) {
|
||||||
|
if (newValue && oldValue && newValue != oldValue) {
|
||||||
|
$scope.$emit('emitReload');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
$scope.limit = 10;
|
$scope.limit = 10;
|
||||||
$scope.busy = false;
|
$scope.busy = false;
|
||||||
@@ -302,6 +314,7 @@ module.controller('FeedListCtrl', function($scope, $stateParams, $http, $route,
|
|||||||
type : $scope.selectedType,
|
type : $scope.selectedType,
|
||||||
id : $scope.selectedId,
|
id : $scope.selectedId,
|
||||||
readType : $scope.settingsService.settings.readingMode,
|
readType : $scope.settingsService.settings.readingMode,
|
||||||
|
order : $scope.settingsService.settings.readingOrder,
|
||||||
offset : $scope.entries.length,
|
offset : $scope.entries.length,
|
||||||
limit : limit
|
limit : limit
|
||||||
}, callback);
|
}, callback);
|
||||||
|
|||||||
@@ -5,6 +5,10 @@
|
|||||||
<button type="button" class="btn" ng-model="settingsService.settings.readingMode" btn-radio="'unread'">Unread</button>
|
<button type="button" class="btn" ng-model="settingsService.settings.readingMode" btn-radio="'unread'">Unread</button>
|
||||||
<button type="button" class="btn" ng-model="settingsService.settings.readingMode" btn-radio="'all'">All</button>
|
<button type="button" class="btn" ng-model="settingsService.settings.readingMode" btn-radio="'all'">All</button>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="btn-group" data-toggle="buttons-radio">
|
||||||
|
<button type="button" class="btn" ng-model="settingsService.settings.readingOrder" btn-radio="'desc'">Newest</button>
|
||||||
|
<button type="button" class="btn" ng-model="settingsService.settings.readingOrder" btn-radio="'asc'">Oldest</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
<button type="button" class="btn" ng-click="refresh()"><i class="icon-refresh"></i> Refresh</button>
|
<button type="button" class="btn" ng-click="refresh()"><i class="icon-refresh"></i> Refresh</button>
|
||||||
<button type="button" class="btn" ng-click="markAllAsRead()"><i class="icon-ok"></i> Mark all as read</button>
|
<button type="button" class="btn" ng-click="markAllAsRead()"><i class="icon-ok"></i> Mark all as read</button>
|
||||||
|
|||||||
Reference in New Issue
Block a user