загрузка данных из календаря

#angular

#angular

Вопрос:

Я смог написать такой интерфейс. Теперь я хотел бы иметь возможность устанавливать диапазоны часов с перерывами для отдельных дней недели, например, для понедельника я хотел бы иметь возможность устанавливать, например, часы: 6-10, 14-17. Прямо сейчас я собираюсь делать это по щелчкам, потому что перетаскивание (mousedown, mousemove, mouseenter) кажется довольно продвинутым. Кто-нибудь может мне помочь с этим? Как получить данные о том, что для данного дня было установлено следующее время?

https://stackblitz.com/edit/angular-ivy-vf9esz?file=src/app/app.component.html

Ответ №1:

Не очень сложный, но поскольку вы начинаете делать это простым способом, возможно, это вам поможет:

Здесь ваш код отлично работает с нужной вам «функцией»: https://stackblitz.com/edit/angular-ivy-b1ecw5?file=src/app/app.component.ts

Добавьте некоторый индекс к вашим for в HTML и отправьте их с помощью метода click():

 <tr *ngFor="let row of arr, index as day">
   <td class="border-0">
      <p class="text-right mr-2">{{ row.name }}</p>
   </td>
   <td
      (click)="click($event, day, range)"
      class="border"
      style="width: 25px; background-color: rgba(241, 236, 236, 0.363);"
      *ngFor="let cell of row.items, index as range"
   ></td>
 

В ts:

 
  weekDaysRangeSelected = [
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
  ];

click(e, day: number, range: number) {
    console.log('klik');
    e.target.style.backgroundColor = 'red';

    console.log('day, range:', day, range);

    this.weekDaysRangeSelected[day][range] = 1;

    console.log(this.weekDaysRangeSelected);
  }