Добрый день. Возникла необходимость скрыть стандартную деталь на странице мобильного приложения. Есть ли возможность это реализовать?
Нравится
Добрый день. Вот тут предоставили хороший ответ: 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"
,
...