Добавить поле "Notes" ("Примечание") в Деталь + работа с изображениями
Вопрос
У меня проблема в загрузке изображений после добавления стандартного функционала Примечаний.
Примечания добавлены в деталь. Для детали создан собственный объект. Примечания добавляется в схему карточки детали следующим образом... текст сохраняется, изоражения даже не загружаются. Метод insertImagesToNotes не выполняется. Почему?
Ответ
У базовой детали от которой наследуются все остальные, нет необходимых атрибутов, методов и миксинов. В отличие от страниц которые наследуются от BaseModulePageV2.
Это можно исправить, посмотрев что реализовано в BaseModulePageV2 и воссоздать это у себя в схеме детали.
Для этого необходимо создать объект для детали, на основании Base object with notes (Base), создать мастером деталей деталь на основании этого объекта.
В конфигураторе, в схеме карточки детали добавить:
1. Зависимость от NotesUtilities для requirejs;
2. Атрибут:
attributes: { "NotesImagesCollection": {dataValueType:Terrasoft.DataValueType.COLLECTION} },
3. Миксин:
mixins: { NotesUtilities: "Terrasoft.NotesUtilities" },
4. Методы:
methods: { onNotesImagesUploadComplete: function() { this.hideBodyMask(); this.updateFileDetail(); }, onNotesImagesUpload: function() { this.showBodyMask(); }, init: function(callback, scope) { this.callParent(arguments); this.mixins.NotesUtilities.initNotesImagesCollection.call(this); } },
5. Поле для заметок в diff:
{ "operation": "insert", "parentName": "Header", "propertyName": "items", "name": "Notes", "bindTo": "Notes", "values": { contentType: Terrasoft.ContentType.RICH_TEXT, "layout" : {column: 0, row: 1, colSpan: 24}, "controlConfig": { "imageLoaded": { "bindTo": "insertImagesToNotes" }, "images": { "bindTo": "NotesImagesCollection" } } }, "index": 1 }
Код тестовой схемы для страницы редактирования детали:
define("UsrUsrMyDetail1Page", ["NotesUtilities"], function() { return { entitySchemaName: "UsrMyDetail", details: {}, attributes: { "NotesImagesCollection": {dataValueType: Terrasoft.DataValueType.COLLECTION} }, mixins: { NotesUtilities: "Terrasoft.NotesUtilities" }, diff: [{ "operation": "insert", "name": "UsrIntbcb7788a-2890-4358-bff3-102e82ea7889", "values": { "layout": { "colSpan": 12, "rowSpan": 1, "column": 0, "row": 0, "layoutName": "Header" }, "labelConfig": {}, "enabled": true, "bindTo": "UsrInt" }, "parentName": "Header", "propertyName": "items", "index": 0 }, { "operation": "insert", "parentName": "Header", "propertyName": "items", "name": "Notes", "bindTo": "Notes", "values": { contentType: Terrasoft.ContentType.RICH_TEXT, "layout" : {column: 0, row: 1, colSpan: 24}, "controlConfig": { "imageLoaded": { "bindTo": "insertImagesToNotes" }, "images": { "bindTo": "NotesImagesCollection" } } }, "index": 1 }], methods: { onNotesImagesUploadComplete: function() { this.hideBodyMask(); this.updateFileDetail(); }, onNotesImagesUpload: function() { this.showBodyMask(); }, init: function(callback, scope) { this.callParent(arguments); this.mixins.NotesUtilities.initNotesImagesCollection.call(this); } }, rules: {} }; });
Добрый день!
Подскажите, пожалуйста, как это сделать:
Зависимость от NotesUtilities для requirejs;
Полагаю, что в схеме детали в разделе надо добавить Dependencies надо добавить зависимость, но в поиске нет NotesUtilities. И что вообще такое requirejs?
Заранее спасибо!
Схема NotesUtilities в конфигурации есть:
А что такое requirejs, см. https://requirejs.org/
Зверев Александр,
Спасибо! Миксин такой, действительно есть, про requirejs, к сожалению, не поняла. Это ПО, которое отдельно надо установить? Простите за глупый, наверно, вопрос, коллеги тоже не в курсе. А сделать такую деталь мне ну очень надо))
Он встроен и уже используется в системе:
В bpm'online для работы с модулями используется загрузчик RequireJS.
Вообще, в статье, которую мы комментируем, описано как в одну схему в определённые места добавить куски кода, создать другую схему-страницу для самой детали, схему-объект для неё же и нужная функциональность появится.
Зверев Александр,
да, просто поставил в тупик этот пункт:
Зависимость от NotesUtilities для requirejs;
Вам, возможно, всё очевидно, мне непонятно, что нужно сделать.
Посмотрел ещё раз, в прошлом комментарии изложил не совсем точно. В исходной статье в конце приводится полный текст схемы страницы новой детали, которую нужно создать, плюс ещё создать для неё объект. А фрагменты кода в начале — просто для понимания.