• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/grid/task/row/counter.php
  • Класс: Bitrix\Tasks\Grid\Task\Row\Counter
  • Вызов: Counter::prepare
public function prepare(): array
{
	$userId = (int)$this->parameters['USER_ID'];
	$taskId = (int)$this->rowData['ID'];
	$groupId = (int)$this->rowData['GROUP_ID'];

	$colorMap = [
		CounterStyle::STYLE_GRAY => Grid\Counter\Color::GRAY,
		CounterStyle::STYLE_GREEN => Grid\Counter\Color::SUCCESS,
		CounterStyle::STYLE_RED => Grid\Counter\Color::DANGER,
	];

	$rowCounter = [
		'VALUE' => 0,
		'COLOR' => Grid\Counter\Color::GRAY
	];

	if (
		array_key_exists('CAN_SEE_COUNTERS', $this->parameters)
		&& $this->parameters['CAN_SEE_COUNTERS']
	)
	{
		$rowCounter = (new TaskCounter($userId))->getRowCounter($taskId);
	}

	$taskUrlTemplate = (
		$groupId > 0 ? RouteDictionary::PATH_TO_GROUP_TASK : RouteDictionary::PATH_TO_USER_TASK
	);
	$taskUrl = \CComponentEngine::MakePathFromTemplate($taskUrlTemplate, [
		'user_id' => $userId,
		'task_id' => $taskId,
		'group_id' => $groupId,
		'action' => 'view',
	]);

	return [
		'ACTIVITY_DATE' => [
			'type' => Grid\Counter\Type::LEFT_ALIGNED,
			'color' => ($colorMap[$rowCounter['COLOR']] ?? null),
			'value' => $rowCounter['VALUE'],
			'events' => [
				'click' => "BX.SidePanel.Instance.open.bind(BX.SidePanel.Instance, '{$taskUrl}')",
			],
			'class' => 'tasks-list-cursor',
		],
	];
}