Общие сведения
В разделе рассматривается работа с инструментом восстановления базовых компонентов виджетов (далее – базовый компонент).
В модуле Dashboards предусмотрено 12 типов базовых компонентов:
- Линейчатая диаграмма (ECharts);
- Древовидная диаграмма (ECharts);
- Спидометр;
- Точечная диаграмма (ECharts);
- Паутина (ECharts);
- Прогресс бар (ECharts);
- Круговая диаграмма (ECharts);
- Карта OSM;
- Линейная диаграмма (ECharts);
- План/Факт;
- Комбинированная диаграмма;
- Столбчатая диаграмма (ECharts).
Особенность базовых компонентов в том, что они автоматически обновляются при обновлении приложения, если приложение содержит более свежие версии компонентов, а также всегда могут быть восстановлены из специального хранилища приложения.
Восстановление базового компонента может потребоваться в случае удаления компонента или загрузки вместо него пользовательского компонента, что тоже приводит к удалению базового компонента.
Инструмент восстанавливает базовый компонент до версии компонента, поставляемого с приложением. Таким образом, нет возможности загрузить компонент более ранней версии и сделать его базовым.
Для работы с инструментом восстановления потребуется:
- доступ к командной строке операционной системы хоста приложения;
- программа для работы с СУБД PostgreSQL.
Подготовка
Необходимые приготовления для работы с инструментом восстановления.
- В операционной системе хоста приложения откройте контейнер сервиса Dashboards. 
 В командной строке выполните:- docker ps | grep dashboard 
 В ответе скопируйте идентификатор контейнера сервиса, например, копируем «63ed8b133e1f» из строки- 63ed8b133e1f /platform/backend/service/dashboard:stage-dbe8b637 
 В командной строке выполните:- docker exec -it идентификатор_контейнера_сервиса bash - где идентификатор_контейнера_сервиса – скопированный выше идентификатор. В нашем примере – «63ed8b133e1f». 
 В ответе вы должны увидеть командную строку оболочки контейнера. В нашем примере:- root@63ed8b133e1f:/# - — 
- В программе для работы с СУБД PostgreSQL подключитесь к СУБД приложения. 
 Для подключения используйте указанные параметры postgresql из файла docker-compose.yml для вашего приложения PDTN:- Port: postgresql: ports; 
- Username: postgresql: environment: POSTGRES_USER; 
- Password: postgresql: environment: POSTGRES_PASSWORD; 
 
- Подключившись к СУБД, откройте редактор запросов для БД platform_dashboard.
Восстановление удаленного базового компонента с заменой пользовательского компонента
При таком восстановлении базовый компонент заменяет указанный пользовательский компонент.
Обратите внимание!
- При замене пользовательского компонента базовым, права доступа, настроенные для этого пользовательского компонента, сбрасываются.
- Поля компонентов должны соответствовать, иначе для виджетов, которые использовали заменённый компонент, будет возвращаться ошибка «Колонка датасета отсутствует».
- Найдите отсутствующие базовые компоненты и установленные пользовательские компоненты.В редакторе запросов выполните: SELECT default_component_key, id, name, is_default_component, default_component_ref, file_name FROM public.component FULL OUTER JOIN public.default_components_ref ON component.default_component_ref=default_components_ref.default_component_key
 Если какой-либо из базовых компонентов не установлен в приложении, то для значения ключа такого компонента из колонки default_component_key будут отсутствовать значения (NULL) в остальных колонках, а для установленных пользовательских компонентов, наоборот, будут отсутствовать значения в колонке default_component_key. Например:Компонент с типом bar-echarts (строка 1) не установлен, а компонент с ID = 26 (строка 13) пользовательский
 Соответствие ключей типам базовых компонентов см. в таблице ниже.Ключ Тип компонента polymatica-dashboards-tn/treediagram-echarts Древовидная диаграмма (ECharts) polymatica-dashboards-tn/speedometer-echarts Спидометр polymatica-dashboards-tn/scatter-echarts Точечная диаграмма (ECharts) polymatica-dashboards-tn/radar-echarts Паутина (ECharts) polymatica-dashboards-tn/progress-bar Прогресс бар (ECharts) polymatica-dashboards-tn/pie-basic-echarts Круговая диаграмма (ECharts) polymatica-dashboards-tn/map Карта OSM polymatica-dashboards-tn/linear-basic-echarts Линейная диаграмма (ECharts) polymatica-dashboards-tn/indicator-plan-fact План/Факт polymatica-dashboards-tn/combo-linear-column-echarts Комбинированная диаграмма polymatica-dashboards-tn/column-basic-echarts Столбчатая диаграмма (ECharts) polymatica-dashboards-tn/bar-echarts Линейчатая диаграмма (ECharts) — 
- Скопируйте из колонки default_component_key значение ключа отсутствующего базового компонента. В примере копируем значение polymatica-dashboards-tn/bar-echarts.
- Восстановите отсутствующий базовый компонент с заменой пользовательского компонента. 
 В командной строке оболочки контейнера выполните:- /usr/bin/polymatica-platform-dashboards restore-default-component скопированное_значение --overwrite-component-id=идентификатор_пользовательского_компонента - где скопированное_значение – значение ключа отсутствующего компонента, в нашем примере – «polymatica-dashboards-tn/bar-echarts.»; 
 идентификатор_пользовательского_компонента – идентификатор компонента, который заменяется на базовый компонент, в нашем примере – 26.
 По выполнении команды последним выведенным сообщением должно быть:- logLevel=info message="Default component скопированное_значение restore complete - где скопированное_значение – значение ключа восстанавливаемого компонента. В нашем примере – «polymatica-dashboards-tn/bar-echarts.» 
- Проверьте, что базовый компонент установлен с заменой пользовательского компонента. 
 В редакторе запросов выполните запрос из шага 1. Убедитесь, что значению ключа восстанавливаемого компонента из колонки default_component_key соответствует идентификатор компонента, который заменяли на базовый.Компонент с идентификатором ID = 26 стал базовым- — - Обратите внимание! - Для восстановленного базового компонента, в колонке file_name и на интерфейсе приложения отображается название архива, который был использован для установки пользовательского компонента, но скачивается архив базового компонента. 
 На этом шаге базовый компонент восстановлен.
Восстановление удаленного базового компонента без замены
- Найдите отсутствующие базовые компоненты. 
 В редакторе запросов выполните:- SELECT default_component_key, id, name, is_default_component, default_component_ref, file_name FROM public.component RIGHT JOIN public.default_components_ref ON component.default_component_ref=default_components_ref.default_component_key
 Если какой-либо из базовых компонентов не установлен в приложении, то для значения ключа такого компонента из колонки default_component_key будут отсутствовать значения (NULL) в остальных колонках. Например:Компонент с типом bar-echarts (строка 1) не установлен
 Соответствие ключей типам базовых компонентов см. в таблице ниже.- Ключ - Тип компонента - polymatica-dashboards-tn/treediagram-echarts - Древовидная диаграмма (ECharts) - polymatica-dashboards-tn/speedometer-echarts - Спидометр - polymatica-dashboards-tn/scatter-echarts - Точечная диаграмма (ECharts) - polymatica-dashboards-tn/radar-echarts - Паутина (ECharts) - polymatica-dashboards-tn/progress-bar - Прогресс бар (ECharts) - polymatica-dashboards-tn/pie-basic-echarts - Круговая диаграмма (ECharts) - polymatica-dashboards-tn/map - Карта OSM - polymatica-dashboards-tn/linear-basic-echarts - Линейная диаграмма (ECharts) - polymatica-dashboards-tn/indicator-plan-fact - План/Факт - polymatica-dashboards-tn/combo-linear-column-echarts - Комбинированная диаграмма - polymatica-dashboards-tn/column-basic-echarts - Столбчатая диаграмма (ECharts) - polymatica-dashboards-tn/bar-echarts - Линейчатая диаграмма (ECharts) - — 
- Скопируйте из колонки default_component_key значение ключа отсутствующего базового компонента. В примере копируем значение polymatica-dashboards-tn/bar-echarts.
- Восстановите отсутствующий базовый компонент. 
 В командной строке оболочки контейнера выполните:- /usr/bin/polymatica-platform-dashboards restore-default-component скопированное_значение - где скопированное_значение – значение ключа отсутствующего компонента. В нашем примере – «polymatica-dashboards-tn/bar-echarts.» 
 По выполнении команды последним выведенным сообщением должно быть:- logLevel=info message="Default component скопированное_значение restore complete - где скопированное_значение – значение ключа восстанавливаемого компонента. В нашем примере – «polymatica-dashboards-tn/bar-echarts.» 
- Проверьте, что базовый компонент установлен.
 В редакторе запросов выполните запрос из шага 1. Убедитесь, что для значения ключа восстанавливаемого компонента из колонки default_component_key присутствуют значения (не NULL) в других колонках.
 На этом шаге базовый компонент восстановлен.
Восстановление компонента в виджете, когда компонент удален
Если компонент, который использовался в виджете, был удален из приложения, в предпросмотре такого виджета отображается ошибка «Компонент удален». Связь виджета с компонентом теряется при удалении компонента и не восстанавливается автоматически. Поэтому необходимо восстановить компонент вручную.
—
Обратите внимание!
- Найдите виджеты с удаленным компонентом. 
 В редакторе запросов выполните:- SELECT id, name, component_id FROM public.widget WHERE component_id IS null 
 Если виджеты без компонента есть в приложении, запрос вернет их список. Вам могут потребоваться идентификаторы виджетов из колонки id. (см. шаг 3b).
- Найдите компонент виджета, который требуется использовать для виджета с удаленным компонентом. 
 В редакторе запросов выполните:- SELECT id, name FROM public.component 
 Вам требуется идентификатор компонента из колонки id.
- Обновите поля виджетов с удаленным компонентом, выбрав один из следующих вариантов. - В этом варианте запрос задаст один компонент для всех виджетов с удаленным компонентом. 
 В редакторе запросов выполните:- UPDATE public.widget SET component_id = идентификатор_компонента WHERE component_id IS null - где идентификатор_компонента – идентификатор компонента из шага 2. 
- В этом варианте запрос задаст компонент для указанного виджета с удаленным компонентом. 
 Обращайте внимание на ответ к запросу: он может быть «UPDATE 0», например, в случае, когда указан идентификатор виджета для которого компонент уже задан.
 В редакторе запросов выполните:- UPDATE public.widget SET component_id = идентификатор_компонента WHERE id = идентификатор_виджета AND component_id IS null - где идентификатор_компонента – идентификатор компонента из шага 2; 
 идентификатор_виджета – идентификатор_виджета из шага 1.
 
- Проверьте, что компоненты для виджетов заданы.
 В редакторе запросов выполните запрос из шага 1. Убедитесь, что запрос не возвращает списка виджетов.
 На этом шаге восстановление компонента виджета завершено. Проверьте успешность восстановления через предпросмотр виджета.



