@atlassian/aui
Version:
Atlassian User Interface Framework
80 lines (66 loc) • 2.76 kB
JavaScript
(function (global, factory) {
if (typeof define === "function" && define.amd) {
define(['module', 'exports', './backbone', './internal/globalize'], factory);
} else if (typeof exports !== "undefined") {
factory(module, exports, require('./backbone'), require('./internal/globalize'));
} else {
var mod = {
exports: {}
};
factory(mod, mod.exports, global.backbone, global.globalize);
global.resultSet = mod.exports;
}
})(this, function (module, exports, _backbone, _globalize) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _backbone2 = _interopRequireDefault(_backbone);
var _globalize2 = _interopRequireDefault(_globalize);
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
var ResultSet = _backbone2.default.Model.extend({
initialize: function initialize(options) {
this.set('active', null, { silent: true });
this.collection = new _backbone2.default.Collection();
this.collection.bind('reset', this.setActive, this);
this.source = options.source;
this.source.bind('respond', this.process, this);
},
url: false,
process: function process(response) {
this.set('query', response.query);
this.collection.reset(response.results);
this.set('length', response.results.length);
this.trigger('update', this);
},
setActive: function setActive() {
var id = arguments[0] instanceof _backbone2.default.Collection ? false : arguments[0];
var model = id ? this.collection.get(id) : this.collection.first();
this.set('active', model || null);
return this.get('active');
},
next: function next() {
var current = this.collection.indexOf(this.get('active'));
var i = (current + 1) % this.get('length');
var next = this.collection.at(i);
return this.setActive(next && next.id);
},
prev: function prev() {
var current = this.collection.indexOf(this.get('active'));
var i = (current === 0 ? this.get('length') : current) - 1;
var prev = this.collection.at(i);
return this.setActive(prev && prev.id);
},
each: function each() {
return this.collection.each.apply(this.collection, arguments);
}
});
(0, _globalize2.default)('ResultSet', ResultSet);
exports.default = ResultSet;
module.exports = exports['default'];
});
//# sourceMappingURL=result-set.js.map