Проблема с полями в мини-карточке активности в LeadSectionActionsDashboard
Добрый день.
Добавил в мини-карточку активности два поля:
1. справочник "Контрагент" ("contentType": 5)
Проблема: после выбора значения справочника не закрывается пустое модальное окно LookupPage
2. Дата/время
Проблема: После выбора даты из календаря мини-карточка активности закрывается без сохранения.
Данное поведение наблюдается в мини-карточке вызываемой в LeadSectionActionsDashboard по нажатию на "Завершить" во "View" Mode. В "Edit" Mode всё в порядке.
Как альтернатива хотел отключить "View" Mode и загружать сразу "Edit" Mode. Переопределил атрибут
dataValueType: this.Terrasoft.DataValueType.TEXT,
type: this.Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
value: this.Terrasoft.ConfigurationEnums.CardOperation.EDIT
},
"MiniPageModes": {
dataValueType: this.Terrasoft.DataValueType.COLLECTION,
type: this.Terrasoft.ViewModelColumnType.VIRTUAL_COLUMN,
value: [this.Terrasoft.ConfigurationEnums.CardOperation.VIEW, this.Terrasoft.ConfigurationEnums.CardOperation.EDIT]
},
Но так и загружается мини-карточка в "View" Mode.
Версия 7.8.0.1681
Нравится
Ещё один нюанс:
Добавил в мини-карточку активности поле список "Стадии продажи"
Добавляю сортировку поля в массив attributes:
[javascript]
"UsrOpportunityStage": {
dataValueType: Terrasoft.DataValueType.LOOKUP,
columns: ["Number"],
lookupListConfig: {
orders: [{
columnPath: "Number",
direction: Terrasoft.OrderDirection.ASC,
}]
}
}
[/javascript]
В итоге сортировка не отрабатывает.
Аналогичные настройки в стандартной PageV2 отрабатывают корректно.
Для переключения режимов посмотрите в сторону функции базовой мини-карточки «switchMiniPageMode», которая в свою очередь вызывает changeMiniPageMode с нужным параметром. И делайте переключение в нужный вам режим в нужный вам момент.
Добрый день, Илья!
А что вы можете порекомендовать по поводу решения проблем, описанных в пунктах 1 и 2 и проблемой с сортировкой справочных полях?
"Мотков Илья" написал:Для переключения режимов посмотрите в сторону функции базовой мини-карточки «switchMiniPageMode», которая в свою очередь вызывает changeMiniPageMode с нужным параметром. И делайте переключение в нужный вам режим в нужный вам момент.
Сделал по Вашему совету. Вызываю switchMiniPageMode() в onRender.
По итогу мини-карточка открывается в edit Mode. Казалось бы "Ура!!!" Но нет:smile:
Т.к. у меня есть поля, которые отображаются по условию, то после выполнения условия поля появляются, высота самой мини-карточки увеличивается, а её положение не меняется.
И в итоге я получаю кнопку "Сохранить" за пределами экрана и без возможности скроллинга (http://joxi.ru/RmzbjObHllMlmO).
Положение, мини-карточки определяется стилями, применёнными к тэгу div с id = AlignableMiniPageContainer, но где расчитываются top и left не нашёл.
"Коновалов Игорь" написал:Ещё один нюанс:
Добавил в мини-карточку активности поле список "Стадии продажи"
Добавляю сортировку поля в массив attributes:
"UsrOpportunityStage": {
dataValueType: Terrasoft.DataValueType.LOOKUP,
columns: ["Number"],
lookupListConfig: {
orders: [{
columnPath: "Number",
direction: Terrasoft.OrderDirection.ASC,
}]
}
}В итоге сортировка не отрабатывает.
Аналогичные настройки в стандартной PageV2 отрабатывают корректно.
Оказалось, что сортировка в мини-карточках не реализована.
Решение:
1. Замещаем BaseMiniPage.
2. В блок methods переносим код из BasePageV2
[javascript]
applyColumnsOrderToLookupQuery: function(esq, columnName) {
var lookupColumn = this.getColumnByName(columnName);
var lookupListConfig = lookupColumn.lookupListConfig;
if (!lookupListConfig || !lookupListConfig.orders) {
return;
}
var columns = esq.columns;
this.Terrasoft.each(lookupListConfig.orders, function(order) {
var orderColumnPath = order.columnPath;
if (!columns.contains(orderColumnPath)) {
esq.addColumn(orderColumnPath);
}
var sortedColumn = columns.get(orderColumnPath);
var direction = order.direction;
sortedColumn.orderDirection = direction ? direction : Terrasoft.OrderDirection.ASC;
var position = order.position;
sortedColumn.orderPosition = position ? position : 1;
this.shiftColumnsOrderPosition(columns, sortedColumn);
}, this);
},
shiftColumnsOrderPosition: function(columns, sortedColumn) {
var sortedColumnOrderPosition = sortedColumn.orderPosition;
if (Ext.isNumber(sortedColumnOrderPosition)) {
columns.each(function(column) {
if (column !== sortedColumn && Ext.isNumber(column.orderPosition) && column.orderPosition >= sortedColumnOrderPosition) {
column.orderPosition += 1;
}
});
}
},
[/javascript]
3. И переопределяем метод getLookupQuery
[javascript]
getLookupQuery: function(filterValue, columnName) {
var esq = this.callParent(arguments);
this.applyColumnsOrderToLookupQuery(esq, columnName);
return esq;
},
[/javascript]
4. Чистим кэш и наслаждаемся работой сортировки справочных полей в мини-карточке :smile: