Проблема с полями в мини-карточке активности в LeadSectionActionsDashboard

Добрый день.
Добавил в мини-карточку активности два поля:
1. справочник "Контрагент" ("contentType": 5)
Проблема: после выбора значения справочника не закрывается пустое модальное окно LookupPage
2. Дата/время
Проблема: После выбора даты из календаря мини-карточка активности закрывается без сохранения.
Данное поведение наблюдается в мини-карточке вызываемой в LeadSectionActionsDashboard по нажатию на "Завершить" во "View" Mode. В "Edit" Mode всё в порядке.

Как альтернатива хотел отключить "View" Mode и загружать сразу "Edit" Mode. Переопределил атрибут

"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

Нравится

5 комментариев

Ещё один нюанс:
Добавил в мини-карточку активности поле список "Стадии продажи"
Добавляю сортировку поля в массив 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:

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