Основная информация о resolver-е.

Описание

Resolver с помощью сервиса device из ember-flexberry который использует библиотеку devicejs определяет устройство, на котором запущено приложение (iOS/Android/Windows), его тип (phone/tablet/tv) и положение экрана (portrait/landscape) и в зависимости от этой информации ищет ресурсы приложения (шаблоны, классы и прочее).

Определение resolver-а в приложении

Для использования ресовера в приложении необходимо:

  • в корне приложения создать файл resolver.js и определить в нем нужный resolver: export { default } from 'ember-flexberry/resolver'; пример определения на ember стенде
  • и подключить его в корне приложения в файле app.js:
import Ember from 'ember';
import Resolver from 'ember-flexberry/resolver';

let App = Ember.Application.extend({
  Resolver: Resolver
});

export default App;

пример подключения на ember стенде

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

  • templates/ipad-landscape/my-form.hbs - шаблон для ipad-ов при горизонтальной ориентации экрана
  • templates/ipad-portrait/my-form.hbs - шаблон для ipad-ов при портретной ориентации экрана
  • templates/ipad/my-form.hbs - шаблон для ipad-ов, который будет использован при любой ориентации экрана (если шаблоны под ipad-landscape или ipad-portrait не заданы)

  • templates/iphone-landscape/my-form.hbs - шаблон для iphon-ов при горизонтальной ориентации экрана
  • templates/iphone-portrait/my-form.hbs - шаблон для iphone-ов при портретной ориентации экрана
  • templates/ipone/my-form.hbs - шаблон для iphone-ов, который будет использован при любой ориентации экрана (если шаблоны под iphone-landscape или iphone-portrait не заданы)

  • templates/android-tablet-landscape/my-form.hbs - шаблон для android-планшетов при горизонтальной ориентации экрана
  • templates/android-tablet-portrait/my-form.hbs - шаблон для android-планшетов при портретной ориентации экрана
  • templates/android-tablet/my-form.hbs - шаблон для android-планшетов, который будет использован при любой ориентации экрана (если шаблоны под android-tablet-landscape или android-tablet-portrait не заданы)

  • templates/android-phone-landscape/my-form.hbs - шаблон для android-телефонов при горизонтальной ориентации экрана
  • templates/android-phone-portrait/my-form.hbs - шаблон для android-телефонов при портретной ориентации экрана
  • templates/android-phone/my-form.hbs - шаблон для android-телефонов, который будет использован при любой ориентации экрана (если шаблоны под android-phone-landscape или android-phone-portrait не заданы)

  • templates/windows-tablet-landscape/my-form.hbs - шаблон для windows-планшетов при горизонтальной ориентации экрана
  • templates/windows-tablet-portrait/my-form.hbs - шаблон для windows-планшетов при портретной ориентации экрана
  • templates/windows-tablet/my-form.hbs - шаблон для windows-планшетов, который будет использован при любой ориентации экрана (если шаблоны под windows-tablet-landscape или windows-tablet-portrait не заданы)

  • templates/windows-phone-landscape/my-form.hbs - шаблон для windows-телефонов при горизонтальной ориентации экрана
  • templates/windows-phone-portrait/my-form.hbs - шаблон для windows-телефонов при портретной ориентации экрана
  • templates/windows-phone/my-form.hbs - шаблон для windows-телефонов, который будет использован при любой ориентации экрана (если шаблоны под windows-phone-landscape или windows-phone-portrait не заданы)

  • templates/tablet-landscape/my-form.hbs - шаблон для планшетов (на любой платформе) при горизонтальной ориентации экрана
  • templates/tablet-portrait/my-form.hbs - шаблон для планшетов (на любой платформе) при портретной ориентации экрана
  • templates/tablet/my-form.hbs - шаблон для планшетов (на любой платформе), который будет использован при любой ориентации экрана (если шаблоны под tablet-landscape или tablet-portrait не заданы)

  • templates/phone-landscape/my-form.hbs - шаблон для телефонов (на любой платформе) при горизонтальной ориентации экрана
  • templates/phone-portrait/my-form.hbs - шаблон для телефонов (на любой платформе) при портретной ориентации экрана
  • templates/phone/my-form.hbs - шаблон для телефонов (на любой платформе), который будет использован при любой ориентации экрана (если шаблоны под tablet-landscape или tablet-portrait не заданы)

  • templates/mobile/my-form.hbs - шаблон для любых мобильных устройств (телефонов или планшетов) работающих на любой платформе, который будет использован, если не заданы более подходящие шаблоны под текущий тип, платформу, ориентацию устройства

  • templates/tv/my-form.hbs - шаблон для телевизоров (на любой платформе)

  • templates/my-form.nbs - стандартный шаблон формы (который будет использован в самую последнюю очередь, если под текущее устройство не найдено ни одного подходящего “устройство-специфичного” шаблона)

Дополнительные настройки

Эти настройки resolver-a, позволяют ограничить его варианты перебора каталогов до минимума:

  • resolveWithoutDeviceTypeDetection позволяет задать конкретные ресурсы, которые не нужно искать в зависимости от устройства (конкретный компонент, конкретный сервис, и т.п.).

Задать настройку можно в конфиге (config\environment.js) следующим образом:

APP: {
    resolveWithoutDeviceTypeDetection: [
          'component:object-list-view',
          'component:object-list-view-row',
          'template:components/object-list-view',
          'template:components/object-list-view-row',
      ],
    }

По умолчанию: resolveWithoutDeviceTypeDetection: undefined

  • deviceRelatedTypes - задает перечень устройство-зависимых типов ресурсов (по умолчанию это компоненты, шаблоны и представления).

Изменить настройку можно в прикладном resolver.js унаследовав его от ember-flexberry/resolver и переопределив в нем этот массив deviceRelatedTypes:

import Resolver from 'ember-flexberry/resolver';

export default Resolver.extend({
  deviceRelatedTypes: [
    'template',
    'controller'
  ],
});

По умолчанию: deviceRelatedTypes: ['component', 'template', 'view']