Sha256: 45aec03fc485b7a7cd335f05864a49655f113970542ca29ee5651c46d1f2015a

Contents?: true

Size: 1.41 KB

Versions: 5

Compression:

Stored size: 1.41 KB

Contents

Ext.ns('Rwiki.TreePanel');

Rwiki.TreePanel.Filter = Ext.extend(Ext.tree.TreeFilter, {
  constructor: function() {
    this.hiddenNodes = [];

    Ext.apply(this, {
      clearBlank: true,
      autoClear: true
    });

    Rwiki.TreePanel.Filter.superclass.constructor.apply(this, arguments);
  },

  filterTree: function(text) {
    var self = this;

    Ext.each(this.hiddenNodes, function(node) {
      node.ui.show();
    });

    if (!text) {
      this.clear();
      return;
    }
    this.tree.expandAll();

    this.markCount  = [];
    this.hiddenNodes = [];

    if (text.trim().length > 0) {
      this.tree.expandAll();

      var re = new RegExp(Ext.escapeRe(text), 'i');
      this.tree.root.cascade(function(node) {
        if (re.test(node.text)) {
          self.markToRoot(node, self.root);

          if (!node.isLeaf()) {
            node.cascade(function(child) {
              self.markToRoot(child, node);
            });
          }
        }
      });

      // hide empty packages that weren't filtered
      this.tree.root.cascade(function(node) {
        if (!self.markCount[node.id] && node != self.root) {
          node.ui.hide();
          self.hiddenNodes.push(node);
        }
      });
    }
  },

  markToRoot: function(node, root) {
    if (this.markCount[node.id]) return;

    this.markCount[node.id] = true;

    if (node.parentNode != null) {
      this.markToRoot(node.parentNode, root);
    }
  }
});

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
rwiki-0.2.4 public/javascripts/Rwiki/TreePanel/Filter.js
rwiki-0.2.3 public/javascripts/Rwiki/TreePanel/Filter.js
rwiki-0.2.2 public/javascripts/Rwiki/TreePanel/Filter.js
rwiki-0.2.1 public/javascripts/Rwiki/TreePanel/Filter.js
rwiki-0.1.3 public/javascripts/Rwiki/TreePanel/Filter.js