Всем привет. Помогите разобраться.
Нужно добавить новое представление на секцию.
Переопределил getDefaultDataViews, добавил в него новое представление. Получилось вот так:
![]()
Кнопка появилась, только вот только нету никаких данных.
Что нужно делать.(В документации не нашел)(Исходник прикрепил)
Нравится
Ну по хорошему вам прямая дорога в 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");
}
}
}
};
});
Также можно действительно смотреть примеры реализации в базовом функционале, как подсказал Варфоломеев Данила