Advertisement
crutch12

Untitled

Mar 16th, 2021
275
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.11 KB | None | 0 0
  1. # Оценка по vue плагину для p3db плагина (сейчас на angular - https://github.com/NEOLANT-Service/ns_pluginExample/blob/master/NsPluginExample/frontend/angular/my-app/libs/Models/components/viewer3d/viewer3d.component.html)
  2.  
  3. Судя по всему это какой-то внутренний плагин неоланта, написанный под ActiveX (Microsoft ActiveX controls), а <object> элемент как раз поддерживает:
  4. - run Java applets
  5. - run Microsoft ActiveX controls
  6. - display Flash movies
  7. - ...
  8.  
  9. Немного текста зачем это нужно:
  10. ```
  11. http://www.neolant.ru/press-center/aboutus/news_detail.php?ID=1060&sphrase_id=252525
  12.  
  13. Модуль конвертации и просмотра 3D моделей
  14. Модуль просмотра 3D моделей реализован посредством программного комплекса для визуализации и интерактивной навигации 3D моделей и 2D чертежей P3DB Navigator.
  15. Он позволяет работать практически со всеми форматамиданных, используемыми в САПР-продуктах нефтегазовой отрасли.
  16. Среди них: Intergraph SmartPlant 3D, PDS, AVEVA PDMS, Bentley Microstation, Autodesk Plant 3D. Таким образом, достигается гибкость в создании ИС, так как в нее можно импортировать 3D модели из разных САПР.
  17. ```
  18.  
  19. ## Структура компонентов
  20.  
  21. <app>
  22. <app-login /> # авторизация
  23.  
  24. <models-section>
  25. <app-models-tree # дерево с выбором моделей
  26. <app-viewer3d-file-list # список файлов
  27.  
  28. <app-viewer3d-toolbox # кнопочки для управления viewer3d
  29. <app-viewer3d # компонент, который инциализирует плагин P3DB (_viewer3dService.getPluginInstance)
  30. </models-section>
  31. </app>
  32.  
  33. ### viewer3d-file-list
  34.  
  35. Показывает файлы, которые достаёт из
  36. ```
  37. this.pluginInstance.SceneGetFiles()
  38. ```
  39.  
  40. ### viewer3d-toolbox
  41.  
  42. Хранит в себе массив кнопочек, нажатие по которым дёргает действия в компоненте Viewer3d
  43.  
  44. Пример кнопки:
  45. ```
  46. {
  47. name: 'removeFiles',
  48. icon: 'mdi mdi-playlist-minus mdi-24px',
  49. title: 'Удалить из сцены ...'
  50. },
  51. ```
  52.  
  53. ### viewer3d
  54.  
  55. Главные компонент для отображения моделей - viewer3d
  56.  
  57. Плагин подключается через тэг <object>
  58.  
  59. Для работы с моделями нужна авторизация
  60.  
  61. Проверяет какой это браузер (ie/edge)
  62. ```
  63. _pluginAvailableService.isAvailable
  64. ```
  65.  
  66. Инициализирует плагин
  67. ```
  68. _viewer3dService.getPluginInstance // создание
  69.  
  70. _pluginWrapper = new P3DBPluginWrapper // обёртка
  71. ```
  72.  
  73. Дальше идёт какая-то магия, которую я пока не понял - как angular связывается с методами плагина - судя по всему через P3DBPluginWrapper
  74.  
  75. ### Авторизация
  76.  
  77. Компонент <app-login>, рядом с ним несколько сервисов для авторизации
  78.  
  79. ## Сервисы
  80.  
  81. ### Viewer3dService (P3DBPluginService) (p3dbplugin/p3dbplugin.service.ts)
  82.  
  83. Главный метод - getPluginInstance
  84.  
  85. #### getPluginInstance
  86.  
  87. При вызове достаёт из кэша соданный плагин либо вызывает createPluginInstance
  88.  
  89. #### createPluginInstance
  90.  
  91. Инциализирует плагин:
  92. 1) создаёт <object>
  93. 2) напихивает в него <param> теги (лицензия и прочие)
  94. 3) добавляет на него обработчики (например ContextMenuCommandExecuted)
  95.  
  96. ## Итого
  97.  
  98. ### Что нужно сделать
  99. - авторизация для p3db
  100. - инициализация p3db плагина с использованием конфига с апишки
  101. - получение моделей/контента моделей
  102. - работа с плагином (кнопочки)
  103.  
  104. ### Файлы, которые можно брать +- как есть:
  105.  
  106. libs/Models/types/**/*.ts # основной набор методов и типов для работы с p3db
  107.  
  108. ### Файлы, которые нужно дописывать:
  109.  
  110. libs/Models/services/backend/*.ts # запросы за настройками и моделями
  111. libs/Models/services/cache/*.ts # хитрые кэширования плагина
  112.  
  113. libs/Models/services/p3dbplugin/p3dbplugin.service.ts # иницализация плагина
  114. libs/Models/services/p3dbplugin/p3dbplugin-auth.service.ts # авторизация для загрузки сцены
  115. libs/Models/services/p3dbplugin/p3dbplugin-available.service.ts # проверка на браузер
  116.  
  117. libs/Models/components/viewer3d/plugin/plugin-intsance.ts # здесь ещё пачка методов и типов для p3db
  118. libs/Models/components/viewer3d/plugin/**/*.ts
  119.  
  120. ### Файлы, которые нужно переписывать:
  121.  
  122. libs/Models/components/**/* # angular компоненты для моделей
  123. libs/Security/**/* # авторизация
  124.  
  125. ## Ответы на вопросы (оценка)
  126.  
  127. 1) сколько займет завести этот плагин на вью
  128. 2) кто этим может заняться
  129. 3) сколько бы ТЫ бабок был готов за это заплатить
  130.  
  131. 1) Одна рабочая неделя с учётом настроенного окружения и возможности задать вопрос по работе плагина и его конфигурации.
  132. Ден сделает дня за 3. Антон за месяц (?, и то не факт).
  133. Реально я бы рассчитывал на две недели.
  134.  
  135. 2) Кто в состоянии это выполнять - Костя/Денис/Рома/Лёня/Ирек/Миша (?)/Андрей Кочешков/Даниил.
  136. Давать это Антону/Андрею Мерлову точно не стоит.
  137.  
  138. 3) Могу сказать, что я бы это дешевле чем в половину своей ЗП не стал оценивать, потому что одновременно очень сложная и очень нудная работа.
  139. Придётся разбираться в:
  140. - как всё таки происходит общение с плагином
  141. - зачем нужны некоторые методы в ангуляре
  142. - зачем используется rxjs (и почему половина вещей в ангуляре на Observable написаны)
  143. - во всей этой кучи сервисов с непонятной абстракцией, которая нужна непонятно зачем
  144.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement