Junyi Shi
Junyi Shi

Reputation: 61

rally search user by first character

I want to realize the functionality that we can search the users' name by typing in the first character of their names. I need to use Javascript to create a custom html.

Is there anyone who has done this before could help me?

Upvotes: 1

Views: 199

Answers (2)

nickm
nickm

Reputation: 5966

In the example from this repository, a user combobox Rally.ui.combobox.UserComboBox searches for matching values dynamically based on the first couple of characters. This default functionality displays the expected values after the second character is entered.

var u = Ext.create('Rally.ui.combobox.UserComboBox',{
                id: 'u',
                project: project,
                fieldLabel: 'select user',
                listeners:{
                   ready: function(combobox){
                                this._onUserSelected(combobox.getRecord());
                   },
                   select: function(combobox){
                                this._onUserSelected(combobox.getRecord());
                   },
                   scope: this
               }
            });
            this.add(u);
        },

enter image description here

If you want to load all users (do not limit the selection to team members and editors of a specific project) you may use Rally.ui.combobox.Combobox instead of Rally.ui.combobox.UserComboBox, and set the model to User. But to workaround a default behavior where only the current user populates the combobox, use a filter that would filter in all users. In the example below ObjectID > 0 is used. This combobox will be populated by all users independently of the project picker. This fragment is not a part of a custom app example above:

{
                        xtype: 'rallycombobox',
                        fieldLabel: 'select project',
                        storeConfig: {
                            autoLoad: true,
                            model: 'User',
                            filters:[
                                {
                                    property: 'ObjectID',
                                    operator: '>',
                                    value: 0
                                }
                            ],
                            sorters: [
                                {
                                    property: 'UserName',
                                    direction: 'ASC'
                                }
                            ]
                        }
                    }

Upvotes: 1

Conner Reeves
Conner Reeves

Reputation: 1381

You'll want to use the Web Services API. Here's how I would do it...

The API doesn't allow you to specify a placement of a character in the filter, but you can require that it exists somewhere in the name, that filter would look like:

[{
    property : "FirstName",
    operator : "contains",
    value    : "A" //Whatever letter you're looking to start with
}]

Now, once the store is loaded, use a second function to filter the records to only those which start with your character:

store.filterBy(function(item) {
    return item.get("FirstName")[0] === "A";
});

Hope this helps :)

Upvotes: 0

Related Questions