Вопрос

Добавление пользовательских представлений на секцию

Всем привет. Помогите разобраться.

Нужно добавить новое представление на секцию.

Переопределил getDefaultDataViews, добавил в него новое представление. Получилось вот так:

Изображение удалено.

Кнопка появилась, только вот только нету никаких данных.

Что нужно делать.(В документации не нашел)(Исходник прикрепил)

Прикрепленные файлы

Нравится

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

Ну по хорошему вам прямая дорога в ActivitySectionV2 (посмотреть как там реализован sheduler). 

Чисто на уровне теории: при переключении между разными view перещёлкиваются булевы включатели -> исчезает, допустим, грид, появляется либо новый грид и рефрешится коллекция данных под него, либо какие-то кнопки/списки/детали/др. визуальные элементы + запускаются методы под их наполнение.

В любом случае это куча переключателей и биндов на visible.

Здравствуйте!

Пример: добавление нового представления реестра контактов, в котором будут контакты только с типом B2B:

define("ContactSectionV2", ["GlbClientConstants"], function(clientConstants) {
    return {
        entitySchemaName: "Contact",
        details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
        attributes: {},
        methods: {
            getDefaultDataViews: function() {
                var baseDataViews = this.callParent(arguments);
                baseDataViews.GridDataViewB2B = {
                    name: "GridDataViewB2B",
                    caption: this.get("Resources.Strings.B2BButtonCaption"), // Section header 
                    hint: this.get("Resources.Strings.B2BButtonCaption"), // Hint for button
                    icon: this.get("Resources.Images.B2BDataViewIcon") // Image for button
                };
                return baseDataViews;
            },
            loadActiveViewData: function() {
                var activeViewName = this.getActiveViewName();
                if (activeViewName === "GridDataViewB2B") {
                    this.loadGridData();
                }
                this.callParent(arguments);
            },
            loadGridDataView: function(loadData) {
                var gridData = this.getGridData();
                if (gridData && loadData) {
                    gridData.clear();
                }
                this.setViewFilter(this.get("ActiveViewName"));
                this.reloadGridColumnsConfig(false);
                this.reloadSummaryModule();
                this.callParent(arguments);
            },
            loadGridDataViewB2B: function(loadData) { // "load" + DataView.name
                this.loadGridDataView(loadData);
            },
            setActiveView: function(activeViewName) {
                this.callParent(arguments);
                if (activeViewName === "GridDataViewB2B") {
                    this.set("IsGridDataViewVisible", true);
                }
            },
            setViewFilter: function(activeViewName) { // Add filter for your "DataView"
                var sectionFilters = this.get("SectionFilters");
                if (activeViewName === "GridDataViewB2B") {
                    sectionFilters.add("FilterB2BType", this.Terrasoft.createColumnFilterWithParameter(
                        this.Terrasoft.ComparisonType.EQUAL, "Type", clientConstants.ContactTypes.B2B));
                } else {
                    sectionFilters.removeByKey("FilterB2BType");
                }
            }
        }
    };
});

Также можно действительно смотреть примеры реализации в базовом функционале, как подсказал Варфоломеев Данила

Кто бы сделал такое дополнение на Marketplace :)

Варфоломеев ДанилаОдеяненко Юлия,

Спасибо большое!

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