diff options
author | Andrew Dolgov <[email protected]> | 2020-02-21 14:06:21 +0300 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2020-02-21 14:06:21 +0300 |
commit | 2d3fdd6836d9a2febeb12dce833f2cccfcf39ff7 (patch) | |
tree | 0430c492f2589eb8b5c0db774a24851a85353048 /js | |
parent | 5f30061c9236ac1937104df05d584c40f671c444 (diff) |
hide read feeds / hide read shows special: use CSS instead of JS-based hiding
Diffstat (limited to 'js')
-rwxr-xr-x | js/FeedTree.js | 123 | ||||
-rw-r--r-- | js/Feeds.js | 9 |
2 files changed, 12 insertions, 120 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(/</g, "<"); name = name.replace(/>/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; diff --git a/js/Feeds.js b/js/Feeds.js index 9a27de82b..7fa376984 100644 --- a/js/Feeds.js +++ b/js/Feeds.js @@ -288,11 +288,14 @@ define(["dojo/_base/declare"], function (declare) { App.setInitParam("hide_read_feeds", hide); }); }, - hideOrShowFeeds: function(hide) { - const tree = dijit.byId("feedTree"); + hideOrShowFeeds: function (hide) { + /*const tree = dijit.byId("feedTree"); if (tree) - return tree.hideRead(hide, App.getInitParam("hide_read_shows_special")); + return tree.hideRead(hide, App.getInitParam("hide_read_shows_special"));*/ + + $$("body")[0].setAttribute("hide-read-feeds", !!hide); + $$("body")[0].setAttribute("hide-read-shows-special", !!App.getInitParam("hide_read_shows_special")); }, open: function(params) { const feed = params.feed; |