shell readme
Shell-front
Проект сгенерирован с использованием Angular CLI версии 12.1.1.
Table of Contents
Install dependencies
Для установки зависимостей выполните команду с использованием пакетного менеджера yarn: yarn install
Run
Проект можно запустить в нескольких режимах:
- запуск в режиме работы с ПАИП -
yarn start
- запуск в режиме работы с ПАИП + поддержка прокси для вебсокетов -
yarn start:proxy
- запуск в режиме работы с НСИ -
yarn start-nsi
- запуск в режиме работы с НСИ + поддержка прокси для вебсокетов -
yarn start-nsi:proxy
Build
Выполните ng build
для сборки проекта.
Unit testing
Выполните ng test
для запуска unit тестов с использованием Karma.
Deploy
Внимание! Приложение поддерживает режим работы PWA.
Имеются примечания, описанные в разделе PWA
Значения по умолчанию хранятся в ./app-config/env.js
ENV
Актуальные env для контура gas.dev лежат тут:
- shell - ссылка
- shell-solar - ссылка Актуальные env для контура nsi.dev:
- shell - ссылка
- shell-solar - ссылка
Пример заполнения env
APP_PROJECT_PATH: '/shell' # путь приложения в брауере APP_DEFAULT_ROUTE: '/paip/main/authorities' # начальный путь в приложении ENABLE_PWA: 'true' # включение режима pwa PAIP_URL: 'https://gas.apps.dev.devsun.ru/shell' # Url оркестратора в контуре ПАИП NSI_URL: 'https://nsi.apps.dev.devsun.ru/shell' # Url оркестратора в контуре НСИ AUTH_DOMAIN: 'https://sso.gas.apps.dev.devsun.ru/' # адрес ССО (SSO) AUTH_CLIENT_ID: 'arm' # client_id в ССО (SSO) AUTH_CLIENT_SECRET: '' # client_secret ССО (SSO) AUTH_SCOPE: 'openid nsiAdmin dictAdmin dictOperator' # запрашиваемые scope в системе ССО (SSO) HIDDEN_NAVIGATOR_MENU_TOPICS: '' # скрытые разделы в боковом меню оркестратора MF_AUTH: 'https://auth.gas.apps.dev.devsun.ru/remoteEntry.js' # адрес микрофронта авторизации MF_NSI_HANDBOOKS: 'https://nsi.apps.dev.devsun.ru/mfe/nsi/remoteEntry.js' # адрес микрофронта НСИ MF_CAMPAIGNS: 'https://gas.apps.dev.devsun.ru/mfe/campaigns/remoteEntry.js' # адрес микрофронта кампаний MF_COMMISSIONS: 'https://gas.apps.dev.devsun.ru/mfe/commissions/remoteEntry.js' # адрес микрофронта комиссий MF_PAIP_LAW: 'https://gas.apps.dev.devsun.ru/mfe/law/remoteEntry.js' # адрес микрофронта "ПРАВО" MF_PAIP_CALENDAR: 'https://gas.apps.dev.devsun.ru/mfe/calendar/remoteEntry.js' # адрес микрофронта "Календарные планы" MF_PAIP_CERTIFICATE: 'https://gas.apps.dev.devsun.ru/mfe/certificate/remoteEntry.js' # адрес микрофронта "Удостоверения" MF_CANDIDATES: 'https://gas.apps.dev.devsun.ru/mfe/candidates/remoteEntry.js' # адрес микрофронта авторизации MF_TVD: 'https://gas.apps.dev.devsun.ru/mfe/tvd/remoteEntry.js' # адрес микрофронта "Территории и участки" MF_CARTORGAPHY: 'https://osm.gas.apps.dev.devsun.ru/remoteEntry.js' # адрес микрофронта "Картография" NSI_REGISTRY_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/registry/nsi' # адрес микросервиса НСИ PAIP_LAW_REGISTRY_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/registry/legal' # адрес микросервиса "Право" PAIP_CALENDAR_REGISTRY_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/registry/calendar' # адрес микросервиса "Календарные планы" PAIP_CERTIFICATE_REGISTRY_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/registry/certificate' # адрес микросервиса "Удостоверения" WORKFLOW_MANAGER_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/zeebe/manager' # адрес микросервиса Zeebe manager META_REGISTRY_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/registry/meta' # адрес микросервиса "Мета" FIAS_SERVICE_HOST: 'https://platform.apps.dev.devsun.ru/servicegw/fias' # адрес микросервиса "ФИАС" JOURNAL_REGISTRY_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/registry/journal' # адрес микросервиса "Журнал" NOTIFIER_GATEWAY: 'wss://gas.apps.dev.devsun.ru/servicegw/notifier/gateway' # адрес микросервиса Notifier gateway S3_URL_SIGNER: 'https://gas.apps.dev.devsun.ru/servicegw/s3urlsigner' # адрес микросервиса S3 Url signer FORMAT_CONVERTER: 'https://gas.apps.dev.devsun.ru/servicegw/format/converter' # адрес микросервиса Format Converter USERTASK_REGISTRY_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/registry/usertask' # адрес микросервиса User task ADDRESS_REGISTRY_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/registry/address' # адрес микросервиса "Адоресный справочник" ADDRESS_SEARCH_NODE_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/address/search/node' # адрес микросервиса микросервиса "Адоресный справочник" - search node CAMPAIGN_REGISTRY_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/registry/campaign/election' # адрес микросервиса Кампании COMMISSIONS_REGISTRY_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/registry/commission' # адрес микросервиса Комиссии CANDIDATE_REGISTRY_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/registry/candidate' # адрес микросервиса Кандидаты COMMISSION_MEMBER_REGISTRY_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/registry/commissionmember' # адрес микросервиса Члены избирательных комиссий (Члены ИК) TERRITORY_REGISTRY_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/registry/territory' # адрес микросервиса "Территории" RESULTS_REGISTRY_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/registry/results' # адрес микросервиса "Итоги" VOTING_FLOW_REGISTRY_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/registry/voting/flow' # адрес микросервиса Ход голосования ROLE_REGISTRY_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/registry/decision' # адрес микросервиса Ролей в выборах APOLLO_SERVER_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/graphql-federation/gateway' # адрес микросервиса Apollo federation INCIDENT_REGISTRY_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/registry/incident' # адрес микросервиса "Инциденты" STAFF_REGISTRY_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/registry/staff' # адрес микросервиса Персонал / Сотрудники REPORT_MAKER_SHIM_HOST: 'https://gas.apps.dev.devsun.ru/report-maker-shim' # адрес микросервиса Отчетов DSO_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/registry/strict/documents' # адрес микросервиса Документы строгой отчетности (ДСО) SPIEXPORTER_REGISTRY_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/registry/spiexporter' # адрес микросервиса SPIEXPORTER CARTOGRAPHY_HOST: 'https://osm-back.gas.apps.dev.devsun.ru' # Хост картографии OSM_HOST: 'https://{s}.tile.openstreetmap.org' # ОСМ Хост (для картографии) S3_URL: 'https://gas-dev.s3pgs.devsun.ru' # адрес хранилища s3 для загрузки файлов PACKAGE_REGISTRY_HOST: 'https://gas.apps.dev.devsun.ru/service/package/search/packageSearch' # адрес пакетного поиска REFERENDUM_HOST: 'https://gas.apps.dev.devsun.ru/servicegw/referendum/group/member' # адрес ендпоинта для референдума GAR_SERVICE_HOST: 'https://nsi.apps.dev.devsun.ru/service/micro-gar-service' # адрес микросервиса ГАР
Development
Хлебные крошки <a name="breadcrumbs"></a>
Для отображения используется компонент base-breadcrumbs.component.ts
, он основан на библиотеке xng-breadcrumbs
Документация библиотеки: https://udayvunnam.github.io/xng-breadcrumb/#/api
Типизация атрибута info для роутера <a name="breadcrumbs_info"></a>
в info можно указать данные для подтягивания значений из федерации Apollo, а также для подстановки значений по условию в зависимости от значения параметра роута, указанного в paramName
interface BreadcrumbInfo { /** * Название Graphql query */ query: string; /** * Название параметра в роутере, который будет подставляться в GraphQL запрос */ paramName: string; /** * Атрибуты для выборки GraphQL, котрые попадут в хлебные крошки */ labelFields: string[]; /** * Мапа подстановок типа paramName - label */ routeParamNameConditions?: IRouteParamNameCondition; } /** * Интерфейс для мапы подстановок paramName - label, где default - именование крошки по умолчанию */ interface IRouteParamNameCondition { [paramName: string]: string; default: string; }
Пример настроенного роута:
{ path: ':id', component: AuthorizedConfidantMainComponent, data: { name: 'authorized_confidant', label: 'Уполномоченное/доверенное лицо', breadcrumb: { info: { query: 'AuthorizedConfidantPersonById', paramName: ':id', labelFields: ['surname', 'name', 'patronymic'], }, }, }, }
Пример настроенного роута (статический заголовок хлебных крошек):
{ path: 'territories', component: TerritoriesListComponent, data: { breadcrumb: { label: 'Территории', }, }, }
Пример настроенного роута с использованием заполненного параметра routeParamNameConditions:
{ { path: ':incidentId', component: HandbookIncidentRequestComponent, data: { name: 'handbook_incident_request', breadcrumb: { label: 'Заявка на некорректную запись', info: { paramName: ':handbook', routeParamNameConditions: { ADDRESS: 'Заявка на некорректный адрес', default: 'Заявка на некорректную запись', }, }, }, }, }, }
Пример настроенного роута с использованием заполненного параметра URL(рест сервис):
{ { path: ':id', component: TestComponent, data: { name: 'test', breadcrumb: { label: 'Заявка на некорректную запись', info: { url: `${window.env.TEST_HOST}/:id`, // линк хоста paramName: ':id',// Имя параметра labelFields: ['name'], // Имя лейбла полученного из response хоста }, }, }, }, }
Progressive Web Application
Примечания
Приложение поддерживает режим работы PWA только в случаях, когда значение переменной APP_PROJECT_PATH
не задано:
envs: APP_PROJECT_PATH: '' # ...
Проверка работы PWA и Service Worker
Для проверки работы кэширования файлов и запросов и оффлайн работы приложения, нужно:
- Собрать проект под продакшен командой
ng build
; - Запустить сборку с помощью пакета http-server с указанием нужного порта командой:
http-server -p 4200 -c-1 dist/
- Открыть в браузере страницу по адресу: http://localhost:4200/
- Открыть devtools браузера, выбрать вкладку Application, выбрать слева в сайдбаре вкладку Service Workers и увидеть информацию о воркере, там же можно эмулировать оффлайн режим сети
- Если после запуска возникли проблемы и приложение не отображается, можно локально поменять расположение приложение с
/shell
на/
.