summaryrefslogtreecommitdiff
path: root/js/FeedTree.js
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2020-02-21 14:06:21 +0300
committerAndrew Dolgov <[email protected]>2020-02-21 14:06:21 +0300
commit2d3fdd6836d9a2febeb12dce833f2cccfcf39ff7 (patch)
tree0430c492f2589eb8b5c0db774a24851a85353048 /js/FeedTree.js
parent5f30061c9236ac1937104df05d584c40f671c444 (diff)
hide read feeds / hide read shows special: use CSS instead of JS-based hiding
Diffstat (limited to 'js/FeedTree.js')
-rwxr-xr-xjs/FeedTree.js123
1 files changed, 6 insertions, 117 deletions
diff --git a/js/FeedTree.js b/js/FeedTree.js
index f6361ca63..fafa07682 100755
--- a/js/FeedTree.js
+++ b/js/FeedTree.js
@@ -127,10 +127,6 @@ define(["dojo/_base/declare", "dojo/dom-construct", "dijit/Tree", "dijit/Menu"],
},
postCreate: function() {
this.connect(this.model, "onChange", "updateCounter");
- this.connect(this, "_expandNode", function() {
- this.hideRead(App.getInitParam("hide_read_feeds"), App.getInitParam("hide_read_shows_special"));
- });
-
this.inherited(arguments);
},
updateCounter: function (item) {
@@ -158,13 +154,17 @@ define(["dojo/_base/declare", "dojo/dom-construct", "dijit/Tree", "dijit/Menu"],
return (item.unread <= 0) ? "dijitTreeLabel" : "dijitTreeLabel Unread";
},
getRowClass: function (item, opened) {
- let rc = (!item.error || item.error == '') ? "dijitTreeRow" :
- "dijitTreeRow Error";
+ let rc = "dijitTreeRow";
+
+ const is_cat = String(item.id).indexOf('CAT:') != -1;
+ if (!is_cat && item.error != '') rc += " Error";
if (item.unread > 0) rc += " Unread";
if (item.auxcounter > 0) rc += " Has_Aux";
if (item.markedcounter > 0) rc += " Has_Marked";
if (item.updates_disabled > 0) rc += " UpdatesDisabled";
+ if (item.bare_id < 0 || item.bare_id == 0 && !is_cat) rc += " Special";
+ if (item.bare_id == -1 && is_cat) rc += " AlwaysVisible";
return rc;
},
@@ -178,14 +178,6 @@ define(["dojo/_base/declare", "dojo/dom-construct", "dijit/Tree", "dijit/Menu"],
name = name.replace(/&lt;/g, "<");
name = name.replace(/&gt;/g, ">");
- /* var label;
-
- if (item.unread > 0) {
- label = name + " (" + item.unread + ")";
- } else {
- label = name;
- } */
-
return name;
},
expandParentNodes: function(feed, is_cat, list) {
@@ -314,77 +306,6 @@ define(["dojo/_base/declare", "dojo/dom-construct", "dijit/Tree", "dijit/Menu"],
hasCats: function() {
return this.model.hasCats();
},
- hideReadCat: function (cat, hide, show_special) {
- if (this.hasCats()) {
- const tree = this;
-
- if (cat && cat.items) {
- let cat_unread = tree.hideReadFeeds(cat.items, hide, show_special);
-
- const id = String(cat.id);
- const node = tree._itemNodesMap[id];
- const bare_id = parseInt(id.substr(id.indexOf(":")+1));
-
- if (node) {
- const check_unread = tree.model.getFeedUnread(bare_id, true);
-
- if (hide && cat_unread <= 0 && check_unread <= 0 && (id != "CAT:-1" || !show_special)) {
- Effect.Fade(node[0].rowNode, {duration : 0.3,
- queue: { position: 'end', scope: 'FFADE-' + id, limit: 1 }});
- } else {
- Element.show(node[0].rowNode);
- ++cat_unread;
- }
- }
- }
- }
- },
- hideRead: function (hide, show_special) {
- if (this.hasCats()) {
-
- const tree = this;
- const cats = this.model.store._arrayOfTopLevelItems;
-
- cats.each(function(cat) {
- tree.hideReadCat(cat, hide, show_special);
- });
-
- } else {
- this.hideReadFeeds(this.model.store._arrayOfTopLevelItems, hide,
- show_special);
- }
- },
- hideReadFeeds: function (items, hide, show_special) {
- const tree = this;
- let cat_unread = 0;
-
- items.each(function(feed) {
- const id = String(feed.id);
-
- // it's a subcategory
- if (feed.items) {
- tree.hideReadCat(feed, hide, show_special);
- } else { // it's a feed
- const bare_id = parseInt(feed.bare_id);
-
- const unread = feed.unread[0];
- const has_error = feed.error[0] != '';
- const node = tree._itemNodesMap[id];
-
- if (node) {
- if (hide && unread <= 0 && !has_error && (bare_id > 0 || bare_id < _label_base_index || !show_special)) {
- Effect.Fade(node[0].rowNode, {duration : 0.3,
- queue: { position: 'end', scope: 'FFADE-' + id, limit: 1 }});
- } else {
- Element.show(node[0].rowNode);
- ++cat_unread;
- }
- }
- }
- });
-
- return cat_unread;
- },
collapseCat: function(id) {
if (!this.model.hasCats()) return;
@@ -401,38 +322,6 @@ define(["dojo/_base/declare", "dojo/dom-construct", "dijit/Tree", "dijit/Menu"],
}
},
- getVisibleUnreadFeeds: function() {
- const items = this.model.store._arrayOfAllItems;
- const rv = [];
-
- for (let i = 0; i < items.length; i++) {
- const id = String(items[i].id);
- const box = this._itemNodesMap[id];
-
- if (box) {
- const row = box[0].rowNode;
- let cat = false;
-
- try {
- cat = box[0].rowNode.parentNode.parentNode;
- } catch (e) { }
-
- if (row) {
- if (Element.visible(row) && (!cat || Element.visible(cat))) {
- const feed_id = String(items[i].bare_id);
- const is_cat = !id.match('FEED:');
- const unread = this.model.getFeedUnread(feed_id, is_cat);
-
- if (unread > 0)
- rv.push([feed_id, is_cat]);
-
- }
- }
- }
- }
-
- return rv;
- },
getNextFeed: function (feed, is_cat) {
let treeItem;