summaryrefslogtreecommitdiff
path: root/js/FeedTree.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/FeedTree.js')
-rwxr-xr-xjs/FeedTree.js211
1 files changed, 40 insertions, 171 deletions
diff --git a/js/FeedTree.js b/js/FeedTree.js
index 1dcbae3f9..85892b3d9 100755
--- a/js/FeedTree.js
+++ b/js/FeedTree.js
@@ -16,17 +16,14 @@ define(["dojo/_base/declare", "dojo/dom-construct", "dijit/Tree", "dijit/Menu"],
if (iconName) {
if (iconName.indexOf("/") == -1) {
- iconNode = dojo.doc.createElement("i");
- iconNode.className = "material-icons icon icon-" + iconName;
- iconNode.innerHTML = iconName;
+ iconNode = dojo.create("i", { className: "material-icons icon icon-" + iconName, innerHTML: iconName });
} else {
- iconNode = dojo.doc.createElement('img');
+ iconNode = dojo.create('img', { className: 'icon' });
if (args.item.icon && args.item.icon[0]) {
iconNode.src = args.item.icon[0];
} else {
iconNode.src = 'images/blank_icon.gif';
}
- iconNode.className = 'icon';
}
}
@@ -36,13 +33,12 @@ define(["dojo/_base/declare", "dojo/dom-construct", "dijit/Tree", "dijit/Menu"],
const id = args.item.id[0];
const bare_id = parseInt(id.substr(id.indexOf(':')+1));
- if (bare_id < _label_base_index) {
- const label = dojo.doc.createElement('i');
+ if (bare_id < LABEL_BASE_INDEX) {
+ const label = dojo.create('i', { className: "material-icons icon icon-label", innerHTML: "label" });
+
//const fg_color = args.item.fg_color[0];
const bg_color = args.item.bg_color[0];
- label.className = "material-icons icon icon-label";
- label.innerHTML = "label";
label.setStyle({
color: bg_color,
});
@@ -73,12 +69,6 @@ define(["dojo/_base/declare", "dojo/dom-construct", "dijit/Tree", "dijit/Menu"],
window.open("backend.php?op=feeds&method=update_debugger&feed_id=" + this.getParent().row_id +
"&csrf_token=" + App.getInitParam("csrf_token"));
}}));
-
- /* menu.addChild(new dijit.MenuItem({
- label: __("Update feed"),
- onClick: function() {
- heduleFeedUpdate(this.getParent().row_id, false);
- }})); */
}
menu.bindDomNode(tnode.domNode);
@@ -106,11 +96,8 @@ define(["dojo/_base/declare", "dojo/dom-construct", "dijit/Tree", "dijit/Menu"],
}
if (id.match("CAT:")) {
- loading = dojo.doc.createElement('img');
- loading.className = 'loadingNode';
- loading.src = 'images/blank_icon.gif';
- domConstruct.place(loading, tnode.labelNode, 'after');
- tnode.loadingNode = loading;
+ tnode.loadingNode = dojo.create('img', { className: 'loadingNode', src: 'images/blank_icon.gif'});
+ domConstruct.place(tnode.loadingNode, tnode.labelNode, 'after');
}
if (id.match("CAT:") && bare_id == -1) {
@@ -127,28 +114,19 @@ define(["dojo/_base/declare", "dojo/dom-construct", "dijit/Tree", "dijit/Menu"],
tnode._menu = menu;
}
- ctr = dojo.doc.createElement('span');
- ctr.className = 'counterNode';
- ctr.innerHTML = args.item.unread > 0 ? args.item.unread : args.item.auxcounter;
-
- //args.item.unread > 0 ? ctr.addClassName("unread") : ctr.removeClassName("unread");
-
- args.item.unread > 0 || args.item.auxcounter > 0 ? Element.show(ctr) : Element.hide(ctr);
+ tnode.markedCounterNode = dojo.create('span', { className: 'counterNode marked', innerHTML: args.item.markedcounter });
+ domConstruct.place(tnode.markedCounterNode, tnode.rowNode, 'first');
- args.item.unread <= 0 && args.item.auxcounter > 0 ? ctr.addClassName("aux") : ctr.removeClassName("aux");
+ tnode.auxCounterNode = dojo.create('span', { className: 'counterNode aux', innerHTML: args.item.auxcounter });
+ domConstruct.place(tnode.auxCounterNode, tnode.rowNode, 'first');
- domConstruct.place(ctr, tnode.rowNode, 'first');
- tnode.counterNode = ctr;
+ tnode.unreadCounterNode = dojo.create('span', { className: 'counterNode unread', innerHTML: args.item.unread });
+ domConstruct.place(tnode.unreadCounterNode, tnode.rowNode, 'first');
- //tnode.labelNode.innerHTML = args.label;
return tnode;
},
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) {
@@ -156,26 +134,15 @@ define(["dojo/_base/declare", "dojo/dom-construct", "dijit/Tree", "dijit/Menu"],
//console.log("updateCounter: " + item.id[0] + " " + item.unread + " " + tree);
- let node = tree._itemNodesMap[item.id];
-
- if (node) {
- node = node[0];
+ let treeNode = tree._itemNodesMap[item.id];
- if (node.counterNode) {
- ctr = node.counterNode;
- ctr.innerHTML = item.unread > 0 ? item.unread : item.auxcounter;
- item.unread > 0 || item.auxcounter > 0 ?
- item.unread > 0 ?
- Effect.Appear(ctr, {duration : 0.3,
- queue: { position: 'end', scope: 'CAPPEAR-' + item.id, limit: 1 }}) :
- Element.show(ctr) :
- Element.hide(ctr);
-
- item.unread <= 0 && item.auxcounter > 0 ? ctr.addClassName("aux") : ctr.removeClassName("aux");
+ if (treeNode) {
+ treeNode = treeNode[0];
- }
+ treeNode.unreadCounterNode.innerHTML = item.unread;
+ treeNode.auxCounterNode.innerHTML = item.auxcounter;
+ treeNode.markedCounterNode.innerHTML = item.markedcounter;
}
-
},
getTooltip: function (item) {
return [item.updated, item.error].filter(x => x && x != "").join(" - ");
@@ -187,11 +154,18 @@ 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 >= LABEL_BASE_INDEX && item.bare_id < 0 && !is_cat || item.bare_id == 0 && !is_cat) rc += " Special";
+ if (item.bare_id == -1 && is_cat) rc += " AlwaysVisible";
+ if (item.bare_id < LABEL_BASE_INDEX) rc += " Label";
return rc;
},
@@ -205,14 +179,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) {
@@ -268,6 +234,8 @@ define(["dojo/_base/declare", "dojo/dom-construct", "dijit/Tree", "dijit/Menu"],
selectFeed: function(feed, is_cat) {
this.findNodeParentsAndExpandThem(feed, is_cat, false, false);
+ let treeNode;
+
if (is_cat)
treeNode = this._itemNodesMap['CAT:' + feed];
else
@@ -299,6 +267,8 @@ define(["dojo/_base/declare", "dojo/dom-construct", "dijit/Tree", "dijit/Menu"],
}
},
setFeedIcon: function(feed, is_cat, src) {
+ let treeNode;
+
if (is_cat)
treeNode = this._itemNodesMap['CAT:' + feed];
else
@@ -306,15 +276,15 @@ define(["dojo/_base/declare", "dojo/dom-construct", "dijit/Tree", "dijit/Menu"],
if (treeNode) {
treeNode = treeNode[0];
- const icon = dojo.doc.createElement('img');
- icon.src = src;
- icon.className = 'icon';
+ const icon = dojo.create('img', { src: src, className: 'icon' });
domConstruct.place(icon, treeNode.iconNode, 'only');
return true;
}
return false;
},
setFeedExpandoIcon: function(feed, is_cat, src) {
+ let treeNode;
+
if (is_cat)
treeNode = this._itemNodesMap['CAT:' + feed];
else
@@ -326,9 +296,7 @@ define(["dojo/_base/declare", "dojo/dom-construct", "dijit/Tree", "dijit/Menu"],
treeNode.loadingNode.src = src;
return true;
} else {
- const icon = dojo.doc.createElement('img');
- icon.src = src;
- icon.className = 'loadingExpando';
+ const icon = dojo.create('img', { src: src, className: 'loadingExpando' });
domConstruct.place(icon, treeNode.expandoNode, 'only');
return true;
}
@@ -339,77 +307,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;
@@ -426,39 +323,9 @@ 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;
+
if (is_cat) {
treeItem = this.model.store._itemsByIdentity['CAT:' + feed];
} else {
@@ -497,6 +364,8 @@ define(["dojo/_base/declare", "dojo/dom-construct", "dijit/Tree", "dijit/Menu"],
}
},
getPreviousFeed: function (feed, is_cat) {
+ let treeItem;
+
if (is_cat) {
treeItem = this.model.store._itemsByIdentity['CAT:' + feed];
} else {