Динамическое отображение содержимого инструментальной панели действий.

Добрый день. Требуется скрывать содержимое ContentContainer инструментальной панели действий в зависимости от значения атрибута карточки редактирования. Я переопределил объявление модуля в карточке, добавив свойство  contentVisible с привязкой к атрибуту, но теперь содержимого ContentContainer не видно никогда.  Подскажите как добиться, чтобы содержимое отображалось в зависимости от значения атрибута карточки редактирования. Ниже привожу код, который я модифицировал

        modules: /**SCHEMA_MODULES*/{

            "ActionsDashboardModule": {

                "config": {

                    "isSchemaConfigInitialized": true,

                    "schemaName": "OpportunityActionsDashboard",

                    "useHistoryState": false,

                    "parameters": {

                        "viewModelConfig": {

                            "entitySchemaName": "Opportunity",

                            "actionsConfig": {

                                "schemaName": "OpportunityStage",

                                "columnName": "Stage",

                                "colorColumnName": "Color",

                                "filterColumnName": "ShowInProgressBar",

                                "orderColumnName": "Number",

                                "innerOrderColumnName": "End",

                                "decouplingConfig": {

                                    "name": "OppStageDecoupling",

                                    "masterColumnName": "CurrentStage",

                                    "referenceColumnName": "AvailableStage"

                                }

                            },

                            "contentVisible": {bindTo: "NrbIsOpportunity"},

                            "dashboardConfig": {

                                "Activity": {

                                    "masterColumnName": "Id",

                                    "referenceColumnName": "Opportunity"

                                }

                            }

                        }

                    }

                }

            }

        }/**SCHEMA_MODULES*/,

Нравится

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

Попробуй по изменению атрибута вызывать обновление  твоей детали:

this.updateDetail({detail: "Relationships"});

Решил свою проблему с помощью сообщений. Пришлось сделать два встречно направленных сообщения, чтобы корректно отрабатывало во всех возможных вариантах просмотра: combined mode с вертикальным реестром и без, separate mode. Ниже код замещающей схемы инструментальной панели действий

define("OpportunityActionsDashboard", [], function() {
	return {
		messages: {
			"InitVisibilityByRights": {
				mode: this.Terrasoft.MessageMode.BROADCAST,
				direction: this.Terrasoft.MessageDirectionType.SUBSCRIBE
			},
			"GetInitVisibilityByRights": {
				mode: this.Terrasoft.MessageMode.BROADCAST,
				direction: this.Terrasoft.MessageDirectionType.PUBLISH
			}
		},
		methods: {
			/**
			 * @inheritdoc Terrasoft.BaseActionsDashboard#subscribeSandboxEvents
			 * @overridden
			 */
			subscribeSandboxEvents: function() {
				this.callParent(arguments);
				var sandbox = this.sandbox;
				var tags = [sandbox.id];
				sandbox.subscribe("InitVisibilityByRights", this.initVisibilityByRights, this, tags);
				sandbox.publish("GetInitVisibilityByRights");
			},
 
			/**
			 * Инициализирует видимость содержимого панели
			 */
			initVisibilityByRights: function(value) {
				this.set("ContentVisible", value);
			}
		},
		diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/
	};
});

В карточке редактирования продажи необходимы следующие модификации

		messages: {
			"InitVisibilityByRights": {
				mode: this.Terrasoft.MessageMode.BROADCAST,
				direction: this.Terrasoft.MessageDirectionType.PUBLISH
			},
			"GetInitVisibilityByRights": {
				mode: this.Terrasoft.MessageMode.BROADCAST,
				direction: this.Terrasoft.MessageDirectionType.SUBSCRIBE
			}
		},
 
		attributes: {
			// это и есть атрибут, который определяет видимость
			"IsColumnVisibleByOwnerOrFuncRole": {
				dependencies: [{
					columns: ["IsColumnVisibleByOwnerOrFuncRole"],
					methodName: "publishVisibilityByRights"
				}]
			}
		},
		methods: {
 
			subscribeSandboxEvents: function() {
				this.callParent(arguments);
				this.sandbox.subscribe("GetInitVisibilityByRights", this.publishVisibilityByRights, this);
			},
 
			/**
			 * Публикует признак видимости в другие модули
			 */
			publishVisibilityByRights: function() {
				var moduleIds = this.getModuleIds();
				moduleIds.push(this.sandbox.id);
				var value = this.get("IsColumnVisibleByOwnerOrFuncRole");
				this.sandbox.publish("InitVisibilityByRights", value, moduleIds);
			}
 
		},

 

Вот так это выглядит в интерфейсе

Когда показано содержимое панели действий

 и 

Когда скрыто

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