Изменение способа сортировки

Изменение способа сортировки.

Для того чтобы получить желаемый список, нужно изменить еще две вещи. В примере при перечислении фильмов мы сортируем их по возрастанию значения свойства id. Именно оно используется в качестве keyPath для хранилища объектов movies, но в то же время очевидно, что чаще всего пользователей интересует сортировка совсем по другому значению.

С учетом этого мы в функции createdb() создали еще один индекс, SearchYear, связав его со свойством date. Этот индекс позволит упорядочить список фильмов по году производства.

Листинг 11.10. Упорядочивание по убыванию года

Function show(){

Databox. innerHTML=»;

Var transaction=db. transaction([‘movies’]);

Var objectstore=transaction. objectStore(‘movies’);

Var index=objectstore. index(‘SearchYear’);

Var newcursor=index. openCursor(null, IDBCursor. PREV);

Newcursor. addEventListener(‘success’, showlist, false);

}

Функция из листинга 11.10 заменяет собой функцию show() из кода в листинге 11.9. Эта новая функция создает транзакцию, затем связывает индекс SearchYear с используемым в транзакции хранилищем объектов и, наконец, с помощью openCursor() извлекает из хранилища объекты, у которых есть соответствующее данному индексу свойство (в нашем случае date).

Два атрибута позволяют настраивать процесс выбора и упорядочивания информации с использованием курсора. Первый атрибут определяет диапазон, в котором объекты выбираются, а значением второго может быть одна из перечисленных далее констант:

— NEXT. Возвращаемые объекты упорядочиваются по возрастанию (это значение по умолчанию);

— NEXT_NO_DUPLICATE. Возвращаемые объекты упорядочиваются по возрастанию, а дублирующиеся объекты игнорируются (в случае обнаружения повторяющихся ключевых слов возвращается только первый объект);

— PREV. Возвращаемые объекты упорядочиваются по убыванию;

— PREV_NO_DUPLICATE. Возвращаемые объекты упорядочиваются по убыванию, а дублирующиеся объекты игнорируются (в случае обнаружения повторяющихся ключевых слов возвращается только первый объект).

Благодаря указанным в листинге 11.10 атрибутам метода openCursor() функция show() возвращает список объектов хранилища, упорядоченный по убыванию даты. В качестве значения атрибута range пока что используется null. Как определить диапазон выбора значений, мы узнаем в конце этой главы.

Откройте код из листинга 11.9 и замените функцию show() новой функцией, код которой представлен в листинге 11.10.

Эта новая функция выводит на экран список фильмов, упорядочивая их по убыванию года (самые новые находятся наверху списка). Результат должен выглядеть так:

Id: tt1285016  name:  The  Social Network date:  2010

Id: tt0111161  name:  The  Shawshank Redemption  date: 1994

Id: tt0086567  name:  WarGames date: 1983

Id: tt0068646  name:  The  Godfather date: 1972

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *