Добавить поле "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?
Заранее спасибо!
Зверев Александр,
Спасибо! Миксин такой, действительно есть, про requirejs, к сожалению, не поняла. Это ПО, которое отдельно надо установить? Простите за глупый, наверно, вопрос, коллеги тоже не в курсе. А сделать такую деталь мне ну очень надо))
Он встроен и уже используется в системе:
В bpm'online для работы с модулями используется загрузчик RequireJS.
Вообще, в статье, которую мы комментируем, описано как в одну схему в определённые места добавить куски кода, создать другую схему-страницу для самой детали, схему-объект для неё же и нужная функциональность появится.
Зверев Александр,
да, просто поставил в тупик этот пункт:
Зависимость от NotesUtilities для requirejs;
Вам, возможно, всё очевидно, мне непонятно, что нужно сделать.
Посмотрел ещё раз, в прошлом комментарии изложил не совсем точно. В исходной статье в конце приводится полный текст схемы страницы новой детали, которую нужно создать, плюс ещё создать для неё объект. А фрагменты кода в начале — просто для понимания.
