Проблема с полями в мини-карточке активности в 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:
"UsrOpportunityStage": { dataValueType: Terrasoft.DataValueType.LOOKUP, columns: ["Number"], lookupListConfig: { orders: [{ columnPath: "Number", direction: Terrasoft.OrderDirection.ASC, }] } }
В итоге сортировка не отрабатывает.
Аналогичные настройки в стандартной 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
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; } }); } },
3. И переопределяем метод getLookupQuery
getLookupQuery: function(filterValue, columnName) { var esq = this.callParent(arguments); this.applyColumnsOrderToLookupQuery(esq, columnName); return esq; },
4. Чистим кэш и наслаждаемся работой сортировки справочных полей в мини-карточке :smile: