Рендеринг блока сообщений в чате

102
15 сентября 2021, 17:30

Использую Angular, и через async pipe вывожу сообщения в контейнер чата. Нужно реализовать группировку сообщений по дням (как на картинке). Подскажите пожалуйста, как это реализовать ?

Answer 1

Решил таким вот образом.

messages.reduce((prev, curr, index, arr) => {
      let prevObj = index - 1;
      if (curr.formatedDate == arr[prevObj].formatedDate) {} else {
        arr[prevObj].groupDate = arr[prevObj].formatedDate
      }
      return arr;

Передаю массив в фукцию, где у каждого обьекта сравниваю время. Если время отличается, то предыдущему обьекту добавляю поле с предыдущим временем. И это поле рендерю в чате. НА выходе из функцию получаю свой же массив, но уже с нужными мне изменениями. И такая функцию отлично работает и с пагинацией и с подключением webSocket'ов.

READ ALSO
Прокрутить страницы вниз jquery после загрузки страницы

Прокрутить страницы вниз jquery после загрузки страницы

где ошибся? после полной загрузки страницы, нужно прокрутить ее вниз до id

72
Почему возникает ошибка TypeError: Cannot convert a Symbol value to a string?

Почему возникает ошибка TypeError: Cannot convert a Symbol value to a string?

Почему не конслоится this в методе vue:

156
Переключатель цветов

Переключатель цветов

Не могу понять как правильно решить заданиеЕсть массив цветов в hex-формате и кнопки Start и Stop Нужно написать скрипт, который после нажатия...

88
border-top на 50%

border-top на 50%

Нужно как-то указать размер border-topШирина блока 300px, border-top должен быть на 150px (50%) Как это сделать?

81