]>
git.wh0rd.org - tt-rss.git/blob - FeedTree.js
1 dojo
.provide("fox.FeedTree");
2 dojo
.provide("fox.FeedStoreModel");
4 dojo
.require("dijit.Tree");
6 dojo
.declare("fox.FeedStoreModel", dijit
.tree
.ForestStoreModel
, {
7 getItemById: function(id
) {
8 return this.store
._itemsByIdentity
[id
];
10 getFeedValue: function(feed
, is_cat
, key
) {
12 treeItem
= this.store
._itemsByIdentity
['CAT:' + feed
];
14 treeItem
= this.store
._itemsByIdentity
['FEED:' + feed
];
17 return this.store
.getValue(treeItem
, key
);
19 getFeedName: function(feed
, is_cat
) {
20 return this.getFeedValue(feed
, is_cat
, 'name');
22 getFeedUnread: function(feed
, is_cat
) {
23 var unread
= parseInt(this.getFeedValue(feed
, is_cat
, 'unread'));
24 return (isNaN(unread
)) ? 0 : unread
;
26 setFeedUnread: function(feed
, is_cat
, unread
) {
27 return this.setFeedValue(feed
, is_cat
, 'unread', parseInt(unread
));
29 setFeedValue: function(feed
, is_cat
, key
, value
) {
30 if (!value
) value
= '';
33 treeItem
= this.store
._itemsByIdentity
['CAT:' + feed
];
35 treeItem
= this.store
._itemsByIdentity
['FEED:' + feed
];
38 return this.store
.setValue(treeItem
, key
, value
);
42 dojo
.declare("fox.FeedTree", dijit
.Tree
, {
43 _createTreeNode: function(args
) {
44 var tnode
= new dijit
._TreeNode(args
);
47 tnode
.iconNode
.src
= args
.item
.icon
[0];
49 //tnode.labelNode.innerHTML = args.label;
52 getIconClass: function (item
, opened
) {
53 return (!item
|| this.model
.mayHaveChildren(item
)) ? (opened
? "dijitFolderOpened" : "dijitFolderClosed") : "feedIcon";
55 getLabelClass: function (item
, opened
) {
56 return (item
.unread
== 0) ? "dijitTreeLabel" : "dijitTreeLabel Unread";
58 getRowClass: function (item
, opened
) {
59 return (!item
.error
|| item
.error
== '') ? "dijitTreeRow" :
62 getLabel: function(item
) {
63 if (item
.unread
> 0) {
64 return item
.name
+ " (" + item
.unread
+ ")";
69 selectFeed: function(feed
, is_cat
) {
71 treeNode
= this._itemNodesMap
['CAT:' + feed
];
73 treeNode
= this._itemNodesMap
['FEED:' + feed
];
76 treeNode
= treeNode
[0];
77 if (!is_cat
) this._expandNode(treeNode
);
78 this._selectNode(treeNode
);
81 setFeedIcon: function(feed
, is_cat
, src
) {
83 treeNode
= this._itemNodesMap
['CAT:' + feed
];
85 treeNode
= this._itemNodesMap
['FEED:' + feed
];
88 treeNode
= treeNode
[0];
89 treeNode
.iconNode
.src
= src
;
94 setFeedExpandoIcon: function(feed
, is_cat
, src
) {
96 treeNode
= this._itemNodesMap
['CAT:' + feed
];
98 treeNode
= this._itemNodesMap
['FEED:' + feed
];
101 treeNode
= treeNode
[0];
102 treeNode
.expandoNode
.src
= src
;
108 hasCats: function() {
109 if (this.model
.store
&& this.model
.store
._itemsByIdentity
)
110 return this.model
.store
._itemsByIdentity
['CAT:-1'] != undefined;
114 hideRead: function (hide
, show_special
) {
115 if (this.hasCats()) {
118 var cats
= this.model
.store
._arrayOfTopLevelItems
;
120 cats
.each(function(cat
) {
121 var cat_unread
= tree
.hideReadFeeds(cat
.items
, hide
, show_special
);
123 var id
= String(cat
.id
);
124 var node
= tree
._itemNodesMap
[id
];
125 var bare_id
= parseInt(id
.substr(id
.indexOf(":")+1));
128 var check_unread
= tree
.model
.getFeedUnread(bare_id
, true);
130 if (hide
&& cat_unread
== 0 && check_unread
== 0) {
131 Effect
.Fade(node
[0].rowNode
, {duration
: 0.3,
132 queue
: { position
: 'end', scope
: 'FFADE-' + id
, limit
: 1 }});
134 Element
.show(node
[0].rowNode
);
142 this.hideReadFeeds(this.model
.store
._arrayOfTopLevelItems
, hide
,
146 hideReadFeeds: function (items
, hide
, show_special
) {
150 items
.each(function(feed
) {
151 var id
= String(feed
.id
);
152 var bare_id
= parseInt(feed
.bare_id
);;
154 var unread
= feed
.unread
[0];
155 var node
= tree
._itemNodesMap
[id
];
158 if (hide
&& unread
== 0 && (bare_id
> 0 || !show_special
)) {
159 Effect
.Fade(node
[0].rowNode
, {duration
: 0.3,
160 queue
: { position
: 'end', scope
: 'FFADE-' + id
, limit
: 1 }});
162 Element
.show(node
[0].rowNode
);