2 Ext.onReady(function() {
3 var searchStore = new Ext.data.Store({
4 fields: ['cls', 'member', 'type', 'doc'],
12 // This is the global object read from /output/members.js
13 searchStore.loadData(Docs.membersData.data);
14 var allRecords = searchStore.getRange();
15 searchStore.removeAll();
17 var panel = Ext.create('Ext.view.View', {
19 tpl: new Ext.XTemplate(
21 '<div class="item {type}">',
22 '<div class="title">{member}</div>',
23 '<div class="class">{cls}</div>',
28 overItemCls:'x-view-over',
30 itemSelector:'div.item',
33 handleClick: function(curItem) {
34 curItem = curItem || panel.getSelectionModel().getLastSelected();
35 var cls = curItem.data.cls;
36 if (curItem.data.type != 'cls') {
37 cls += '-' + curItem.data.type + '-' + curItem.data.member;
40 Docs.ClassLoader.load(cls);
43 itemclick: function(panel, item) {
44 this.handleClick(item);
49 panel.render('search-box');
52 Ext.get('search-field').on('blur', function(ev, el) {
53 setTimeout(function() {
57 Ext.get('search-field').on('focus', function(ev, el) {
61 // When a key is pressed in the search field, search for classes, methods, properties, configs, etc
62 Ext.get('search-field').on('keyup', function(ev, el) {
64 if (ev.keyCode == 27 || el.value == '') {
72 var curItem = panel.store.indexOf(panel.getSelectionModel().getLastSelected()),
73 lastItem = panel.store.data.length - 1,
74 selModel = panel.getSelectionModel();
77 if (ev.keyCode == 38) {
78 if (curItem == undefined) {
81 selModel.select(curItem == 0 ? lastItem : (curItem - 1));
85 else if (ev.keyCode == 40) {
86 if (curItem == undefined) {
89 selModel.select(curItem == lastItem ? 0 : curItem + 1);
93 else if (ev.keyCode == 13) {
98 searchExt(Ext.get(el).getValue());
102 Ext.get(Ext.get('search-field').dom.parentNode).on('submit', function(ev, el) {
106 var searchExt = function(term) {
107 searchStore.loadData(filterMembers(term), false);
110 var filterMembers = function(text) {
111 var results = [[], [], []];
112 var safeText = Ext.escapeRe(text);
113 var re0 = new RegExp("^" + safeText + "$", "i");
114 var re1 = new RegExp("^" + safeText, "i");
115 var re2 = new RegExp(safeText, "i");
116 Ext.Array.forEach(allRecords, function(r) {
117 var member = r.get("member");
118 if (re0.test(member)) {
121 else if (re1.test(member)) {
124 else if (re2.test(member)) {
128 // flatten results array and returns first n results
129 return Ext.Array.flatten(results).slice(0, 10);