Цвет активностей

Здравствуйте.

Пытаюсь реализовать задачу, изменить цвет активностей (на оранжевый), если у активности высокий приоритет.
Переопределил метод prepareResponseCollection:
prepareResponseCollection: function(collection) {
var highPriorityId = "D625A9FC-7EE6-DF11-971B-001D60E938C6";
this.callParent(arguments);
var colour = "#F94D00";
collection.each(function(item) {
if (item.get("PriorityId") === highPriorityId) {
item.customStyle = {
background: colour
};
item.set("Background", colour);
}
}, this);
}

Если без ифа, то цвет меняют все активности.
С ифом не работает(цвет не меняется).
Подскажите, что неправильно (подозрение на item.get("PriorityId") )?

Нравится

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

Алексей, добрый день!

Попробуйте в сравнении использовать item.get("Priority").value - в активностях поле "Приоритет" типа "Справочник".

При использовании item.get("Priority").value страница активностей перестала отображаться вообще (Загрузка, не прекращается, не загружает)

Попробуйте

var priority = item.get("Priority");
if (!this.Ext.isEmpty(priority) && (priority.value === highPriorityId)) {
...
}

Возможно, не для всех активностей установлен приориет.

Теперь страница отображается, но цвет активностей с высоким приоритетом не меняется.
По всей видимости, дело не в этом.
Также проверил, приоритет проставлен для всех активностей.

Алексей, Вы добавляли поле "Priority" в атрибуты схемы?

attributes: {
	...
	"Priority": {
		dataValueType: Terrasoft.DataValueType.LOOKUP
	}
}

Также попробуйте включить отладчик, установить точку остановки в момент проверки условия и проверить значение переменной priority в этот момент.

в priority - undefined.
Вот код:
define("ActivitySectionV2", ["ConfigurationConstants", "FieldForceConfigurationConstants"],
function(ConfigurationConstants, FieldForceConfigurationConstants) {
return {

entitySchemaName: "Activity",
details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
attributes: {
"Priority": {
dataValueType: Terrasoft.DataValueType.LOOKUP
}
},

methods: {
prepareResponseCollection: function(collection) {
var highPriorityId = "D625A9FC-7EE6-DF11-971B-001D60E938C6";
this.callParent(arguments);
var colour = "#F94D00";
collection.each(function(item) {
var priority = item.get("Priority");
debugger;
if ((!this.Ext.isEmpty(priority)) && (priority.value === highPriorityId)) {

item.customStyle = {
background: colour
};
item.set("Background", colour);
}
}, this);
}
},
diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/
};
});

Алексей, Вы хотите реализовать данный функционал в расписании активностей? Дело в том, что в режиме расписания доступны не все колонки схемы Activity, а только некоторые. Для получения значения поля "Приоритет" активности необходимо добавить соответствующую колонку в запрос.

Попробуйте для начала вместо item.get("Priority") подставить item.get("Status"). Если значение будет отличаться от undefined, переопределите схему ActivitySectionV2, добавив в список колонок метода getGridDataColumns колонку "Priority".

Здравствуйте, Олег.
Действительно, после подставки item.get("Status") - priority получила значение.
После переопределения метода getGridDataColumns и добавления в него колонки "Priority" все заработало.
Спасибо Вам за консультацию.

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