hide read feeds / hide read shows special: use CSS instead of JS-based hiding

master
Andrew Dolgov 5 years ago
parent 5f30061c92
commit 2d3fdd6836

@ -1038,6 +1038,17 @@ body.ttrss_main[view-mode="marked"] #feeds-holder #feedTree {
} }
} }
body.ttrss_main[view-mode="marked"][hide-read-feeds="true"][hide-read-shows-special="true"] #feeds-holder #feedTree
.dijitTreeRow:not(.dijitTreeRowSelected):not(.AlwaysVisible):not(.Special):not(.Has_Marked) {
display : none;
}
body.ttrss_main[view-mode="marked"][hide-read-feeds="true"][hide-read-shows-special="false"] #feeds-holder #feedTree
.dijitTreeRow:not(.dijitTreeRowSelected):not(.AlwaysVisible):not(.Has_Marked) {
display : none;
}
body.ttrss_main:not([view-mode="marked"]) #feeds-holder #feedTree { body.ttrss_main:not([view-mode="marked"]) #feeds-holder #feedTree {
.dijitTreeRow.Unread .counterNode.unread { .dijitTreeRow.Unread .counterNode.unread {
display : inline-block; display : inline-block;
@ -1047,6 +1058,16 @@ body.ttrss_main:not([view-mode="marked"]) #feeds-holder #feedTree {
} }
} }
body.ttrss_main:not([view-mode="marked"])[hide-read-feeds="true"][hide-read-shows-special="true"] #feeds-holder #feedTree
.dijitTreeRow:not(.dijitTreeRowSelected):not(.Unread):not(.AlwaysVisible):not(.Special) {
display : none;
}
body.ttrss_main:not([view-mode="marked"])[hide-read-feeds="true"][hide-read-shows-special="false"] #feeds-holder #feedTree
.dijitTreeRow:not(.dijitTreeRowSelected):not(.Unread):not(.AlwaysVisible) {
display : none;
}
body.ttrss_main { body.ttrss_main {
#toolbar-headlines { #toolbar-headlines {
i.icon-syndicate { i.icon-syndicate {

@ -127,10 +127,6 @@ define(["dojo/_base/declare", "dojo/dom-construct", "dijit/Tree", "dijit/Menu"],
}, },
postCreate: function() { postCreate: function() {
this.connect(this.model, "onChange", "updateCounter"); 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); this.inherited(arguments);
}, },
updateCounter: function (item) { 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"; return (item.unread <= 0) ? "dijitTreeLabel" : "dijitTreeLabel Unread";
}, },
getRowClass: function (item, opened) { getRowClass: function (item, opened) {
let rc = (!item.error || item.error == '') ? "dijitTreeRow" : let rc = "dijitTreeRow";
"dijitTreeRow Error";
const is_cat = String(item.id).indexOf('CAT:') != -1;
if (!is_cat && item.error != '') rc += " Error";
if (item.unread > 0) rc += " Unread"; if (item.unread > 0) rc += " Unread";
if (item.auxcounter > 0) rc += " Has_Aux"; if (item.auxcounter > 0) rc += " Has_Aux";
if (item.markedcounter > 0) rc += " Has_Marked"; if (item.markedcounter > 0) rc += " Has_Marked";
if (item.updates_disabled > 0) rc += " UpdatesDisabled"; 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; 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(/&lt;/g, "<");
name = name.replace(/&gt;/g, ">"); name = name.replace(/&gt;/g, ">");
/* var label;
if (item.unread > 0) {
label = name + " (" + item.unread + ")";
} else {
label = name;
} */
return name; return name;
}, },
expandParentNodes: function(feed, is_cat, list) { expandParentNodes: function(feed, is_cat, list) {
@ -314,77 +306,6 @@ define(["dojo/_base/declare", "dojo/dom-construct", "dijit/Tree", "dijit/Menu"],
hasCats: function() { hasCats: function() {
return this.model.hasCats(); 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) { collapseCat: function(id) {
if (!this.model.hasCats()) return; 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) { getNextFeed: function (feed, is_cat) {
let treeItem; let treeItem;

@ -288,11 +288,14 @@ define(["dojo/_base/declare"], function (declare) {
App.setInitParam("hide_read_feeds", hide); App.setInitParam("hide_read_feeds", hide);
}); });
}, },
hideOrShowFeeds: function(hide) { hideOrShowFeeds: function (hide) {
const tree = dijit.byId("feedTree"); /*const tree = dijit.byId("feedTree");
if (tree) 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) { open: function(params) {
const feed = params.feed; const feed = params.feed;

@ -877,12 +877,24 @@ body.ttrss_main[view-mode="marked"] #feeds-holder #feedTree .dijitTreeRow.Has_Ma
body.ttrss_main[view-mode="marked"] #feeds-holder #feedTree .dijitTreeRow.Has_Marked .counterNode.marked { body.ttrss_main[view-mode="marked"] #feeds-holder #feedTree .dijitTreeRow.Has_Marked .counterNode.marked {
display: inline-block; display: inline-block;
} }
body.ttrss_main[view-mode="marked"][hide-read-feeds="true"][hide-read-shows-special="true"] #feeds-holder #feedTree .dijitTreeRow:not(.dijitTreeRowSelected):not(.AlwaysVisible):not(.Special):not(.Has_Marked) {
display: none;
}
body.ttrss_main[view-mode="marked"][hide-read-feeds="true"][hide-read-shows-special="false"] #feeds-holder #feedTree .dijitTreeRow:not(.dijitTreeRowSelected):not(.AlwaysVisible):not(.Has_Marked) {
display: none;
}
body.ttrss_main:not([view-mode="marked"]) #feeds-holder #feedTree .dijitTreeRow.Unread .counterNode.unread { body.ttrss_main:not([view-mode="marked"]) #feeds-holder #feedTree .dijitTreeRow.Unread .counterNode.unread {
display: inline-block; display: inline-block;
} }
body.ttrss_main:not([view-mode="marked"]) #feeds-holder #feedTree .dijitTreeRow.Has_Aux:not(.Unread) .counterNode.aux { body.ttrss_main:not([view-mode="marked"]) #feeds-holder #feedTree .dijitTreeRow.Has_Aux:not(.Unread) .counterNode.aux {
display: inline-block; display: inline-block;
} }
body.ttrss_main:not([view-mode="marked"])[hide-read-feeds="true"][hide-read-shows-special="true"] #feeds-holder #feedTree .dijitTreeRow:not(.dijitTreeRowSelected):not(.Unread):not(.AlwaysVisible):not(.Special) {
display: none;
}
body.ttrss_main:not([view-mode="marked"])[hide-read-feeds="true"][hide-read-shows-special="false"] #feeds-holder #feedTree .dijitTreeRow:not(.dijitTreeRowSelected):not(.Unread):not(.AlwaysVisible) {
display: none;
}
body.ttrss_main #toolbar-headlines i.icon-syndicate { body.ttrss_main #toolbar-headlines i.icon-syndicate {
color: #ff7c4b; color: #ff7c4b;
margin-right: 8px; margin-right: 8px;

File diff suppressed because one or more lines are too long

@ -878,12 +878,24 @@ body.ttrss_main[view-mode="marked"] #feeds-holder #feedTree .dijitTreeRow.Has_Ma
body.ttrss_main[view-mode="marked"] #feeds-holder #feedTree .dijitTreeRow.Has_Marked .counterNode.marked { body.ttrss_main[view-mode="marked"] #feeds-holder #feedTree .dijitTreeRow.Has_Marked .counterNode.marked {
display: inline-block; display: inline-block;
} }
body.ttrss_main[view-mode="marked"][hide-read-feeds="true"][hide-read-shows-special="true"] #feeds-holder #feedTree .dijitTreeRow:not(.dijitTreeRowSelected):not(.AlwaysVisible):not(.Special):not(.Has_Marked) {
display: none;
}
body.ttrss_main[view-mode="marked"][hide-read-feeds="true"][hide-read-shows-special="false"] #feeds-holder #feedTree .dijitTreeRow:not(.dijitTreeRowSelected):not(.AlwaysVisible):not(.Has_Marked) {
display: none;
}
body.ttrss_main:not([view-mode="marked"]) #feeds-holder #feedTree .dijitTreeRow.Unread .counterNode.unread { body.ttrss_main:not([view-mode="marked"]) #feeds-holder #feedTree .dijitTreeRow.Unread .counterNode.unread {
display: inline-block; display: inline-block;
} }
body.ttrss_main:not([view-mode="marked"]) #feeds-holder #feedTree .dijitTreeRow.Has_Aux:not(.Unread) .counterNode.aux { body.ttrss_main:not([view-mode="marked"]) #feeds-holder #feedTree .dijitTreeRow.Has_Aux:not(.Unread) .counterNode.aux {
display: inline-block; display: inline-block;
} }
body.ttrss_main:not([view-mode="marked"])[hide-read-feeds="true"][hide-read-shows-special="true"] #feeds-holder #feedTree .dijitTreeRow:not(.dijitTreeRowSelected):not(.Unread):not(.AlwaysVisible):not(.Special) {
display: none;
}
body.ttrss_main:not([view-mode="marked"])[hide-read-feeds="true"][hide-read-shows-special="false"] #feeds-holder #feedTree .dijitTreeRow:not(.dijitTreeRowSelected):not(.Unread):not(.AlwaysVisible) {
display: none;
}
body.ttrss_main #toolbar-headlines i.icon-syndicate { body.ttrss_main #toolbar-headlines i.icon-syndicate {
color: #ff7c4b; color: #ff7c4b;
margin-right: 8px; margin-right: 8px;

File diff suppressed because one or more lines are too long

@ -878,12 +878,24 @@ body.ttrss_main[view-mode="marked"] #feeds-holder #feedTree .dijitTreeRow.Has_Ma
body.ttrss_main[view-mode="marked"] #feeds-holder #feedTree .dijitTreeRow.Has_Marked .counterNode.marked { body.ttrss_main[view-mode="marked"] #feeds-holder #feedTree .dijitTreeRow.Has_Marked .counterNode.marked {
display: inline-block; display: inline-block;
} }
body.ttrss_main[view-mode="marked"][hide-read-feeds="true"][hide-read-shows-special="true"] #feeds-holder #feedTree .dijitTreeRow:not(.dijitTreeRowSelected):not(.AlwaysVisible):not(.Special):not(.Has_Marked) {
display: none;
}
body.ttrss_main[view-mode="marked"][hide-read-feeds="true"][hide-read-shows-special="false"] #feeds-holder #feedTree .dijitTreeRow:not(.dijitTreeRowSelected):not(.AlwaysVisible):not(.Has_Marked) {
display: none;
}
body.ttrss_main:not([view-mode="marked"]) #feeds-holder #feedTree .dijitTreeRow.Unread .counterNode.unread { body.ttrss_main:not([view-mode="marked"]) #feeds-holder #feedTree .dijitTreeRow.Unread .counterNode.unread {
display: inline-block; display: inline-block;
} }
body.ttrss_main:not([view-mode="marked"]) #feeds-holder #feedTree .dijitTreeRow.Has_Aux:not(.Unread) .counterNode.aux { body.ttrss_main:not([view-mode="marked"]) #feeds-holder #feedTree .dijitTreeRow.Has_Aux:not(.Unread) .counterNode.aux {
display: inline-block; display: inline-block;
} }
body.ttrss_main:not([view-mode="marked"])[hide-read-feeds="true"][hide-read-shows-special="true"] #feeds-holder #feedTree .dijitTreeRow:not(.dijitTreeRowSelected):not(.Unread):not(.AlwaysVisible):not(.Special) {
display: none;
}
body.ttrss_main:not([view-mode="marked"])[hide-read-feeds="true"][hide-read-shows-special="false"] #feeds-holder #feedTree .dijitTreeRow:not(.dijitTreeRowSelected):not(.Unread):not(.AlwaysVisible) {
display: none;
}
body.ttrss_main #toolbar-headlines i.icon-syndicate { body.ttrss_main #toolbar-headlines i.icon-syndicate {
color: #ff7c4b; color: #ff7c4b;
margin-right: 8px; margin-right: 8px;

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save