Рутовое приложение
Конфигурация

config.json

Общее описание

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

При создании проекта доступны 3 файла конфигурации:config.base.json,config.prod.jsonиconfig.local.json. При старте приложения, в зависимости от окружения, рутовое приложение загружает два конфига. В production-режиме рутовое приложение сделает запрос на загрузкуconfig.base.jsonиconfig.prod.json, а после загрузки объединит их в один объект.

Интерфейс конфигурации находится в@diasoft/qpalette-core.

export class QConfig {
  /**
   * Одностраничный самостоятельный режим, где один созданный q-web-component коннектится с рутовым через события.
   */
  singlePageMode?: boolean;
  /**
   * Список PBC, подключенных к этому рутовому приложению.
   */
  pbcList?: string[];
  /**
   * Включает использование компонента обратной связи.
   */
  feedback?: boolean;
  /**
   * Позволяет подключить внешние скрипты к рутовому приложению.
   *
   * Можно указать просто строку (ссылку на скрипт) или объект,
   * содержащий src (ссылку на скрипт) и объект data, содержащий data-атрибуты.
   */
  scripts?: (
    | {
    src: string;
    data?: {
      [k: string]: string | number | boolean;
    };
  }
    | string
    )[];
  /**
   * Позволяет подключить внешние виджеты (плагины) к рутовому приложению.
   */
  plugins?: {
    /**
     * Название сервиса.
     */
    service: string;
    /**
     * Название компонента.
     */
    component: string;
    /**
     * Маршрут по умолчанию.
     */
    route?: string;
    /**
     * Иконка.
     * @example: "pi-book", "qi-skype".
     */
    icon?: string;
    /**
     * Открывать после загрузки?
     */
    opened?: boolean;
    /**
     * Загрузка плагина происходит с инициализацией приложения.
     */
    initWithApp?: boolean;
    /**
     * Наименование плагина.
     */
    caption?: string;
  }[];
  /**
   * Настройка таб-бара.
   */
  tabs?: {
    /**
     * Отображает таб-бар.
     */
    visible?: boolean;
    /**
     * Устанавливает название приложения в таб-баре.
     */
    appName?: string;
    /**
     * Устанавливает кастомную домашнуюю страницу.
     */
    appNameUrl?: string;
    /**
     * Отображает логотип.
     */
    logo?: string;
    /**
     * Отображает название для версии приложения.
     */
    versionNameVisible?: boolean;
    /**
     * Устанавливает название для версии приложения.
     */
    versionName?: string;
  };
  /**
   * Управление схемой и темой.
   */
  theme?: {
    /**
     * Фиксирует светлую/тёмную схему.
     */
    scheme?: string;
    /**
     * Фиксирует определённую тему.
     */
    theme?: string;
    /**
     * Определяет схему по-умолчанию.
     */
    defaultScheme?: string;
    /**
     * Определяет тему по-умолчанию.
     */
    defaultTheme?: string;
    /**
     * Определяет список доступных тем, включая кастомные.
     */
    themes?: {
      /**
       * Отображает название темы.
       */
      name: string;
      /**
       * Устанавливает id темы.
       */
      id: string;
      /**
       * Устанавливает тип темы.
       */
      type?: string;
    }[];
  };
  /**
   * Настройки сайд-бара.
   */
  sidebar?: {
    /**
     * Отображает сайд-бар.
     */
    visible?: boolean;
    /**
     * Позволяет настраивать динамическое меню. Используйте только в dev-режиме!
     */
    dynamicMenu?: boolean;
    /**
     * Позволяет добавлять пункты меню в "Избранное".
     */
    favorites?: boolean | {
      /**
       * Позволяет добавлять пункты меню в "Избранное".
       */
      visible: boolean;
      /**
       * Отображает родительскую группу при инициализации приложения.
       * @default false
       */
      showParentGroupOnInit: boolean;
    };
  };
  /**
   * Настройки для панели настроек.
   */
  settingsPanel?: {
    /**
     * Отображает панели настроек.
     */
    visible?: boolean;
    /**
     * Отображает разделы.
     */
    tabs?: {
      /**
       * Настройки основного раздела.
       */
      main?: {
        /**
         * Отображает основной раздел.
         */
        visible?: boolean;
        /**
         * Отображает настройку языка.
         */
        showLanguage?: boolean;
        /**
         * Настройки сохранения табов.
         */
        tabsSavingMode?: {
          /**
           * Отображает настройку сохранения табов.
           */
          visible?: boolean;
          /**
           * Устанавливает дефолтное значение
           * Только для случая, когда скрыта панель настроек или соответсвующий блок в настройках
           * @param localStorage Сохранять всегда.
           * @param sessionStorage Сохранять в рамках сессии пользователя.
           * @param memoryStorage Не сохранять.
           */
          default?: 'localStorage' | 'sessionStorage' | 'memoryStorage';
        }
        /**
         * Отображает настройку группировки вкладок.
         */
        showTabsGroupingMode?: boolean;
      },
      /**
       * Настройки аккаунта
       */
      account?: {
        /**
         * Отображает раздел аккаунта
         */
        visible?: boolean;
      };
      /**
       * Настройки для раздела "Другое".
       */
      other?: {
        /**
         * Отображает раздел.
         */
        visible?: boolean;
        /**
         * Настройка отображения кнопки включения проксирования и динамического меню.
         */
        showDynamicMenu?: boolean;
        /**
         * Настройка отображения кнопки для запуска визуального тура.
         */
        showUiTour?: boolean;
      };
    }
  };
  /**
   * Настройка приветственного окна после успешной авторизации
   */
  welcomeDialog?: {
    /**
     * Флаг видимости
     */
    visible: boolean;
    /**
     * Данные шапки
     *
     * @property {string | null} imageUrl Картинка (по умолчанию картинка DigitalQ)
     * @property {string | null} text Стандартный текст-заголовок
     */
    logo?: {
      imageUrl: string | null;
      text: string | null;
    };
    /**
     * Данные тела
     *
     * @property {string} title Заголовок
     * @property {string} text Произвольный контент, можно передать html-строку.
     * Для отображения данных пользователя необходимо передать переменную из интерфейса WelcomeDialogTemplateVariables
     */
   content?: {
      title: string;
      text: string;
    };
  };
  /**
   * Настройки формы авторизации
   */
  loginForm?: {
    /**
     * Нужна ли авторизация в приложении
     */
    visible?: boolean;
    /**
     * Устанавливает значение свойства CSS background для фона формы авторизации
     */
    background?: string;
    /**
     * Устанавливает логотип на форме авторизации, по умолчанию DigitalQ
     */
    logo?: string;
    /**
     * Отображение заголовка, по умолчанию "Авторизация", выключается пустой строкой
     */
    title?: string;
    /**
     * Отображение кнопки "Зарегистрироваться"
     */
    registration?: boolean;
    /**
     * Отображение текста "Пароль выдается администратором ресурса", по умолчанию true
     */
    passwordHelpText?: boolean;
    /**
     * Тип идентификации пользователя, по умолчанию "login"
     */
    usernameType?: 'email' | 'phone' | 'login';
    /**
     * Устанавливает информацию о пользователе
     */
    userInfo?: {
      /**
       * Устанавливает логин или полное имя пользователе на панеле табов (правый верхний угол приложения)
       */
      showInTabs?: boolean;
      /**
       * Устанавливает полное имя пользователе
       */
      fullName?: boolean;
    };
  };
  /**
   * Конфигурирование QPermissionsModule
   */
  permissions?: {
    /**
     * Включение проверки прав в приложении
     */
    enable?: boolean;
    /**
     * Базовый адрес API
     * По умолчанию /api
     */
    baseUrl?: string;
    /**
     * Адрес RBAC-гейтвея
     */
    rbacPolicyUrl?: string;
    /**
     * Адреса для ABAC-гейтвеев
     */
    abacPolicyUrl?: {
      /**
       * Объекты доступа
       */
      objects?: string;
      /**
       * Проверка прав текущего пользователя
       */
      checkrights?: string;
    };
  };
  /**
   * Настройки бандл-лоадера
   */
  bundleLoader?: {
    /**
     * Устанавливает URL-паттерн для загрузки PBC.
     * Переменные паттерна:
     * * $port - устанавливает текущий порт
     * * $protocol - устанавливает текущий протокол
     * * $domain - устанавливает текущий домен
     * * $service - устанавливает сервис текущего веб-компонента
     * * $component - устанавливает название текущего веб-компонента
     *
     * @example
     * $protocol://$domain:$port/$service/$component/main.js
     */
    bundleUrl?: string;
  };
  /**
   * Настройки виджет-лоадера
   */
  widgetLoader?: {
    /**
     * Устанавливает URL-паттерн для загрузки виджетов
     *
     * @example
     * $protocol://$domain:$port/$service/widgets/$component/main.js
     */
    bundleUrl?: string;
  };
  widgets?: {
    bundleUrl?: string;
  };
  /**
   * Паттерн базового URL для API
   */
  apiBaseUrl?: string;
  /**
   * Параметры модуля авторизации
   */
  auth?: any;
  /**
   * Список стендов и их типов
   */
  stands?: {
    type: 'Dev' | 'Master' | string;
    url: string
  }[];
  /**
   * Настройки ядра
   */
  common?: {
      /**
       * Настройки системы обработки больших чисел
       */
      bigNumbers?: {
          /**
           * Включает автоматическую конвертацию в HTTP-запросах и ответах больших чисел без потерь.
           *
           * Если в ответе на запрос встречается число больше `Number.MAX_SAFE_INTEGER`, оно будет преобразовано в тип `QBigInt`.
           * Если в запросе встречается тип `QBigInt`, оно будет преобразовано в число без кавычек.
           *
           * @default false
           */
          autoConvert?: boolean;
      }
  };
}

Описаниеauth- см. объект конфигурации модуля QAuthModule.

ОписаниеbundleUrlиapiBaseUrl- см. раздел "Об URL паттернах" в объекте конфигурации модуля QUrlService.

Подробнее о настройке темизации см. в Темизация приложения.

Описание настроек common.bigNumbers – см. в статье.