kaiwa/clientapp/models/resources.js

61 lines
1.5 KiB
JavaScript

"use strict";
var BaseCollection = require('./baseCollection');
var Resource = require('./resource');
module.exports = BaseCollection.extend({
type: 'resources',
model: Resource,
comparator: function (res1, res2) {
if (res1.priority > res2.priority) {
return -1;
}
if (res1.priority < res2.priority) {
return 1;
}
if (res1.show === res2.show) {
if (!!res1.idleSince && !!res2.idleSince) {
return 0;
}
if (res1.idleSince && !!res2.idleSince) {
return 1;
}
return -1;
}
var ranking = {
xa: 0,
away: 1,
'': 2,
chat: 3,
dnd: 3
};
var r1 = ranking[res1.show];
var r2 = ranking[res2.show];
if (r1 === r2) {
return 0;
}
if (r1 > r2) {
return -1;
}
return 1;
},
search : function (letters, removeMe, addAll) {
if(letters == "" && !removeMe) return this;
var collection = new module.exports(this.models);
if (addAll)
collection.add({id: this.parent.jid.bare + '/all'});
var pattern = new RegExp('^' + letters + '.*$', "i");
var filtered = collection.filter(function(data) {
var nick = data.get("mucDisplayName");
if (nick === me.nick) return false;
return pattern.test(nick);
});
return new module.exports(filtered);
}
});