Необходимо убрать кнопку из верхнего меню раздела где написано запустить процесс, оставить эту кнопку нужно только для деталей. Нашел инструкцию по diff, но какое имя у этой кнопки в схеме найти не могу, подскажите где взять имена элементов? И можно ли вообще скрыть кнопку для общего раздела и оставить только для деталей?

Нравится

1 комментарий
Лучший ответ

В карточке у кнопки имя "ProcessButton".

В секциях либо "ProcessButton", либо "ProcessRunButton", либо "DataGridRunProcessAction" в зависимости от положения

В карточке у кнопки имя "ProcessButton".

В секциях либо "ProcessButton", либо "ProcessRunButton", либо "DataGridRunProcessAction" в зависимости от положения

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

Добрый день!

Добавил кнопки в DataGrid, но они выбиваются из общего стиля, как это можно исправить?



Код с добавлением кнопки в DataGrid

diff: [{

                    operation: "merge",

                    name: "DataGrid",

                    values: {

                        className: "Terrasoft.ConfigurationGrid",

                        generator: "ConfigurationGridGenerator.generatePartial",

                        generateControlsConfig: { bindTo: "generateActiveRowControlsConfig" },

                        changeRow: { bindTo: "changeRow" },

                        unSelectRow: { bindTo: "unSelectRow" },

                        onGridClick: { bindTo: "onGridClick" },                     

                        activeRowActions: [{

                                className: "Terrasoft.Button",

                                style:this.Terrasoft.controls.ButtonEnums.style.GREEN,

                                markerValue: "CallAction",

                                tag: "CallAction",

                                caption: "\u2706"

                        }],

                        initActiveRowKeyMap: { bindTo: "initActiveRowKeyMap" },

                        activeRowAction: { bindTo: "onActiveRowAction" }

                    }}]

Вот их отображение

Изображение удалено.

Нравится

3 комментария

Сергей, у оригинальных трёх кнопок стиль прозрачный и показывается заранее созданная картинка. См. в ProductDetailV2:

{
	"operation": "merge",
	"name": "DataGrid",
	"values": {
		"className": "Terrasoft.ConfigurationGrid",
		"generator": "ConfigurationGridGenerator.generatePartial",
		"generateControlsConfig": {bindTo: "generateActiveRowControlsConfig"},
		"multiSelect": {"bindTo": "MultiSelect"},
		"changeRow": {"bindTo": "changeRow"},
		"selectRow": {"bindTo": "createEditRow"},
		"unSelectRow": {"bindTo": "unSelectRow"},
		"onGridClick": {"bindTo": "onGridClick"},
		"activeRowActions": [
			{
				"className": "Terrasoft.Button",
				"style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
				"tag": "save",
				"markerValue": "save",
				"imageConfig": {"bindTo": "Resources.Images.SaveIcon"}
			},
			{
				"className": "Terrasoft.Button",
				"style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
				"tag": "cancel",
				"markerValue": "cancel",
				"imageConfig": {"bindTo": "Resources.Images.CancelIcon"}
			},
			{
				"className": "Terrasoft.Button",
				"style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
				"tag": "remove",
				"markerValue": "remove",
				"imageConfig": {"bindTo": "Resources.Images.RemoveIcon"}
			}
		],
		"listedZebra": true,
		"initActiveRowKeyMap": {"bindTo": "initActiveRowKeyMap"},
		"activeRowAction": {"bindTo": "onActiveRowAction"}
	}
},

Сами картинки, видимо, из BaseConfigurationGridRow, где они добавлены в дизайнере в левом блоке.

Зверев Александр пишет:

Сергей, у оригинальных трёх кнопок стиль прозрачный и показывается заранее созданная картинка. См. в ProductDetailV2:


 
{
	"operation": "merge",
	"name": "DataGrid",
	"values": {
		"className": "Terrasoft.ConfigurationGrid",
		"generator": "ConfigurationGridGenerator.generatePartial",
		"generateControlsConfig": {bindTo: "generateActiveRowControlsConfig"},
		"multiSelect": {"bindTo": "MultiSelect"},
		"changeRow": {"bindTo": "changeRow"},
		"selectRow": {"bindTo": "createEditRow"},
		"unSelectRow": {"bindTo": "unSelectRow"},
		"onGridClick": {"bindTo": "onGridClick"},
		"activeRowActions": [
			{
				"className": "Terrasoft.Button",
				"style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
				"tag": "save",
				"markerValue": "save",
				"imageConfig": {"bindTo": "Resources.Images.SaveIcon"}
			},
			{
				"className": "Terrasoft.Button",
				"style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
				"tag": "cancel",
				"markerValue": "cancel",
				"imageConfig": {"bindTo": "Resources.Images.CancelIcon"}
			},
			{
				"className": "Terrasoft.Button",
				"style": Terrasoft.controls.ButtonEnums.style.TRANSPARENT,
				"tag": "remove",
				"markerValue": "remove",
				"imageConfig": {"bindTo": "Resources.Images.RemoveIcon"}
			}
		],
		"listedZebra": true,
		"initActiveRowKeyMap": {"bindTo": "initActiveRowKeyMap"},
		"activeRowAction": {"bindTo": "onActiveRowAction"}
	}
},

Сами картинки, видимо, из BaseConfigurationGridRow, где они добавлены в дизайнере в левом блоке.

 

Я могу каким либо другим способом добавить кнопку что бы их стиль был идентичен базовым кнопкам? Вообще такие способы существуют? В базовых примерах я не смог найти подходящих решений.

На самом деле мой код выглядит так, просто я не добавил выше код базовых кнопок что бы показать суть проблемы :

...
activeRowActions: [{  
    // Моя кнопка,
    // Код кнопок из вашего ответа
}],
...

Если бы кнопка была не в гриде, тогда проблема со стилями не возникает, но такой вариант не подходит, так как мои кнопки находятся в activeRowActions

{
					operation: "insert",
					name: "InfoButton",
					parentName: "ActionButtonsContainer",
					propertyName: "items",
					values: {
						click: { bindTo: "onButtonClick"},
						itemType: this.Terrasoft.ViewItemType.BUTTON,
						style: this.Terrasoft.controls.ButtonEnums.style.GREEN,
						hint: { bindTo: "showHint" },
						caption: "\u29C9",
					},
				},

 

Нет никакого стиля базовых кнопок, это три картинки.

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

Добрый день.

Подскажите почему может не вызываться метод заголовка для дифф в модуле уведомлений?

Кейс такой: в стандартный модуль уведомлений добавлены гиперссылки на продажу и лид. Сами гиперссылки прописаны отдельными дифами. А так же к ним добавлены текстовые заголовки тоже отдельными дифами. Заголовок для Лида прописан в локализованные строки. А для Продаж значение заголовка достаётся методом из системной настройки.

Проблема в том, что при добавлении продажи с открытым центром уведомлений не происходит вызов метода, прикрученного к свойству "caption" дифа. А для гиперссылки все вызывается и отображается нормально.

diff: [
{
	"operation": "insert",
	"name": "NotificationOpportunityLabel",
	"parentName": "NotificationItemActivityTopContainer",
	"propertyName": "items",
	"values": {
		"itemType": Terrasoft.ViewItemType.LABEL,
		"caption": {"bindTo": "getOpportunityCaption"},
		"visible": {"bindTo": "getActivityOpportunityVisible"},
		"classes": {"labelClass": ["account-comma-contact"]}
	}
}]
methods: {
	processNotificationsCollection: function(items) {
		items.each(this.addColumnLink, this);
	},
 
	addColumnLink: function(item) {
		var self = this;
		item.getOpportunityCaption = function() {
			self.queryOpportunityCaption.call(self, item);
			return self.get("NotificationOpportunityCaption");
		};
	},
 
	queryOpportunityCaption: function() {
		Terrasoft.SysSettings.querySysSettingsItem("OpportunityLinkCaptionRemindingSchema", 
			function(value) {
				this.set("NotificationOpportunityCaption",value);
			}, this);
	}
}

Может быть кто сталкивался с таким поведением?

 

Нравится

2 комментария

Вообще, как таковой биндинг caption на функцию возможен, судя по коду в MultiDeleteResultPageV2. Может, у Вас где-то раньше ошибка и JS-код прекращает выполняться?

{
	"operation": "insert",
	"name": "ByRightsContainerHeader",
	"parentName": "ByRightsContainer",
	"propertyName": "items",
	"values": {
		"itemType": Terrasoft.ViewItemType.LABEL,
		"caption": {"bindTo": "getRightsCaption"},
		"classes": {
			"labelClass": ["container-multi-delete-caption-labelClass"]
		}
	}
},
 
/**
 * Returns caption for block with errors by rights.
 * return {String} Caption.
 * @protected
 */
getRightsCaption: function() {
	var items = this.get("RecordsData").getItems();
	var count = items ? items.length : 0;
	return this.Ext.String.format(this.get("Resources.Strings.ByRightsCaption"), count);
},

А в чём недостаток локализируемой строки перед системной настройкой, значение нужно часто менять? В крайнем случае можно попробовать сделать БП, синхронизирующий значение из настройки в строку на событии изменения настройки, хотя это и «костыль».

Насколько я  понял после инициализации диф не хочет от рисоввываться. Решил кейс немного по-другому. Засунул в инит вызов функции, определяющей заголовок. 

diff: [
	{
		"operation": "insert",
		"name": "NrbProcessNotificationOpportunityLabel",
		"parentName": "StartDateContainer",
		"propertyName": "items",
		"values": {
			"itemType": Terrasoft.ViewItemType.LABEL,
			"caption": {"bindTo": "getOpportunityCaption"},
			"visible": {"bindTo": "getActivityOpportunityVisible"},
			"classes": {"labelClass": ["account-comma-contact", "nrb-label"]}
		}
	}
	],
methods: {	
	init: function(){
		this.callParent(arguments);
		this.getOpportunityCaption();
	},
 
	/**
	 * Вытаскиваем из системной настройки заголовок для Продаж.
	 */
	getOpportunityCaption: function() {
		var caption;
		Terrasoft.SysSettings.querySysSettingsItem("NrbOpportunityLinkCaptionRemindingSchema", 
			function(value) {
				caption = value;
			}, this);
		return caption + " ";
	}
}

 

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

Добрый день, коллеги!

Кто сталкивался, существуется ли возможность во время отрисовки карточки или подготовки конфига для отрисовки добавить в конфиг Diff какой-нибудь валидный diff-object?

Нравится

1 комментарий

Добрый день

В тот момент, когда получается схема, происходит генерация по конфигам (diff-objects) всех элементов управления. Это происходит в генераторе (ViewGeneratorV2). Именно туда приходит уже собранный с учетом иерархии массив объектов. И только в этом генераторе вы можете что-то добавить. Только учтите, что изменения в генераторе будут влиять на всю систему, что может привести к неработоспособности чего-либо

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