summaryrefslogtreecommitdiff
path: root/js/FeedTree.js
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2013-03-26 16:31:36 +0400
committerAndrew Dolgov <[email protected]>2013-03-26 16:32:06 +0400
commit2196b517cd16683db12cca7c7a6da3e4a0a755ca (patch)
treeb66ce7cbd2e74489bc714abdb1b3ab5347b707d3 /js/FeedTree.js
parent781f789171526ac681fc3a364bdf17267e4d7c80 (diff)
manually find and expand all parent nodes of a selected feed in feedTree
because dojo is incapable of doing it itself in a situation where tree persistence cookie is at initial state, bloody fucking hell
Diffstat (limited to 'js/FeedTree.js')
-rw-r--r--js/FeedTree.js56
1 files changed, 56 insertions, 0 deletions
diff --git a/js/FeedTree.js b/js/FeedTree.js
index 2e686c156..e0b068f17 100644
--- a/js/FeedTree.js
+++ b/js/FeedTree.js
@@ -218,7 +218,63 @@ dojo.declare("fox.FeedTree", dijit.Tree, {
return label;
},
+ expandParentNodes: function(feed, is_cat, list) {
+ try {
+ for (var i = 0; i < list.length; i++) {
+ var id = String(list[i].id);
+ var item = this._itemNodesMap[id];
+
+ if (item) {
+ item = item[0];
+ this._expandNode(item);
+ }
+ }
+ } catch (e) {
+ exception_error("expandParentNodes", e);
+ }
+ },
+ findNodeParentsAndExpandThem: function(feed, is_cat, root, parents) {
+ // expands all parents of specified feed to properly mark it as active
+ // my fav thing about frameworks is doing everything myself
+ try {
+ var test_id = is_cat ? 'CAT:' + feed : 'FEED:' + feed;
+
+ if (!root) {
+ if (!this.model || !this.model.store) return false;
+
+ var items = this.model.store._arrayOfTopLevelItems;
+
+ for (var i = 0; i < items.length; i++) {
+ if (String(items[i].id) == test_id) {
+ this.expandParentNodes(feed, is_cat, parents);
+ } else {
+ this.findNodeParentsAndExpandThem(feed, is_cat, items[i], []);
+ }
+ }
+ } else {
+ if (root.items) {
+ parents.push(root);
+
+ for (var i = 0; i < root.items.length; i++) {
+ if (String(root.items[i].id) == test_id) {
+ this.expandParentNodes(feed, is_cat, parents);
+ } else {
+ this.findNodeParentsAndExpandThem(feed, is_cat, root.items[i], parents);
+ }
+ }
+ } else {
+ if (String(root.id) == test_id) {
+ this.expandParentNodes(feed, is_cat, parents);
+ }
+ }
+ }
+ } catch (e) {
+ exception_error("findNodeParentsAndExpandThem", e);
+ }
+ },
selectFeed: function(feed, is_cat) {
+ this.findNodeParentsAndExpandThem(feed, is_cat, false, false);
+
if (is_cat)
treeNode = this._itemNodesMap['CAT:' + feed];
else