Offline

  • Indexeddb
  • Dexie

Для реализации offline-режима в процессе генерации используется blueprint flexberry-application-offline. Данный blueprint запускает генерацию необходимых для offline-режима сервисов, адаптеров и сериализаторов на основе метаданных. Перечисленные компоненты создаются в дополнение к основным.

К offline-сервисам относятся:

  • offline-globals - реализует активацию режима offline и получение схемы offline-базы данных;
  • store - в котором задается схема offline-базы данных, полученная из offline-globals.

Адаптеры и сериализаторы генерируются для каждой модели, полученной из метаданных.

Перед генерацией следует убедиться, что в репозитории свежие метаданные. В противном случае может возникнуть ошибка парсинга модели. Свежие метаданные нужно сгенерировать через Flexberry Designer и положить в папку vendor/flexberry.

Команда запуска генерации:

уmber generate flexberry-application-offline app --enable-offline --metadata-dir="путь к метаданным" --skip-confirmation

Параметр --enable-offline означает, что offline-режим для приложения будет активирован по умолчанию. В случае вызова генерации без данного флага будут созданы необходимые компоненты, но сам режим по умолчанию будет выключен.

Включение офлайн режима

Для включения offline-режима нужно:

  • выключить флаг setOnlineAvailable; для этого требуется переопределить offline-globals в tests/dummy/app/services/offline-globals.js следующим образом:
      import OfflineGlobals from 'ember-flexberry-gis/services/offline-globals';
      export default OfflineGlobals.extend({
        init() {
          this._super(...arguments);
          this.setOnlineAvailable(false);
        }
      });
  • в addon/services/local-storage.js проставить флаг available: true
  • в environment.js проставить флаг config.APP.offline.offlineEnabled = true

После этого при запуске приложения должна появиться offline-БД (можно увидеть в хроме во вкладке Application и слева найти IndexedDB) и запросы к бэку не должны посылаться.