PageRenderTime 63ms CodeModel.GetById 38ms RepoModel.GetById 0ms app.codeStats 0ms

/media/js/newsblur/models/starred_counts.js

https://github.com/samuelclay/NewsBlur
JavaScript | 89 lines | 69 code | 18 blank | 2 comment | 13 complexity | 9777aefee06379e71ac88385d7588718 MD5 | raw file
Possible License(s): MIT, GPL-2.0, BSD-3-Clause
  1. NEWSBLUR.Models.StarredFeed = Backbone.Model.extend({
  2. initialize: function() {
  3. this.set('feed_title', this.get('tag'));
  4. this.views = [];
  5. },
  6. is_social: function() {
  7. return false;
  8. },
  9. is_feed: function() {
  10. return false;
  11. },
  12. is_starred: function() {
  13. return true;
  14. },
  15. unread_counts: function() {
  16. return {
  17. ps: this.get('count') || 0,
  18. nt: 0,
  19. ng: 0
  20. };
  21. },
  22. tag_slug: function() {
  23. return Inflector.sluggify(this.get('tag') || '');
  24. }
  25. });
  26. NEWSBLUR.Collections.StarredFeeds = Backbone.Collection.extend({
  27. model: NEWSBLUR.Models.StarredFeed,
  28. parse: function(models) {
  29. _.each(models, function(feed) {
  30. feed.id = 'starred:' + (feed.tag || feed.feed_id);
  31. // feed.selected = false;
  32. feed.ps = feed.count;
  33. });
  34. return models;
  35. },
  36. comparator: function(a, b) {
  37. var sort_order = NEWSBLUR.reader.model.preference('feed_order');
  38. var title_a = a.get('feed_title') || '';
  39. var title_b = b.get('feed_title') || '';
  40. title_a = title_a.toLowerCase();
  41. title_b = title_b.toLowerCase();
  42. if (sort_order == 'MOSTUSED') {
  43. var opens_a = a.get('count');
  44. var opens_b = b.get('count');
  45. if (opens_a > opens_b) return -1;
  46. if (opens_a < opens_b) return 1;
  47. }
  48. // if (!sort_order || sort_order == 'ALPHABETICAL')
  49. if (title_a > title_b) return 1;
  50. else if (title_a < title_b) return -1;
  51. return 0;
  52. },
  53. selected: function() {
  54. return this.detect(function(feed) { return feed.get('selected'); });
  55. },
  56. deselect: function() {
  57. this.chain().select(function(feed) {
  58. return feed.get('selected');
  59. }).each(function(feed){
  60. feed.set('selected', false);
  61. });
  62. },
  63. all_tags: function() {
  64. return this.pluck('tag');
  65. },
  66. get_feed: function(feed_id) {
  67. return this.detect(function(feed) {
  68. return feed.get('feed_id') == feed_id;
  69. });
  70. }
  71. });