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

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 {
  /**
   * Позволяет подключить внешние скрипты к рутовому приложению
   *
   * Можно указать просто строку (ссылку на скрипт) или объект,
   * содержащий 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;
  }[];
  /**
   * Настройка таб-бара
   */
  tabs?: {
    /**
     * Отображает таб-бар
     */
    visible?: boolean;
    /**
     * Устанавливает название приложения в таб-баре
     */
    appName?: string;
    /**
     * Устанавливает кастомную домашнуюю страницу
     * Пример url: /$service/$component/$route
     */
    appNameUrl?: string;
  };
  /**
   * Управление цветовой схемой
   * @deprecated
   */
  color?: {
    /**
     * Фиксирует определённую цветовую схему
     */
    scheme?: string;
    /**
     * Фиксирует светлую/тёмную тему
     */
    theme?: string;
    /**
     * Определяет тему по-умолчанию
     */
    defaultTheme?: string;
    /**
     * Определяет цветовую схему по-умолчанию
     */
    defaultScheme?: string;
  };
  /**
   * Настройка кастомных тем
   * @deprecated
   */
  themes?: {
    /**
     * Отображает название темы
     */
    name: string;
    /**
     * Устанавливает id темы
     */
    id: string;
  }[];
  /**
   * Управление схемой и темой
   */
  theme?: {
    /**
     * Фиксирует светлую/тёмную схему
     */
    scheme?: string;
    /**
     * Фиксирует определённую тему
     */
    theme?: string;
    /**
     * Определяет схему по-умолчанию
     */
    defaultScheme?: string;
    /**
     * Определяет тему по-умолчанию
     */
    defaultTheme?: string;
    /**
     * Определяет список доступных тем, включая кастомные
     */
    themes?: [
      {
        /**
         * Отображает название темы
         */
        name: string;
        /**
         * Устанавливает id темы
         */
        id: string;
      }
    ];
  };
  /**
   * Настройки сайд-бара
   */
  sidebar?: {
    /**
     * Отображает сайд-бар
     */
    visible?: boolean;
    /**
     * Отображает логотип в сайд-баре
     */
    logo?: string;
    /**
     * Отображает логотип в мобильной версии
     */
    logoSmall?: string;
    /**
     * Позволяет настраивать динамическое меню. Используйте только в dev-режиме!
     */
    dynamicMenu?: boolean;
  };
  /**
   * Настройки для панели настроек
   */
  settingsPanel?: {
    /**
     * Отображает панели настроек
     */
    visible?: boolean;
    /**
     * Отображает разделы
     */
    tabs?: {
      /**
       * Настройки основного раздела
       */
      main?: {
        /**
         * Отображает основной раздел
         */
        visible?: boolean;
        /**
         * Отображает настройку языка
         */
        showLanguage?: boolean;
        /**
         * Настройки сохранения табов
         */
        tabsSavingMode?: {
          /**
           * Отображает настройку сохранения табов
           */
          visible?: boolean;
          /**
           * Устанавливает дефолтное значение
           * localStorage - Сохранять всегда
           * sessionStorage - Сохранять в рамках сессии пользователя
           * memoryStorage - Не сохранять
           */
          default?: 'localStorage' | 'sessionStorage' | 'memoryStorage';
        },
        /**
         * Настройки аккаунта
         */
        account?: {
          /**
           * Отображает раздел аккаунта
           */
          visible?: boolean;
        };
      }
    }
  };
  /**
   * Настройки для панели настроек
   */
  settingsPanel?: {
    /**
     * Отображает панели настроек
     */
    visible?: boolean;
    /**
     * Отображает разделы
     */
    tabs?: {
      /**
       * Настройки основного раздела
       */
      main?: {
        /**
         * Отображает основной раздел
         */
        visible?: boolean;
        /**
         * Отображает настройку языка
         */
        showLanguage?: boolean;
        /**
         * Настройки сохранения табов
         */
        tabsSavingMode?: {
          /**
           * Отображает настройку сохранения табов
           */
          visible?: boolean;
          /**
           * Устанавливает дефолтное значение
           * localStorage - Сохранять всегда
           * sessionStorage - Сохранять в рамках сессии пользователя
           * memoryStorage - Не сохранять
           */
          default?: 'localStorage' | 'sessionStorage' | 'memoryStorage';
        }
      },
      /**
       * Настройки аккаунта
       */
      account?: {
        /**
         * Отображает раздел аккаунта
         */
        visible?: boolean;
      };
    }
  };
  /**
   * Настройки формы авторизации
   */
  loginForm?: {
    /**
     * Нужна ли авторизация в приложении
     */
    visible?: boolean;
    /**
     * Устанавливает значение свойства CSS background для фона формы авторизации
     */
    background?: string;
    /**
     * Устанавливает логотип на форме авторизации
     */
    logo?: string;
    /**
     * Устанавливает информацию о пользователе на панеле табов (правый верхний угол приложения)
     */
    showInTabs?: boolean;
  };
  /**
   * Настройки бандл-лоадера
   */
  bundleLoader?: {
    /**
     * Устанавливает URL-паттерн для загрузки проект.
     * Переменные паттерна:
     * * $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;
  /**
   * Конфигурирование QPermissionsModule
   */
  permissions?: {
    /**
     * Базовый адрес API
     * По умолчанию /api
     */
    baseUrl?: string;
    /**
     * Адрес RBAC-гейтвея
     */
    rbacPolicyUrl?: string;
    /**
     * Адреса для ABAC-гейтвеев
     */
    abacPolicyUrl?: {
      /**
       * Объекты доступа
       */
      objects?: string;
      /**
       * Проверка прав текущего пользователя
       */
      checkrights?: string;
    };
  };
  /**
    * Настройки ядра
    */
  common?: {
      /**
        * Настройки системы обработки больших чисел
        */
      bigNumbers?: {
          /**
           * Включает автоматическую конвертацию в HTTP-запросах и ответах больших чисел без потерь.
           *
           * Если в ответе на запрос встречается число больше `Number.MAX_SAFE_INTEGER`, оно будет преобразовано в тип `QBigInt`.
           * Если в запросе встречается тип `QBigInt`, оно будет преобразовано в число без кавычек.
           *
           * @default false
           */
          autoConvert?: boolean;
      }
  }
}

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

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

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

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