# 이벤트 조회, 필터링 및 새로고침

## Content

애플리케이션에서 일부 이벤트만 조회하거나, 업무 기준에 따라 일정을 필터링하거나, 데이터 변경 후 스케줄러를 새로 고쳐야 할 때 이 내용을 참고하세요. 이러한 작업은 런타임 데이터 처리에 해당합니다. 이벤트 필드 매핑에 대한 자세한 내용은 이벤트 데이터 구성을 참조하세요.

## 날짜 및 리소스별 이벤트 조회

애플리케이션에서 특정 시간 범위나 리소스에 해당하는 원본 이벤트를 조회하려면 `getEvents`를 사용합니다. 리소스 조건은 `SchedulerResourceQuery` 배열로 전달합니다.

```ts
const visibleEvents = scheduler.getEvents(
  new Date(2026, 7, 24),
  new Date(2026, 7, 25),
  [{ fieldExpr: 'roomId', value: 'room-a' }],
);
```

반환되는 값은 렌더링된 이벤트 조각이 아니라 원본 항목입니다. `start` 경계는 포함되며 `end` 경계는 포함되지 않습니다.

## CollectionView로 이벤트 필터링

상태, 팀, 담당자 또는 검색어와 같은 애플리케이션 조건을 충족하는 이벤트만 사용자에게 표시해야 하는 경우 `CollectionView` 필터를 사용합니다.

```ts
const events = new wjCore.CollectionView(allEvents);
scheduler.itemsSource = events;
events.filter = item =>
  item.status === 'Confirmed' && item.team === selectedTeam;
```

필터를 변경하면 컬렉션 뷰가 새로 고쳐집니다. 스케줄러는 컬렉션의 현재 뷰를 렌더링하며 원본 배열을 수정하지 않습니다.

## 검색 조건과 필터 조건 결합

검색 텍스트와 선택 컨트롤이 일관되게 적용되도록 필터 조건 함수를 애플리케이션 상태로 관리합니다.

```ts
function refreshFilter() {
  const term = searchText.trim().toLowerCase();
  events.filter = item => {
    const matchesText = !term || item.subject.toLowerCase().includes(term);
    const matchesStatus = statusFilter === 'All' || item.status === statusFilter;
    return matchesText && matchesStatus;
  };
}
```

리소스별 레인을 표시하거나 리소스 할당을 확인해야 한다면 리소스 설명자를 사용하세요. 컬렉션 필터링으로 리소스 구성을 대신하지 마세요.

## 데이터 변경 후 새로 고침

스케줄러가 변경 사항을 감지할 수 있도록 바인딩된 `CollectionView`를 통해 항목을 추가하거나 수정 또는 삭제하세요.

```ts
events.addNew(newEvent);
events.commitNew();
```

항목을 수정할 때는 [이벤트 생성, 편집 및 삭제](/wijmo/docs/Topics/scheduler/create--edit--and-delete-events)에 설명된 컬렉션 API를 사용해 원본 데이터를 업데이트하세요. 화면에 표시된 이벤트 요소를 직접 수정하지 마세요.

## 서버 데이터 업데이트 후 새로 고침

서버 요청이 완료되면 컬렉션 소스를 교체하거나 업데이트한 뒤 뷰를 새로 고치세요. 스케줄러는 서버 작업을 자동으로 롤백하지 않으므로, 요청이 실패했을 때의 처리는 애플리케이션 코드에서 직접 구현해야 합니다.

```ts
const response = await api.getEvents();
events.sourceCollection = response.items;
events.refresh();
```

업데이트가 증분 방식으로 도착하는 경우 전체 소스를 교체하는 대신 기존 컬렉션에 적용합니다. 이렇게 하면 필터 및 기타 컨트롤에서 사용하는 컬렉션 인스턴스가 유지됩니다.

## 스케줄러와 애플리케이션 상태 동기화

| 작업 | 권장 담당 주체 |
| --- | -------- |
| 필드 매핑 및 유효성 검사 | 애플리케이션 및 스케줄러 구성 |
| 검색 및 업무 기준 필터링 | `CollectionView` 또는 애플리케이션 상태 |
| 날짜 및 리소스 조회 | `getEvents` |
| 로컬 컬렉션 변경 알림 | `CollectionView` |
| 서버 저장 | 애플리케이션 서비스 계층 |

필드 매핑 규칙은 [이벤트 데이터 구성](/wijmo/docs/Topics/scheduler/configure-event-data)을, 사용자가 편집한 이벤트를 저장하는 방법은 [이벤트 생성, 편집 및 삭제](/wijmo/docs/Topics/scheduler/create--edit--and-delete-events)를 참조하시기 바랍니다.