Публикация

Добавить поле "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: {}
	};
});

 

Нравится

Поделиться

8 комментариев

Добрый день!

Подскажите, пожалуйста, как это сделать:

Зависимость от NotesUtilities для requirejs;

Полагаю, что в схеме детали в разделе надо добавить Dependencies надо добавить зависимость, но в поиске нет NotesUtilities. И что вообще такое requirejs?

Заранее спасибо!

Схема NotesUtilities в конфигурации есть:

А что такое requirejs, см. https://requirejs.org/

Зверев Александр,

Спасибо! Миксин такой, действительно есть, про requirejs, к сожалению, не поняла. Это ПО, которое отдельно надо установить? Простите за глупый, наверно, вопрос, коллеги тоже не в курсе. А сделать такую деталь мне ну очень надо))

Он встроен и уже используется в системе:

В bpm'online для работы с модулями используется загрузчик RequireJS.

Зверев Александр,

и вообще этот шаг - обязательный???

Вообще, в статье, которую мы комментируем, описано как в одну схему в определённые места добавить куски кода, создать другую схему-страницу для самой детали, схему-объект для неё же и нужная функциональность появится.

Зверев Александр,

да, просто поставил в тупик этот пункт:

Зависимость от NotesUtilities для requirejs;

Вам, возможно, всё очевидно, мне непонятно, что нужно сделать.

Посмотрел ещё раз, в прошлом комментарии изложил не совсем точно. В исходной статье в конце приводится полный текст схемы страницы новой детали, которую нужно создать, плюс ещё создать для неё объект. А фрагменты кода в начале — просто для понимания.

Показать все комментарии