Хранение состояний при помощи Ext.state.Manager. Сохраняем пользовательские настройки интерфейса.

Хорошим тоном было бы позаботиться о пользователях и сохранять настройки их интерфейсов. Вариантов реализации такого функционала несколько, разберем один из них: хранение состояний таблиц в браузере с использованием LocalStorage.

Библиотека ExtJs уже содержит все необходимые инструменты, нам остается ими умело воспользоваться.

Для начала объявим хранилище состояний.

Отредактируем файл /js/app/system/Application.js, отвечающий за инициализацию интерфейса административной панели.

Добавим в самое начало строку:

Ext.state.Manager.setProvider(new Ext.state.LocalStorageProvider());

 

Подготовительная часть готова, осталось включить поддержку в самом интерфейсе. Открываем любой проект дизайнера интерфейса, содержащий таблицу, или создаем новый модуль, например, воспользовавшись рецептом http://dvelum.ru/cookbook_object_relations.html (Ссылки на объекты и списки объектов проще, чем вам кажется!). В нашем примере мы используем этот рецепт.

Открываем свойства таблицы:

  • stateEvents: ['columnmove', 'columnresize', 'sortchange', 'resize', 'show', 'hide'] - список событий, при которых будет сохраняться состояние интерфейса;
  • stateful: true - флаг, говорящий о том, что мы собираемся сохранять состояния;
  • stateId:’myGrid’ - любой уникальный идентификатор, который будет использоваться как ключ для хранения данных состояния.

Сохраняем проект.

Переходим в интерфейс модуля. Поменяем колонки местами, некоторые спрячем и изменим размер.

Обновим страницу.

Настройки сохранились.