Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Оценка по vue плагину для p3db плагина (сейчас на angular - https://github.com/NEOLANT-Service/ns_pluginExample/blob/master/NsPluginExample/frontend/angular/my-app/libs/Models/components/viewer3d/viewer3d.component.html)
- Судя по всему это какой-то внутренний плагин неоланта, написанный под ActiveX (Microsoft ActiveX controls), а <object> элемент как раз поддерживает:
- - run Java applets
- - run Microsoft ActiveX controls
- - display Flash movies
- - ...
- Немного текста зачем это нужно:
- ```
- http://www.neolant.ru/press-center/aboutus/news_detail.php?ID=1060&sphrase_id=252525
- Модуль конвертации и просмотра 3D моделей
- Модуль просмотра 3D моделей реализован посредством программного комплекса для визуализации и интерактивной навигации 3D моделей и 2D чертежей P3DB Navigator.
- Он позволяет работать практически со всеми форматамиданных, используемыми в САПР-продуктах нефтегазовой отрасли.
- Среди них: Intergraph SmartPlant 3D, PDS, AVEVA PDMS, Bentley Microstation, Autodesk Plant 3D. Таким образом, достигается гибкость в создании ИС, так как в нее можно импортировать 3D модели из разных САПР.
- ```
- ## Структура компонентов
- <app>
- <app-login /> # авторизация
- <models-section>
- <app-models-tree # дерево с выбором моделей
- <app-viewer3d-file-list # список файлов
- <app-viewer3d-toolbox # кнопочки для управления viewer3d
- <app-viewer3d # компонент, который инциализирует плагин P3DB (_viewer3dService.getPluginInstance)
- </models-section>
- </app>
- ### viewer3d-file-list
- Показывает файлы, которые достаёт из
- ```
- this.pluginInstance.SceneGetFiles()
- ```
- ### viewer3d-toolbox
- Хранит в себе массив кнопочек, нажатие по которым дёргает действия в компоненте Viewer3d
- Пример кнопки:
- ```
- {
- name: 'removeFiles',
- icon: 'mdi mdi-playlist-minus mdi-24px',
- title: 'Удалить из сцены ...'
- },
- ```
- ### viewer3d
- Главные компонент для отображения моделей - viewer3d
- Плагин подключается через тэг <object>
- Для работы с моделями нужна авторизация
- Проверяет какой это браузер (ie/edge)
- ```
- _pluginAvailableService.isAvailable
- ```
- Инициализирует плагин
- ```
- _viewer3dService.getPluginInstance // создание
- _pluginWrapper = new P3DBPluginWrapper // обёртка
- ```
- Дальше идёт какая-то магия, которую я пока не понял - как angular связывается с методами плагина - судя по всему через P3DBPluginWrapper
- ### Авторизация
- Компонент <app-login>, рядом с ним несколько сервисов для авторизации
- ## Сервисы
- ### Viewer3dService (P3DBPluginService) (p3dbplugin/p3dbplugin.service.ts)
- Главный метод - getPluginInstance
- #### getPluginInstance
- При вызове достаёт из кэша соданный плагин либо вызывает createPluginInstance
- #### createPluginInstance
- Инциализирует плагин:
- 1) создаёт <object>
- 2) напихивает в него <param> теги (лицензия и прочие)
- 3) добавляет на него обработчики (например ContextMenuCommandExecuted)
- ## Итого
- ### Что нужно сделать
- - авторизация для p3db
- - инициализация p3db плагина с использованием конфига с апишки
- - получение моделей/контента моделей
- - работа с плагином (кнопочки)
- ### Файлы, которые можно брать +- как есть:
- libs/Models/types/**/*.ts # основной набор методов и типов для работы с p3db
- ### Файлы, которые нужно дописывать:
- libs/Models/services/backend/*.ts # запросы за настройками и моделями
- libs/Models/services/cache/*.ts # хитрые кэширования плагина
- libs/Models/services/p3dbplugin/p3dbplugin.service.ts # иницализация плагина
- libs/Models/services/p3dbplugin/p3dbplugin-auth.service.ts # авторизация для загрузки сцены
- libs/Models/services/p3dbplugin/p3dbplugin-available.service.ts # проверка на браузер
- libs/Models/components/viewer3d/plugin/plugin-intsance.ts # здесь ещё пачка методов и типов для p3db
- libs/Models/components/viewer3d/plugin/**/*.ts
- ### Файлы, которые нужно переписывать:
- libs/Models/components/**/* # angular компоненты для моделей
- libs/Security/**/* # авторизация
- ## Ответы на вопросы (оценка)
- 1) сколько займет завести этот плагин на вью
- 2) кто этим может заняться
- 3) сколько бы ТЫ бабок был готов за это заплатить
- 1) Одна рабочая неделя с учётом настроенного окружения и возможности задать вопрос по работе плагина и его конфигурации.
- Ден сделает дня за 3. Антон за месяц (?, и то не факт).
- Реально я бы рассчитывал на две недели.
- 2) Кто в состоянии это выполнять - Костя/Денис/Рома/Лёня/Ирек/Миша (?)/Андрей Кочешков/Даниил.
- Давать это Антону/Андрею Мерлову точно не стоит.
- 3) Могу сказать, что я бы это дешевле чем в половину своей ЗП не стал оценивать, потому что одновременно очень сложная и очень нудная работа.
- Придётся разбираться в:
- - как всё таки происходит общение с плагином
- - зачем нужны некоторые методы в ангуляре
- - зачем используется rxjs (и почему половина вещей в ангуляре на Observable написаны)
- - во всей этой кучи сервисов с непонятной абстракцией, которая нужна непонятно зачем
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement