This commit is contained in:
Athou
2013-04-09 09:03:52 +02:00
parent ea8a5def8c
commit 7b9bfeb816
8 changed files with 29 additions and 3 deletions

View File

@@ -66,6 +66,7 @@ public class FeedEntryService extends GenericDAO<FeedEntry> {
feed.setLastUpdated(Calendar.getInstance().getTime()); feed.setLastUpdated(Calendar.getInstance().getTime());
feed.setMessage(null); feed.setMessage(null);
feed.setErrorCount(0);
feedService.update(feed); feedService.update(feed);
} }

View File

@@ -49,6 +49,7 @@ public class FeedUpdater {
+ e.getMessage()); + e.getMessage());
feed.setLastUpdated(Calendar.getInstance().getTime()); feed.setLastUpdated(Calendar.getInstance().getTime());
feed.setMessage("Unable to refresh feed: " + e.getMessage()); feed.setMessage("Unable to refresh feed: " + e.getMessage());
feed.setErrorCount(feed.getErrorCount() + 1);
feedService.update(feed); feedService.update(feed);
} }
} }

View File

@@ -34,6 +34,8 @@ public class Feed extends AbstractModel {
@Column(length = 1024) @Column(length = 1024)
private String message; private String message;
private int errorCount;
@ManyToMany(mappedBy = "feeds") @ManyToMany(mappedBy = "feeds")
private Set<FeedEntry> entries = Sets.newHashSet(); private Set<FeedEntry> entries = Sets.newHashSet();
@@ -104,4 +106,12 @@ public class Feed extends AbstractModel {
this.link = link; this.link = link;
} }
public int getErrorCount() {
return errorCount;
}
public void setErrorCount(int errorCount) {
this.errorCount = errorCount;
}
} }

View File

@@ -9,6 +9,7 @@ import com.google.common.collect.Lists;
public class Entries implements Serializable { public class Entries implements Serializable {
private String name; private String name;
private String message; private String message;
private int errorCount;
private List<Entry> entries = Lists.newArrayList(); private List<Entry> entries = Lists.newArrayList();
public String getName() { public String getName() {
@@ -35,4 +36,12 @@ public class Entries implements Serializable {
this.message = message; this.message = message;
} }
public int getErrorCount() {
return errorCount;
}
public void setErrorCount(int errorCount) {
this.errorCount = errorCount;
}
} }

View File

@@ -55,6 +55,7 @@ public class EntriesREST extends AbstractREST {
if (subscription != null) { if (subscription != null) {
entries.setName(subscription.getTitle()); entries.setName(subscription.getTitle());
entries.setMessage(subscription.getFeed().getMessage()); entries.setMessage(subscription.getFeed().getMessage());
entries.setErrorCount(subscription.getFeed().getErrorCount());
List<FeedEntryStatus> unreadEntries = feedEntryStatusService List<FeedEntryStatus> unreadEntries = feedEntryStatusService
.getStatuses(subscription.getFeed(), getUser(), .getStatuses(subscription.getFeed(), getUser(),

View File

@@ -3,7 +3,7 @@
ng-class="{selected: (node.id == selectedId && selectedType == 'category')}">{{formatCategoryName({category:node})}} ng-class="{selected: (node.id == selectedId && selectedType == 'category')}">{{formatCategoryName({category:node})}}
</label> </label>
<ul> <ul>
<li ng-repeat="feed in node.feeds" ng-mouseenter="hovered=feed" ng-mouseleave="hovered=null" ng-class="{error: feed.message}"> <li ng-repeat="feed in node.feeds" ng-mouseenter="hovered=feed" ng-mouseleave="hovered=null" ng-class="{error: feed.message && feed.errorCount > 10}">
<div class="dropdown pull-right"> <div class="dropdown pull-right">
<a dropdown-toggle class="pull-right"><i ng-show="hovered==feed" class="icon icon-chevron-down"></i> </a> <a dropdown-toggle class="pull-right"><i ng-show="hovered==feed" class="icon icon-chevron-down"></i> </a>
<ul class="dropdown-menu"> <ul class="dropdown-menu">

View File

@@ -253,6 +253,7 @@ module.controller('FeedListCtrl', function($scope, $stateParams, $http, $route,
$scope.name = null; $scope.name = null;
$scope.message = null; $scope.message = null;
$scope.errorCount = 0;
$scope.entries = []; $scope.entries = [];
$scope.settingsService = SettingsService; $scope.settingsService = SettingsService;
@@ -287,6 +288,7 @@ module.controller('FeedListCtrl', function($scope, $stateParams, $http, $route,
} }
$scope.name = data.name; $scope.name = data.name;
$scope.message = data.message; $scope.message = data.message;
$scope.errorCount = data.errorCount;
$scope.busy = false; $scope.busy = false;
$scope.hasMore = data.entries.length == limit; $scope.hasMore = data.entries.length == limit;
}; };
@@ -407,6 +409,8 @@ module.controller('FeedListCtrl', function($scope, $stateParams, $http, $route,
$scope.$on('reload', function(event, args) { $scope.$on('reload', function(event, args) {
$scope.name = null; $scope.name = null;
$scope.entries = []; $scope.entries = [];
$scope.message = null;
$scope.errorCount = 0;
$scope.busy = false; $scope.busy = false;
$scope.hasMore = true; $scope.hasMore = true;
$scope.loadMoreEntries(); $scope.loadMoreEntries();

View File

@@ -5,7 +5,7 @@
</div> </div>
<div infinite-scroll="loadMoreEntries()" infinite-scroll-disabled="busy || !settingsService.settings.readingMode" infinite-scroll-distance="1" id="feed-accordion"> <div infinite-scroll="loadMoreEntries()" infinite-scroll-disabled="busy || !settingsService.settings.readingMode" infinite-scroll-distance="1" id="feed-accordion">
<div ng-show="message">Error while loading this feed : {{message}}</div> <div ng-show="message && errorCount > 10">Error while loading this feed : {{message}}</div>
<div ng-repeat="entry in entries" class="entry" scroll-to="isOpen && current == entry" scroll-to-offset="-58"> <div ng-repeat="entry in entries" class="entry" scroll-to="isOpen && current == entry" scroll-to-offset="-58">
<a href="{{entry.url}}" target="_blank" class="entry-heading" ng-click="entryClicked(entry, $event)" <a href="{{entry.url}}" target="_blank" class="entry-heading" ng-click="entryClicked(entry, $event)"
ng-class="{open: current == entry, closed: current != entry}"> ng-class="{open: current == entry, closed: current != entry}">
@@ -29,6 +29,6 @@
</div> </div>
</div> </div>
</div> </div>
<div class="no-entries" ng-show="!message && name && entries.length == 0 && !busy">"{{name}}" has no unread items.</div> <div class="no-entries" ng-show="name && entries.length == 0 && !busy">"{{name}}" has no unread items.</div>
</div> </div>
</div> </div>