Вопрос
Нам необходимо в некотором роде дублировать функционал progress bar из раздела Лиды. Какими характеристиками должен обладать lookup в разделе помимо наличия колонки с номером, чтобы при отображении в реестре(List View) к нему применился прогресс бар модуль?
Интересует применение данного функционала для объекта Аккаунт, по аналогии с объектом Лид и полем Lead stage.
Ответ
Для реализации функционала progress bar на странице списка необходимо:
1) Чтобы поле справочного типа, которое Вы ходите выводить как progress bar, обладало доп. колонкой UsrStageNumber, которая собственно и будет определять стадию прогресса.
2) Реализовать необходимые методы и зависимости по аналогии с LeadSectionV2 для AccountSectionV2.
3) Если стадий у вас не 5, то написать свой элемент управления, с другим количеством стадий по аналогии с BaseProgressBarModule и использовать его в AccountSectionV2.
Создан справочник UsrAccStage с колонкой UsrStageNumber, и выведен в одноименную колонку в Account.
![]()
Код замещающей схемы страницы секции контрагента:
define("AccountSectionV2", ["AccountSectionV2Resources", "terrasoft", "ControlGridModule", "BaseProgressBarModule",
"EntityHelper", "css!BaseProgressBarModule"], function(resources, Terrasoft) {
return {
entitySchemaName: "Account",
diff: /**SCHEMA_DIFF*/[
{
"operation": "remove",
"name": "DataGrid"
},
{
"operation": "insert",
"name": "DataGrid",
"parentName": "DataGridContainer",
"propertyName": "items",
"values": {
"itemType": Terrasoft.ViewItemType.GRID,
"type": {"bindTo": "GridType"},
"listedZebra": true,
"activeRow": {"bindTo": "ActiveRow"},
"collection": {"bindTo": "GridData"},
"isEmpty": {"bindTo": "IsGridEmpty"},
"isLoading": {"bindTo": "IsGridLoading"},
"multiSelect": {"bindTo": "MultiSelect"},
"primaryColumnName": "Id",
"selectedRows": {"bindTo": "SelectedRows"},
"sortColumn": {"bindTo": "sortColumn"},
"sortColumnDirection": {"bindTo": "GridSortDirection"},
"sortColumnIndex": {"bindTo": "SortColumnIndex"},
"selectRow": {"bindTo": "rowSelected"},
"linkClick": {"bindTo": "linkClicked"},
"needLoadData": {"bindTo": "needLoadData"},
"activeRowAction": {"bindTo": "onActiveRowAction"},
"activeRowActions": [],
"className": "Terrasoft.ControlGrid",
"controlColumnName": "UsrAccStage",
"applyControlConfig": {"bindTo": "applyControlConfig"},
"getEmptyMessageConfig": {"bindTo": "prepareEmptyGridMessageConfig"}
}
}
]/**SCHEMA_DIFF*/,
methods: {
getGridDataColumns: function() {
var gridDataColumns = this.callParent(arguments);
gridDataColumns.UsrAccStage = gridDataColumns.UsrAccStage || {path: "UsrAccStage"};
gridDataColumns["UsrAccStage.UsrStageNumber"] =
gridDataColumns["UsrAccStage.UsrStageNumber"] || {path: "UsrAccStage.UsrStageNumber"};
return gridDataColumns;
},
applyControlConfig: function(control) {
control.config = {
className: "Terrasoft.BaseProgressBar",
value: {
"bindTo": "UsrAccStage",
"bindConfig": {"converter": "getUsrAccStageValue"}
},
width: "158px"
};
},
getUsrAccStage: function(id) {
var activeRow;
if (id) {
var gridData = this.getGridData();
activeRow = gridData.get(id);
} else {
activeRow = this.getActiveRow();
}
if (!activeRow) {
return null;
}
var accStage = activeRow.get("UsrAccStage");
return (accStage) ? accStage.value : null;
},
addColumnLink: function(item) {
item.getUsrAccStageValue = function(accStage) {
if (!accStage) {
return null;
} else {
return {
value: this.get("UsrAccStage.UsrStageNumber"),
displayValue: accStage.displayValue
};
}
};
return this.callParent(arguments);
}
}
};
}
);Как результат для записей, где стадия заполнена, в соответствующей колонке отображается progress bar:
![]()
Добрый день! Подскажите, пожалуйста, как сделать так, чтобы цвет тянулся с цвета стадии в кейсе?
Добрый день, Константин
Можно воспользоваться решением из marketplace, цвет будет использоваться с цвета стадии в кейсе - https://marketplace.creatio.com/app/case-stage-color-coding-creatio
С уважением,
Игорь
Ihor Skohariev,
Спасибо, Игорь! Но именно интересует подкраска progress bar. Может есть какой-то вариант для этого? Или может можно как-то в самом файле элемента progress bar прописать коды нужных цветов? Подскажите, пожалуйста.
Сам цвет прогресс бара реализован в стиле модуля BaseProgressBarModule, конкретно в этом месте:
.ts-progress-bar-item-active {
background: #f8c065;
}Вы можете переписать этот элемент со своим необходимым цветом.
Однако, тут встает вопрос, как получить цвет необходимой стадии. Рекомендую обратить внимание на код указанного выше дополнения из маркетплейса и как там это реализованно.
Добрый день, коллеги! После использования кода замещения схемы пропало отображение кнопок "Открыть", "Копировать", "Удалить", которые появляются при выделении мышкой. Подскажите, пожалуйста, что необходимо подправить в коде, чтоб они появились обратно?
Константин,
Добрый вечер,
В коде Вам необходимо:
1) Удалить remove грида:
{
"operation": "remove",
"name": "DataGrid"
},2) "operation": "insert" заменить на "operation": "merge"
3) удалить из DataGrid свойство "activeRowActions": [],
В итоге код в diff должен стать таким:
{
"operation": "merge",
"name": "DataGrid",
"parentName": "DataGridContainer",
"propertyName": "items",
"values": {
"itemType": Terrasoft.ViewItemType.GRID,
"type": {"bindTo": "GridType"},
"listedZebra": true,
"activeRow": {"bindTo": "ActiveRow"},
"collection": {"bindTo": "GridData"},
"isEmpty": {"bindTo": "IsGridEmpty"},
"isLoading": {"bindTo": "IsGridLoading"},
"multiSelect": {"bindTo": "MultiSelect"},
"primaryColumnName": "Id",
"selectedRows": {"bindTo": "SelectedRows"},
"sortColumn": {"bindTo": "sortColumn"},
"sortColumnDirection": {"bindTo": "GridSortDirection"},
"sortColumnIndex": {"bindTo": "SortColumnIndex"},
"selectRow": {"bindTo": "rowSelected"},
"linkClick": {"bindTo": "linkClicked"},
"needLoadData": {"bindTo": "needLoadData"},
"activeRowAction": {"bindTo": "onActiveRowAction"},
"className": "Terrasoft.ControlGrid",
"controlColumnName": "Status",
"applyControlConfig": {"bindTo": "applyControlConfig"},
"getEmptyMessageConfig": {"bindTo": "prepareEmptyGridMessageConfig"}
}
}После обновления страницы все будет работать.