Sha256: de6427bab08e1dd5fb5d249544f82aa8f4719badd01cfc0e78819a529021c6b0

Contents?: true

Size: 1.45 KB

Versions: 3

Compression:

Stored size: 1.45 KB

Contents

Ext.ns('Rwiki');

Rwiki.FuzzyFinderDialog = Ext.extend(Ext.Window, {
  constructor: function() {
    var self = this;

    var dataStore = new Ext.data.Store({
      proxy: new Ext.data.HttpProxy({
        method: 'GET',
        url: '/fuzzy_finder'
      }),

      reader: new Ext.data.JsonReader({
        root: 'results',
        totalProperty: 'count',
        id: 'path'
      }, [
        {name: 'path', mapping: 'path'},
        {name: 'score', mapping: 'score'},
        {name: 'highlighted_path', mapping: 'highlighted_path'}
      ])
    });

    // Custom rendering Template
    var resultTpl = new Ext.XTemplate(
      '<tpl for="."><div class="search-item">',
        '{highlighted_path}',
      '</div></tpl>'
    );

    var search = new Ext.form.ComboBox({
      store: dataStore,
      minChars: 2,
      displayField: 'title',
      typeAhead: false,
      loadingText: 'Searching...',
      hideTrigger: true,
      tpl: resultTpl,
      itemSelector: 'div.search-item',
      onSelect: function(record) { 
        var path = record.data.path;
        Rwiki.NodeManager.getInstance().loadPage(path);
        self.close();
      }
    });

    Ext.apply(this, {
      title: 'FuzzyFinder',
      maximizable: false,
      modal: true,
      width: 600,
      layout: 'fit',
      plain: true,
      bodyStyle: 'padding: 5px;',
      items: [search],
      defaultButton: search
    });

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

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rwiki-0.2.4 public/javascripts/Rwiki/FuzzyFinderDialog.js
rwiki-0.2.3 public/javascripts/Rwiki/FuzzyFinderDialog.js
rwiki-0.2.2 public/javascripts/Rwiki/FuzzyFinderDialog.js