Разноцветные записи реестра в мобильном приложении
Подскажите, пожалуйста, как в мобильном приложении сделать цветной реестр для секции? (AccountSection).
Нравится
Через sdk можно добавлять произвольный html код в колонки. Аналогично для справочника делается.
Terrasoft.sdk.GridPage.setPrimaryColumn("Activity", {
columns: [/*колонки*/],
convertFunction: function(values) {
var str = "мод html код";
return str;
}
})
Бершеда Д. Н.,
речь идет о css стилях в html? Какого вида текст там должен быть, "<style type="text/css"> ... </style>" такого? В декстопной версии есть метод, полностью окрашивающий строку реестра, тут требуется аналогично сделать.
В мобилке нет подобного. Нужно стилями прописывать или конкретными тегами. Например, так.
<div style = "background-color: red">текст</div>
Артём, также обратите внимание на публикацию. Она довольно старая, по 7.9, указанной там схемы уже нет, но все актуально. Метод writeStyles - это утилитный метод, который не расположен в указанной схеме. Его можно использовать везде.
В современных версиях использование writeStyles есть в MobileActivityGridPageViewV2, но там это использовано не для цвета. В конце скрипта:
}, function() {
Terrasoft.util.writeStyles(
"#ActivityGridPage .x-navigation-panel .x-title.cf-multi-modes .x-innerhtml:after {",
Terrasoft.util.getImageStyleByImageId("MobileActivityGridPageViewV2IconArrowDown"),
"}"
);
if (!Terrasoft.ApplicationUtils.isOnlineMode()) {
Terrasoft.util.writeStyles(
".x-navigation-panel.x-toolbar .x-button.x-activity-grid-owner-button.x-button-pressing {",
"opacity: 1 !important;",
"}"
);
}
});Ещё пример реализации есть в этой теме.
Зверев Александр,
Сделал раскраску списка контрагентов
Terrasoft.util.writeStyles(".x-unsized .x-list-item .x-list-item-tpl .x-list-item-relative {", "background-color: red !important;","}");
Но все строчки имеют такой класс...
Можно ли как-нибудь делать условия на записи (к примеру у записи OwnerId = ... то цвет зеленый, иначе белый)?
Артём, посмотрите ещё по второй ссылке, там именно этот случай.
Зверев Александр,
Спасибо, в манифесте:
"Account": {
"Grid": "NavMobileAccountGridPage"
...копирнул в NavMobileAccountGridPage
Ext.define("Terrasoft.configuration.MyList", {
extend: "Ext.Terrasoft.List",
xtype: "cfmylist",
getApplyItemTplPrimaryColumnFn: function() {
return function(values) {
var config = this.primaryColumnConfig;
var value = this.getValueByConfig(config, values);
var typeId = values["Type"];
var isRed = false;
if (typeId === "some_type_value") {
isRed = true;
}
if (value) {
return "<div class=\"x-list-title\" " + isRed ? "style=\"color: red;\"" : "" + ">" + value + "</div>";
}
return "";
};
}
});и в Controller добавил:
Ext.define("AccountGridPage.Controller", {
extend: "Terrasoft.controller.BaseGridPage",
statics: {
Model: Account
},
config: {
refs: {
view: "#AccountGridPage"
},
grid: {
xtype: "cfmylist"
}
},
...Но при дебаге в getApplyItemTplPrimaryColumnFn не заходит, подскажите, пожалуйста, что нужно исправить?
Сравните с примерами аналогичной функции в стандартной схеме MobileFeedList, может, что-то забыли?