Добрый день. Возникла необходимость скрыть стандартную деталь на странице мобильного приложения. Есть ли возможность это реализовать?
Нравится
Добрый день. Вот тут предоставили хороший ответ: https://community.terrasoft.ru/questions/skrytie-standartnoi-detali-v-k…
Здравствуйте!
Один из вариантов реализации этой задачи - перекрыть в контроллерах страниц метод onBusinessRuleExecuted, который отрабатывает после выполнения бизнес-правил и в котором можно найти нужный элемент у panel-а и скрыть\показать его.
Ext.define("CustomUsrHaulPreviewPage.Controller", {
override: "UsrHaulPreviewPage.Controller",
onBusinessRuleExecuted: function(record, rule, ruleResult) {
this.callParent(arguments);
var view = this.getView();
var panel = view.getPanel();
var type = record.get("UsrDriverCheckType");
var isNeededType = (type && type.getId() === "079acedd-585f-4a0e-aff0-eb419ec09925");
var panelItems = panel.getItems();
for (var i = 0, ln = panelItems.getCount(); i < ln; i++) {
var item = panelItems.items[i];
if (item instanceof Terrasoft.ViewEmbeddedDetail &&
item.getName() === "UsrSchema11DetailEmbeddedDetail") {
var isItemHidden = item.getHidden();
if (type && isNeededType) {
if (!isItemHidden) {
item.setHidden(true);
}
} else if (type) {
if (isItemHidden) {
item.setHidden(false);
}
}
}
}
}
});
Ext.define("CustomUsrHaulEditPage.Controller", {
override: "UsrHaulEditPage.Controller",
onBusinessRuleExecuted: function(record, rule, ruleResult) {
this.callParent(arguments);
var view = this.getView();
var panel = view.getPanel();
var type = record.get("UsrDriverCheckType");
var isNeededType = (type && type.getId() === "079acedd-585f-4a0e-aff0-eb419ec09925");
var panelItems = panel.getItems();
for (var i = 0, ln = panelItems.getCount(); i < ln; i++) {
var item = panelItems.items[i];
if (item instanceof Terrasoft.EditEmbeddedDetail &&
item.getName() === "UsrSchema11DetailEmbeddedDetail") {
var isItemHidden = item.getHidden();
if (type && isNeededType) {
if (!isItemHidden) {
item.setHidden(true);
}
} else if (type) {
if (isItemHidden) {
item.setHidden(false);
}
}
}
}
}
});
Либо же
Создаем новую схему UsrMobileAccountPreviewPage (с типом «Модуль»)
/* globals Account: false */
Terrasoft.LastLoadedPageData = {
controllerName: "UsrAccountPreviewPage.Controller",
viewXType: "usractivitypreviewpageview"
};
Ext.define("UsrAccountPreviewPage.View", {
extend: "AccountPreviewPage.View",
xtype: "usractivitypreviewpageview",
config: {
id: "AccountPreviewPage"
},
/**
* @inheritdoc
* @protected
* @overridden
*/
shouldHidePanelItem: function(loadedRecord, component) {
var detailName = component.config.name;
if (detailName === "ActivityDetailV2StandartDetail") {
var categoryId = loadedRecord.get("AccountCategory.Id");
return categoryId !== Terrasoft.Configuration.AccountCategory.DoctorVisit;
} else {
return this.callParent(arguments);
}
}
});
Ext.define("UsrAccountPreviewPage.Controller", {
extend: "AccountPreviewPage.Controller",
statics: {
Model: Account
},
config: {
refs: {
view: "#AccountPreviewPage"
}
}
});
Прописываем ее в манифесте
"Models": {
"Account": {
...
"Preview": "UsrMobileAccountPreviewPage",
...