Класс-наследник SourceDataset
, содержит limit
элементов из источника source
, отсортированных по правилу rule
, начиная со смещения offset
.
Правило должно возвращать значение, по которому будут сортироваться элементы источника. Правило задается свойством rule
, а направление сортировки – свойством orderDesc
. Правило и направление сортировки можно изменить методом setRule(rule, orderDesc)
. Когда меняется правило выбрасывается событие ruleChanged
.
Максимальное количество элементов задается свойством limit
, которое можно изменить методом setLimit(limit)
. Смещение, или количество элементов которое должно быть пропущено, задается свойством offset
и меняется методом setOffset(offset)
. Одновременно поменять оба свойства можно методом setRange(offset, limit)
. Когда меняется смещение или лимит выбрасывается событие rangeChanged(oldOffset, oldLimit)
.
var DataObject = basis.require('basis.data').Object;
var Dataset = basis.require('basis.data').Dataset;
var Slice = basis.require('basis.data.dataset').Slice;
var data = basis.require('basis.data').wrap([1, 2, 3, 4, 5], true);
var dataset = new Dataset({
items: data
});
var top3max = new Slice({
source: dataset,
rule: 'data.value',
orderDesc: true,
limit: 3
});
console.log(top3max.getValues('data.value'));
// console> [3, 4, 5]
var obj = new DataObject({ data: { value: 123 } });
dataset.add(obj);
console.log(top3max.getValues('data.value'));
// console> [4, 5, 123]
obj.update({ value: 4.5 });
console.log(top3max.getValues('data.value'));
// console> [4, 5, 4.5]