Всем доброго времени суток.
Есть класс SideBar и я создал модуль NrbSideBarWithCountersModule который наследуется от него.
define("NrbSideBarWithCountersModule", ["terrasoft", "ext-base"], function() {
Ext.define("Terrasoft.controls.NrbSideBarWithCountersModule", {
extend: "Terrasoft.SideBar",
alternateClassName: "Terrasoft.NrbSideBarWithCountersModule",
Ext: null,
sandbox: null,
Terrasoft: null,
itemTplMap: [
"caption",
"imageUrl",
"href",
"domAttributes",
"availableEntities"
],
itemTpl: [
"<tpl if=\"visible != false\">",
"<li data-item-index=\"{itemIndex}\"",
"<tpl if=\"isSelected == true\">",
"class=\"ts-sidebar-selected-item\"",
"</tpl>",
">",
"<span class=\"vertical-strip\"></span>",
"<tpl if=\"href\"><a target=\"_self\" class=\"sidebar-item-link\" href=\"{href}\"></tpl>",
"<div id=\"sidebar-item-wrapper-{itemIndex}\" class=\"ts-sidebar-item-wrapper\">",
"<div id=\"sidebar-item-image-{itemIndex}\" class=\"ts-sidebar-item-image\" data-item-marker=\"{caption}\" " +
"style=\"background-image:url({imageUrl})\" <tpl foreach=\"domAttributes\">{$}=\"{.}\"</tpl>></div>",
"<div id=\"sidebar-item-text-{itemIndex}\" class=\"ts-sidebar-item-text\"> {caption} ",
"<div id=\"sidebar-item-counter-{itemIndex}\" class=\"ts-sidebar-item-counter\"> {availableEntities} ",
"</div>",
"</div>",
"<tpl if=\"href\"></a></tpl>",
"</li>",
"</tpl>"
],
});
return Terrasoft.NrbSideBarWithCountersModule;
});
В нём я добавил поле которое должно будет передаваться из модуля SectionMenuModule, также я создал новый модуль NrbSectionMenuModule в котором переопределил нужные методы.
define("NrbSectionMenuModule", ["ServiceHelper", "NrbSectionMenuModuleResources", "ModuleUtils", "MaskHelper",
"LeftPanelUtilitiesV2", "CheckModuleDestroyMixin"],
function (resources, ModuleUtils, ServiceHelper, MaskHelper, LeftPanelUtilities) {
Ext.define("Terrasoft.configuration.NrbSectionMenuModule", {
alternateClassName: "Terrasoft.NrbSectionMenuModule",
override: "Terrasoft.SectionMenuModule",
render: function (renderTo) {
if (!Ext.isEmpty(viewModel) && !Ext.isEmpty(sideBar)) {
sideBar.destroy();
}
sideBar = Ext.create("Terrasoft.NrbSideBarWithCountersModule", Terrasoft.deepClone(sideBarConfig));
sideBar.bind(viewModel);
sideBar.render(renderTo);
MaskHelper.HideBodyMask();
},
getSideBarItems: function () {
var config = [];
var moduleStructure = Terrasoft.configuration.ModuleStructure;
var modules = info && info.modules ? info.modules : Object.keys(moduleStructure);
if (!modules) {
return;
}
var availableSections = info.AvailableSections;
var defaultIconUrl = Terrasoft.ImageUrlBuilder.getUrl(resources.localizableImages.DefaultIconSvg);
modules.forEach(function (module) {
if (module.moduleId !== Terrasoft.GUID_EMPTY) {
var moduleName = module.moduleName ? module.moduleName : module;
var moduleConfig = moduleStructure[moduleName];
if (moduleConfig.hide !== "true") {
if (!Ext.isArray(availableSections) || availableSections.indexOf(moduleName) >= 0) {
var caption = moduleStructure[moduleName].moduleCaption;
var tag = ModuleUtils.getModuleTag(moduleName);
var imageId = moduleStructure[moduleName].imageId;
var imageUrl = imageId ? getImageUrl(imageId) : defaultIconUrl;
var itemUrl = Terrasoft.workspaceBaseUrl + "/Nui/ViewModule.aspx#" + tag;
var count = this.getCountOfAvailableProjects();
var itemConfig = {
caption: caption,
tag: tag,
imageUrl: imageUrl,
href: itemUrl,
domAttributes: { "module-name": module.moduleName },
availableEntities: count
};
if (!Terrasoft.Features.getIsEnabled("SectionMenuLink")) {
itemConfig.href = null;
}
config.push(itemConfig);
}
}
}
});
return config;
},
getCountOfAvailableProjects: function () {
var requestConfig = {
serviceName: "NrbProjectCounterService",
methodName: "GetNumberOfAvailableProjects",
callback: this.showResult
};
this.callService(requestConfig, this);
},
showResult: function (result) {
console.log(result);
},
});
return Terrasoft.NrbSectionMenuModule;
});
Переопределение не даёт нужного результата и возник такой вопрос. Правильно ли тут использовать переопределение или лучше использовать наследование?
И как я понял мне надо будет переопределить все модули которые взаимодействовали с SectionMenuModule и поменять на NrbSectionMenuModule?