Скрытие стандартной детали в мобильном приложении

Добрый день. Возникла необходимость скрыть стандартную деталь на странице мобильного приложения. Есть ли возможность это реализовать?

Нравится

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

Добрый день. Вот тут предоставили хороший ответ: 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",

        ...

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