[]
스케줄러가 예상대로 동작하지 않는 경우 이 페이지에서 문제 해결 방법을 확인할 수 있습니다. 각 섹션에서는 먼저 발생한 증상을 설명하고, 가능한 원인과 문제를 진단하기 위해 확인해야 할 항목을 안내합니다.
특정 증상을 확인하기 전에 다음 항목을 먼저 점검하세요. 호스트 요소의 높이가 0이 아닌지, Wijmo CSS가 로드되었는지, itemsSource가 설정되었는지, start와 end가 유효한 Date 값에 매핑되었는지, displayDate가 설정되었는지, 활성 definition이 유효한지 확인하세요.
가능한 원인:
호스트 요소의 높이가 제대로 설정되지 않았거나, 스타일시트가 누락되었거나, 모듈을 불러오는 과정에서 오류가 발생했을 수 있습니다.
확인 사항:
FlexScheduler를 생성할 때 호스트 요소가 존재하고, 높이가 0이 아니며, 화면에 표시되는지 확인합니다.
@mescius/wijmo.styles/wijmo.css가 로드되었는지 확인합니다.
네이티브 ES 모듈을 사용하는 경우 @mescius/wijmo, @mescius/wijmo.input, @mescius/wijmo.scheduler에 대한 import map 항목을 확인합니다.
가능한 원인:
@mescius/wijmo.scheduler에서 참조하는 패키지가 올바르게 매핑되지 않았거나, 빌드 환경에서 해당 패키지를 찾을 수 없을 수 있습니다.
확인 사항:
번들러가 패키지 메타데이터를 통해 @mescius/wijmo와 @mescius/wijmo.input을 찾을 수 있는지 확인합니다.
네이티브 ES 모듈을 사용하는 경우 각 패키지에 대한 import map 항목을 명시적으로 설정해야 합니다.
가능한 원인:
데이터 소스가 비어 있거나, 필드 매핑이 일치하지 않거나, 날짜 값이 유효하지 않을 수 있습니다.
확인 사항:
itemsSource, 매핑된 start 및 end 속성, 유효한 Date 값, 그리고 start < end 조건을 확인합니다.
서버에서 직렬화된 날짜는 바인딩하기 전에 변환합니다.
displayDate를 데이터가 포함된 날짜로 설정합니다.
가능한 원인:
displayDate, timeZone 또는 서버 측 UTC/로컬 시간 변환 정책이 일치하지 않을 수 있습니다.
확인 사항:
스케줄러의 timeZone과 각 Date 값을 생성하는 데 사용한 정책을 확인합니다. 명시적인 변환 없이 로컬 시각 값과 UTC 시점을 혼용하지 마세요.
가능한 원인:
이벤트가 여러 날짜에 걸쳐 있거나 여러 리소스 섹션에 걸쳐 표시되는 경우 발생할 수 있습니다.
확인 사항:
이벤트를 여러 조각으로 나누어 표시하는 레이아웃에서는 정상적인 동작입니다. 각 조각을 별개의 항목으로 처리하지 말고, 하나의 원본 항목으로 취급하여 수정하세요.
가능한 원인:
이벤트 데이터, 리소스 설명자, 축 바인딩에서 서로 다른 필드나 식별자를 사용하고 있을 수 있습니다.
확인 사항:
fieldExpr, dataSource의 값, 활성 definition의 바인딩을 확인합니다.
다중 값 리소스를 사용하는 경우 allowMultiple: true로 설정되어 있는지, 해당 속성의 값이 배열인지 확인합니다.
definition이 렌더링되지 않는 경우가능한 원인:
축 식별자가 중복되었거나 시간 기반 레이아웃의 규칙을 충족하지 못했을 수 있습니다.
확인 사항:
planSchedulerProjection을 호출하고 integrity.level 및 integrity.reasons를 확인합니다.
시간 기반 레이아웃에는 time:hour 바인딩이 하나 필요합니다.
definition의 그룹화 결과가 예상과 다른 경우가능한 원인:
time:hour가 다른 바인딩과 동일한 축을 공유하여 레이아웃이 정규화되었을 수 있습니다.
확인 사항:
다른 바인딩을 반대쪽 축으로 이동합니다.
가능한 원인:
workDays가 workHours보다 우선 적용되거나, 비작업 시간 셀이 숨겨진다고 잘못 이해했을 수 있습니다.
확인 사항:
workDays를 초기화하거나 수정합니다. 작업 시간 설정은 셀의 스타일을 변경하지만 셀을 숨기지는 않습니다.
축 항목을 표시하지 않으려면 시간 바인딩의 visible 콜백을 사용합니다.
가능한 원인:
두 스케줄러가 서로 다른 definition을 사용하거나, 동기화 대상 축의 바인딩이 달라 동일한 스크롤 오프셋이 서로 다른 위치를 가리킬 수 있습니다.
확인 사항:
두 스케줄러에서 동일한 definition을 사용하거나 동기화 대상 축의 바인딩을 일치시킵니다.
파트너 참조를 보유한 인스턴스에서 scrollingSyncDirection이 올바르게 설정되어 있는지도 확인합니다.
가능한 원인:
유효성 검사에 실패했거나 취소 가능한 이벤트에서 변경 요청이 거부되었을 수 있습니다.
확인 사항:
itemChanging 및 conflictChecked 이벤트에서 args.cancel이 설정되는지 확인합니다.
시작 및 종료 시간에 대한 유효성 검사도 확인하고, 서버에서 변경 사항을 거부한 경우 컬렉션을 다시 동기화합니다.
가능한 원인:
관련 옵션이 비활성화되어 있거나 현재 레이아웃에서 해당 작업을 지원하지 않을 수 있습니다.
확인 사항:
allowDragEvent와 allowResizeEvent 설정을 확인합니다.
Summary 뷰에서는 이벤트 이동은 지원하지만 크기 조정은 지원하지 않습니다.
가능한 원인:
충돌 감지는 기본적으로 수행되지만, 충돌이 감지되었다는 이유만으로 작업이 자동으로 차단되지는 않습니다. 작업을 취소하려면 애플리케이션에서 별도로 처리해야 합니다.
확인 사항:
충돌이 감지된 작업을 취소하려면 conflictChecked 이벤트에서 args.cancel = true를 설정합니다. 최종 유효성 검사는 서버 측에서도 수행하도록 유지하세요.
가능한 원인:
itemTemplate의 HTML 문자열에 동적 값을 삽입하면서 해당 값을 이스케이프하지 않았을 수 있습니다.
확인 사항:
사용자 입력값을 이스케이프 처리합니다. 명령을 처리할 때는 렌더링된 이벤트 조각이 아닌 원본 항목을 사용합니다.
가능한 원인:
현재 대상이나 명령에 대해 canExecute가 false를 반환할 수 있습니다.
확인 사항:
hitTestType을 확인하고, 기본 제공 명령은 기본 클래스의 구현을 호출합니다.
가능한 원인:
항목이 현재 뷰에서 벗어났거나 대체 UI로 인해 문서의 Tab 이동 순서가 변경되었을 수 있습니다.
확인 사항:
기본 Tab 이동 순서를 유지하고, 문서에 설명된 포커스 복원 동작을 확인합니다.
문제를 보고할 때는 다음 정보를 포함해주시기 바랍니다.
활성 definition의 키
표시 날짜
시간대
항목 수
대표 원본 항목 1개
매핑된 필드 이름
리소스 설명자
브라우저 콘솔 오류
이벤트 설명이나 위치 정보 등 민감한 데이터는 로그에 포함하지 마세요.