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

This commit is contained in:
Andrew Dolgov 2020-02-21 14:06:21 +03:00
parent 5f30061c92
commit 2d3fdd6836
9 changed files with 72 additions and 123 deletions

View File

@ -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 {
.dijitTreeRow.Unread .counterNode.unread {
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 {
#toolbar-headlines {
i.icon-syndicate {

View File

@ -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;

View File

@ -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;

View File

@ -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 {
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 {
display: inline-block;
}
body.ttrss_main:not([view-mode="marked"]) #feeds-holder #feedTree .dijitTreeRow.Has_Aux:not(.Unread) .counterNode.aux {
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 {
color: #ff7c4b;
margin-right: 8px;

File diff suppressed because one or more lines are too long

View File

@ -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 {
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 {
display: inline-block;
}
body.ttrss_main:not([view-mode="marked"]) #feeds-holder #feedTree .dijitTreeRow.Has_Aux:not(.Unread) .counterNode.aux {
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 {
color: #ff7c4b;
margin-right: 8px;

File diff suppressed because one or more lines are too long

View File

@ -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 {
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 {
display: inline-block;
}
body.ttrss_main:not([view-mode="marked"]) #feeds-holder #feedTree .dijitTreeRow.Has_Aux:not(.Unread) .counterNode.aux {
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 {
color: #ff7c4b;
margin-right: 8px;

File diff suppressed because one or more lines are too long