diff options
Diffstat (limited to 'js/FeedTree.js')
-rwxr-xr-x | js/FeedTree.js | 211 |
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(/</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) { @@ -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 { |