]>
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
) {
11 if (!this.store
._itemsByIdentity
) return undefined;
14 treeItem
= this.store
._itemsByIdentity
['CAT:' + feed
];
16 treeItem
= this.store
._itemsByIdentity
['FEED:' + feed
];
19 return this.store
.getValue(treeItem
, key
);
21 getFeedName: function(feed
, is_cat
) {
22 return this.getFeedValue(feed
, is_cat
, 'name');
24 getFeedUnread: function(feed
, is_cat
) {
25 var unread
= parseInt(this.getFeedValue(feed
, is_cat
, 'unread'));
26 return (isNaN(unread
)) ? 0 : unread
;
28 setFeedUnread: function(feed
, is_cat
, unread
) {
29 return this.setFeedValue(feed
, is_cat
, 'unread', parseInt(unread
));
31 setFeedValue: function(feed
, is_cat
, key
, value
) {
32 if (!value
) value
= '';
33 if (!this.store
._itemsByIdentity
) return undefined;
36 treeItem
= this.store
._itemsByIdentity
['CAT:' + feed
];
38 treeItem
= this.store
._itemsByIdentity
['FEED:' + feed
];
41 return this.store
.setValue(treeItem
, key
, value
);
45 dojo
.declare("fox.FeedTree", dijit
.Tree
, {
46 _createTreeNode: function(args
) {
47 var tnode
= new dijit
._TreeNode(args
);
50 tnode
.iconNode
.src
= args
.item
.icon
[0];
52 //tnode.labelNode.innerHTML = args.label;
55 getIconClass: function (item
, opened
) {
56 return (!item
|| this.model
.mayHaveChildren(item
)) ? (opened
? "dijitFolderOpened" : "dijitFolderClosed") : "feedIcon";
58 getLabelClass: function (item
, opened
) {
59 return (item
.unread
== 0) ? "dijitTreeLabel" : "dijitTreeLabel Unread";
61 getRowClass: function (item
, opened
) {
62 return (!item
.error
|| item
.error
== '') ? "dijitTreeRow" :
65 getLabel: function(item
) {
66 if (item
.unread
> 0) {
67 return item
.name
+ " (" + item
.unread
+ ")";
72 selectFeed: function(feed
, is_cat
) {
74 treeNode
= this._itemNodesMap
['CAT:' + feed
];
76 treeNode
= this._itemNodesMap
['FEED:' + feed
];
79 treeNode
= treeNode
[0];
80 if (!is_cat
) this._expandNode(treeNode
);
81 this._selectNode(treeNode
);
84 setFeedIcon: function(feed
, is_cat
, src
) {
86 treeNode
= this._itemNodesMap
['CAT:' + feed
];
88 treeNode
= this._itemNodesMap
['FEED:' + feed
];
91 treeNode
= treeNode
[0];
92 treeNode
.iconNode
.src
= src
;
97 setFeedExpandoIcon: function(feed
, is_cat
, src
) {
99 treeNode
= this._itemNodesMap
['CAT:' + feed
];
101 treeNode
= this._itemNodesMap
['FEED:' + feed
];
104 treeNode
= treeNode
[0];
105 treeNode
.expandoNode
.src
= src
;
111 hasCats: function() {
112 if (this.model
.store
&& this.model
.store
._itemsByIdentity
)
113 return this.model
.store
._itemsByIdentity
['CAT:-1'] != undefined;
117 hideRead: function (hide
, show_special
) {
118 if (this.hasCats()) {
121 var cats
= this.model
.store
._arrayOfTopLevelItems
;
123 cats
.each(function(cat
) {
124 var cat_unread
= tree
.hideReadFeeds(cat
.items
, hide
, show_special
);
126 var id
= String(cat
.id
);
127 var node
= tree
._itemNodesMap
[id
];
128 var bare_id
= parseInt(id
.substr(id
.indexOf(":")+1));
131 var check_unread
= tree
.model
.getFeedUnread(bare_id
, true);
133 if (hide
&& cat_unread
== 0 && check_unread
== 0) {
134 Effect
.Fade(node
[0].rowNode
, {duration
: 0.3,
135 queue
: { position
: 'end', scope
: 'FFADE-' + id
, limit
: 1 }});
137 Element
.show(node
[0].rowNode
);
145 this.hideReadFeeds(this.model
.store
._arrayOfTopLevelItems
, hide
,
149 hideReadFeeds: function (items
, hide
, show_special
) {
153 items
.each(function(feed
) {
154 var id
= String(feed
.id
);
155 var bare_id
= parseInt(feed
.bare_id
);;
157 var unread
= feed
.unread
[0];
158 var node
= tree
._itemNodesMap
[id
];
161 if (hide
&& unread
== 0 && (bare_id
> 0 || !show_special
)) {
162 Effect
.Fade(node
[0].rowNode
, {duration
: 0.3,
163 queue
: { position
: 'end', scope
: 'FFADE-' + id
, limit
: 1 }});
165 Element
.show(node
[0].rowNode
);