Общие сведения

В разделе рассматривается работа с инструментом восстановления базовых компонентов виджетов (далее – базовый компонент).

В модуле Dashboards предусмотрено 12 типов базовых компонентов:

  1. Линейчатая диаграмма (ECharts);
  2. Древовидная диаграмма (ECharts);
  3. Спидометр;
  4. Точечная диаграмма (ECharts);
  5. Паутина (ECharts);
  6. Прогресс бар (ECharts);
  7. Круговая диаграмма (ECharts);
  8. Карта OSM;
  9. Линейная диаграмма (ECharts);
  10. План/Факт;
  11. Комбинированная диаграмма;
  12. Столбчатая диаграмма (ECharts).

Особенность базовых компонентов в том, что они автоматически обновляются при обновлении приложения, если приложение содержит более свежие версии компонентов, а также всегда могут быть восстановлены из специального хранилища приложения.

Восстановление базового компонента может потребоваться в случае удаления компонента или загрузки вместо него пользовательского компонента, что тоже приводит к удалению базового компонента.

Инструмент восстанавливает базовый компонент до версии компонента, поставляемого с приложением. Таким образом, нет возможности загрузить компонент более ранней версии и сделать его базовым.

Для работы с инструментом восстановления потребуется:

  • доступ к командной строке операционной системы хоста приложения;
  • программа для работы с  СУБД PostgreSQL.

Подготовка

Необходимые приготовления для работы с инструментом восстановления.

  1. В операционной системе хоста приложения откройте контейнер сервиса Dashboards.

    В командной строке выполните:

    docker ps | grep dashboard


    В ответе скопируйте идентификатор контейнера сервиса, например, копируем «63ed8b133e1f» из строки

    63ed8b133e1f   /platform/backend/service/dashboard:stage-dbe8b637


    В командной строке выполните:

    docker exec -it идентификатор_контейнера_сервиса bash

    где идентификатор_контейнера_сервиса – скопированный выше идентификатор. В нашем примере – «63ed8b133e1f».

    В ответе вы должны увидеть командную строку оболочки контейнера. В нашем примере:

    root@63ed8b133e1f:/#

  2. В программе для работы с СУБД PostgreSQL подключитесь к СУБД приложения.

    Для подключения используйте указанные параметры postgresql из файла docker-compose.yml для вашего приложения PDTN:

    • Port: postgresql: ports;

    • Username: postgresql: environment: POSTGRES_USER;

    • Password: postgresql: environment: POSTGRES_PASSWORD;

  3. Подключившись к СУБД, откройте редактор запросов для БД platform_dashboard.

Восстановление удаленного базового компонента с заменой пользовательского компонента

При таком восстановлении базовый компонент заменяет указанный пользовательский компонент.

Обратите внимание!

  • При замене пользовательского компонента базовым, права доступа, настроенные для этого пользовательского компонента, сбрасываются.
  • Поля компонентов должны соответствовать, иначе для виджетов, которые использовали заменённый компонент, будет возвращаться ошибка «Колонка датасета отсутствует».
  1. Найдите отсутствующие базовые компоненты и установленные пользовательские компоненты.

    В редакторе запросов выполните:

    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)

  2. Скопируйте из колонки default_component_key значение ключа отсутствующего базового компонента. В примере копируем значение polymatica-dashboards-tn/bar-echarts.

  3. Восстановите отсутствующий базовый компонент с заменой пользовательского компонента.

    В командной строке оболочки контейнера выполните:

    /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.»

  4. Проверьте, что базовый компонент установлен с заменой пользовательского компонента.

    В редакторе запросов выполните запрос из шага 1. Убедитесь, что значению ключа восстанавливаемого компонента из колонки default_component_key соответствует идентификатор компонента, который заменяли на базовый.

    Компонент с идентификатором ID = 26 стал базовым

    Обратите внимание!

    Для восстановленного базового компонента, в колонке file_name и на интерфейсе приложения отображается название архива, который был использован для установки пользовательского компонента, но скачивается архив базового компонента.


    На этом шаге базовый компонент восстановлен.

Восстановление удаленного базового компонента без замены

  1. Найдите отсутствующие базовые компоненты.

    В редакторе запросов выполните:

    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)

  2. Скопируйте из колонки default_component_key значение ключа отсутствующего базового компонента. В примере копируем значение polymatica-dashboards-tn/bar-echarts.

  3. Восстановите отсутствующий базовый компонент.

    В командной строке оболочки контейнера выполните:

    /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.»

  4. Проверьте, что базовый компонент установлен.

    В редакторе запросов выполните запрос из шага 1. Убедитесь, что для значения ключа восстанавливаемого компонента из колонки default_component_key присутствуют значения (не NULL) в других колонках.

    На этом шаге базовый компонент восстановлен.

Восстановление компонента в виджете, когда компонент удален

Если компонент, который использовался в виджете, был удален из приложения, в предпросмотре такого виджета отображается ошибка «Компонент удален». Связь виджета с компонентом теряется при удалении компонента и не восстанавливается автоматически. Поэтому необходимо восстановить компонент вручную.


Компонент удалён

Обратите внимание!

Поля восстанавливаемого компонента должны соответствовать полям удаленного компонента, иначе для виджета будет возвращена ошибка «Колонка датасета отсутствует».
  1. Найдите виджеты с удаленным компонентом.

    В редакторе запросов выполните:

    SELECT id, name, component_id
    	FROM public.widget
    		WHERE component_id IS null


    Если виджеты без компонента есть в приложении, запрос вернет их список. Вам могут потребоваться идентификаторы виджетов из колонки id. (см. шаг 3b).

  2. Найдите компонент виджета, который требуется использовать для виджета с удаленным компонентом.

    В редакторе запросов выполните:

    SELECT id, name
    	FROM public.component


    Вам требуется идентификатор компонента из колонки id.

  3. Обновите поля виджетов с удаленным компонентом, выбрав один из следующих вариантов.

    1. В этом варианте запрос задаст один компонент для всех виджетов с удаленным компонентом.

      В редакторе запросов выполните:

      UPDATE public.widget
      	SET component_id = идентификатор_компонента
      		WHERE component_id IS null

      где идентификатор_компонента – идентификатор компонента из шага 2.

    2. В этом варианте запрос задаст компонент для указанного виджета с удаленным компонентом.
      Обращайте внимание на ответ к запросу: он может быть «UPDATE 0», например, в случае, когда указан идентификатор виджета для которого компонент уже задан.

      В редакторе запросов выполните:

      UPDATE public.widget
      	SET component_id = идентификатор_компонента
      		WHERE id = идентификатор_виджета AND component_id IS null

      где идентификатор_компонента – идентификатор компонента из шага 2;
            идентификатор_виджета – идентификатор_виджета из шага 1.


  4. Проверьте, что компоненты для виджетов заданы.

    В редакторе запросов выполните запрос из шага 1. Убедитесь, что запрос не возвращает списка виджетов.

    На этом шаге восстановление компонента виджета завершено. Проверьте успешность восстановления через предпросмотр виджета.

  • Нет меток