Fixed typo introduced in commit c11bb23
[KiwiIRC.git] / client / assets / dev / model_memberlist.js
1 _kiwi.model.MemberList = Backbone.Collection.extend({
2 model: _kiwi.model.Member,
3 comparator: function (a, b) {
4 var i, a_modes, b_modes, a_idx, b_idx, a_nick, b_nick;
5 var user_prefixes = _kiwi.gateway.get('user_prefixes');
6 a_modes = a.get("modes");
7 b_modes = b.get("modes");
8 // Try to sort by modes first
9 if (a_modes.length > 0) {
10 // a has modes, but b doesn't so a should appear first
11 if (b_modes.length === 0) {
12 return -1;
13 }
14 a_idx = b_idx = -1;
15 // Compare the first (highest) mode
16 for (i = 0; i < user_prefixes.length; i++) {
17 if (user_prefixes[i].mode === a_modes[0]) {
18 a_idx = i;
19 }
20 }
21 for (i = 0; i < user_prefixes.length; i++) {
22 if (user_prefixes[i].mode === b_modes[0]) {
23 b_idx = i;
24 }
25 }
26 if (a_idx < b_idx) {
27 return -1;
28 } else if (a_idx > b_idx) {
29 return 1;
30 }
31 // If we get to here both a and b have the same highest mode so have to resort to lexicographical sorting
32
33 } else if (b_modes.length > 0) {
34 // b has modes but a doesn't so b should appear first
35 return 1;
36 }
37 a_nick = a.get("nick").toLocaleUpperCase();
38 b_nick = b.get("nick").toLocaleUpperCase();
39 // Lexicographical sorting
40 if (a_nick < b_nick) {
41 return -1;
42 } else if (a_nick > b_nick) {
43 return 1;
44 } else {
45 return 0;
46 }
47 },
48 initialize: function (options) {
49 this.view = new _kiwi.view.MemberList({"model": this});
50 },
51 getByNick: function (nick) {
52 if (typeof nick !== 'string') return;
53 return this.find(function (m) {
54 return nick.toLowerCase() === m.get('nick').toLowerCase();
55 });
56 }
57 });