Публикация
Как добавить кнопку в коммуникационную панель (CommunicationPanel)
9 апреля 2018 03:27
Вопрос
Как добавить кнопку в коммуникационную панель?
Ответ
- Заместить модуль «CommunicationPanel» в котором будет описана новая кнопка.
define("CommunicationPanel", ["terrasoft", "CommunicationPanelHelper"], function(Terrasoft, CommunicationPanelHelper) { return { messages: { "SelectCommunicationPanelItem": { "mode": Terrasoft.MessageMode.PTP, "direction": Terrasoft.MessageDirectionType.SUBSCRIBE } }, attributes: { "UsrMyMenuActive": { "dataValueType": Terrasoft.DataValueType.BOOLEAN, "type": Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN, "value": false }, "UsrMyMenuCounter": { "dataValueType": Terrasoft.DataValueType.TEXT, "type": Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN, "value": "" }, "UsrMyMenuVisible": { "dataValueType": Terrasoft.DataValueType.BOOLEAN, "type": Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN, "value": true } }, methods: { getPanelItemConfig: function(moduleName) { var config = this.callParent(arguments); if (moduleName !== "UsrMyMenuModule") { return config; } return Ext.apply(config, { keepAlive: false }); }, selectItem: function(config) { this.set("SelectedMenuItem", config.selectedItem); }, getUsrMyMenuImageConfig: function(itemTag) { return this.get("Resources.Images.VisaMenuIcon"); }, getUsrMyMenuCaption: function(itemTag) { return "test"; } }, diff: [ { "operation": "insert", "index": 0, "parentName": "communicationPanelContent", "propertyName": "items", "name": "usrMyMenu", "values": { "tag": "UsrMyMenu", "visible": {"bindTo": "UsrMyMenuVisible"}, "imageConfig": {"bindTo": "getUsrMyMenuImageConfig"}, "caption": {"bindTo": "getUsrMyMenuCaption"}, "generator": "CommunicationPanelHelper.generateMenuItem" } } ] }; });
- Создать модуль панели, в модуле должны быть обязательные сообщения, как и в ESNFeedModule:
RerenderModule – подписка, адресное.
InitModuleViewModel – подписка, адресное.
define("UsrMyMenuModule", [], function() { Ext.define("Terrasoft.configuration.UsrMyMenuModule", { extend: "Terrasoft.BaseSchemaModule", alternateClassName: "Terrasoft.UsrMyMenuModule", generateViewContainerId: false, initSchemaName: function() { this.schemaName = "UsrMyMenu"; }, initHistoryState: Terrasoft.emptyFn, init: function() { this.callParent(arguments); this.initMessages(); }, initMessages: function() { this.sandbox.subscribe("RerenderModule", function(config) { if (this.viewModel) { this.render(this.Ext.get(config.renderTo)); return true; } }, this, [this.sandbox.id]); }, createViewModel: function() { var viewModel = this.callParent(arguments); return viewModel; } }); return Terrasoft.UsrMyMenuModule; });
3. Создать схему представления карточки
define("UsrMyMenu", [], function() { return { mixins: { }, messages: { }, attributes: { }, methods: { init: function(callback, scope) { this.callParent([function() { callback.call(scope); }, this]); }, onTestClick: function() { alert(1); } }, diff: [ //MyMenu { "operation": "insert", "name": "MyMenu", "propertyName": "items", "values": { "generateId": false, "itemType": Terrasoft.ViewItemType.CONTAINER, "items": [] } }, //ShowNewMessagesButton { "operation": "insert", "name": "ShowNewMessagesButton", "parentName": "MyMenu", "propertyName": "items", "values": { "generateId": false, "itemType": Terrasoft.ViewItemType.BUTTON, "caption": "Test!", "click": {bindTo: "onTestClick"} } } ] }; });
Результат:
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать