Commit 5ddd4366 authored by Rene Saarsoo's avatar Rene Saarsoo
Browse files

Include xtype info to search.

parent 15a58668
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ module JsDuck
        :cls => cls.full_name,
        :member => cls.short_name,
        :type => :cls,
        :xtypes => cls[:xtypes]
      }
    end

+18 −10
Original line number Diff line number Diff line
@@ -118,25 +118,33 @@ Ext.define('Docs.controller.Search', {
    },

    filterMembers: function(text, n) {
        var results = [[], [], []];
        var results = [[], [], [], [], []];
        var xFull=0, nFull=1, xBeg=2, nBeg=3, nMid=4;
        var hasDot = /\./.test(text);
        var safeText = Ext.escapeRe(text);
        var re0 = new RegExp("^" + safeText + "$", "i");
        var re1 = new RegExp("^" + safeText, "i");
        var re2 = new RegExp(safeText, "i");
        var reFull = new RegExp("^" + safeText + "$", "i");
        var reBeg = new RegExp("^" + safeText, "i");
        var reMid = new RegExp(safeText, "i");

        Ext.Array.forEach(Docs.membersData.data, function(r) {
            // when search text has "." in it, search from the full name (e.g. "Ext.Component.focus")
            // Otherwise search from just the member name (e.g. "focus" or "Component")
            var name = hasDot ? r.cls + (r.type === "cls" ? "" : "." + r.member) : r.member;

            if (re0.test(name)) {
                results[0].push(r);
            if (r.xtypes && Ext.Array.some(r.xtypes, function(x) {return reFull.test(x);})) {
                results[xFull].push(r);
            }
            else if (r.xtypes && Ext.Array.some(r.xtypes, function(x) {return reBeg.test(x);})) {
                results[xBeg].push(r);
            }
            else if (reFull.test(name)) {
                results[nFull].push(r);
            }
            else if (re1.test(name)) {
                results[1].push(r);
            else if (reBeg.test(name)) {
                results[nBeg].push(r);
            }
            else if (re2.test(name)) {
                results[2].push(r);
            else if (reMid.test(name)) {
                results[nMid].push(r);
            }
        });

+1 −1
Original line number Diff line number Diff line
@@ -4,7 +4,7 @@
Ext.define('Docs.store.Search', {
    extend: 'Ext.data.Store',

    fields: ['cls', 'member', 'type'],
    fields: ['cls', 'member', 'type', 'xtypes'],
    proxy: {
        type: 'memory',
        reader: {