Как можно показать список пользователей в тренинге сортируя их по группам?

Задан 1 год назад
Просмотрен 46624 раза
0

Как можно показать список пользователей в тренинге сортируя их по группам, то есть: если я ученик и нахожусь в "группе 1" то я должен видеть всех пользователей которые находятся в "группе 1"

группа
код
пользователи
тренинг
Сделаем GetOverflow лучше!
Проголосуйте 🔼 за полезные или 🔽 за бесполезные ответы.
1 ответ
2

Добрый день, Николай

Один из способов реализации заключается в следующем:

Ставим в тренинг блок "список учеников". Ставим в тренинг блок "Javascript"!

Пишем следующий код:

$(document).ready(function(){
	const filteredClassNames = [];
	const classNames = $('.table.users-stat-table .user-tr .username[title="' + accountUserId + '"]').closest('.user-tr').attr('class');
	const regex = /f-group-\d+/g;
	const matches = classNames.match(regex);
	if (matches) {
		matches.forEach(function(match) {
			filteredClassNames.push(match);
		});
	}
	$('.table.users-stat-table .user-tr').each(function() {
	  const elementClassNames = $(this).attr('class');
	  const regex = /f-group-\d+/g;
	  const matches = elementClassNames.match(regex);
	  
	  if (!matches || !matches.some(match => filteredClassNames.includes(match))) {
		$(this).hide();
	  }
	});
});

Данный код скроет из таблицы всех учеников, которые НЕ имеют ни одной общей группы с текущем пользователем. Код можно дополнить, чтобы проверялось соответствие только определенных групп

Внешний вид таблицы настраивается своими css стилями

Спасибо большое! Я поправил немножко и работает идеально!

$(document).ready(function () {
    const filteredClassNames = [];
    const SafeUserName = window.accountSafeUserName;
    const userName = SafeUserName.toLowerCase();
    const classNames = $('.xdget-student-list .user-tr[data-username="' + userName + '"]').attr("class");

    const regex = /f-group-\d+/g;
    const matches = classNames.match(regex);
    if (matches) {
      matches.forEach(function (match) {
        filteredClassNames.push(match);
      });
    }
    $(".xdget-student-list .user-tr").each(function () {
      const elementClassNames = $(this).attr("class");
      const regex = /f-group-\d+/g;
      const matches = elementClassNames.match(regex);

      if (
        !matches ||
        !matches.some((match) => filteredClassNames.includes(match))
      ) {
        $(this).hide();
      }
    });
  });
Nicolae 1 год назад
Ваш ответ