Instructors
{#if course.instructors.length > 0}
{#each course.instructors as instructor}
{instructor.displayName}
{#if 'rmpRating' in instructor && instructor.rmpRating}
{@const rating = instructor.rmpRating as number}
{rating.toFixed(1)}โ
{/if}
{instructor.displayName}
{#if instructor.isPrimary}
Primary instructor
{/if}
{#if 'rmpRating' in instructor && instructor.rmpRating}
{(instructor.rmpRating as number).toFixed(1)}/5 ({(instructor as any).rmpNumRatings ?? 0} ratings)
{/if}
{#if instructor.email}
{/if}
{/each}
{:else}
Staff
{/if}
Meeting Times
{#if course.meetingTimes.length > 0}
{#each course.meetingTimes as mt}
-
{#if isMeetingTimeTBA(mt) && isTimeTBA(mt)}
TBA
{:else}
{#if !isMeetingTimeTBA(mt)}
{formatMeetingDaysLong(mt)}
{/if}
{#if !isTimeTBA(mt)}
{formatTime(mt.begin_time)}–{formatTime(mt.end_time)}
{:else}
Time TBA
{/if}
{/if}
{#if mt.building || mt.room}
{mt.building_description ?? mt.building}{mt.room ? ` ${mt.room}` : ""}
{/if}
{formatDate(mt.start_date)} – {formatDate(mt.end_date)}
{/each}
{:else}
TBA
{/if}
Delivery
{course.instructionalMethod ?? "โ"}
{#if course.campus}
ยท {course.campus}
{/if}
Credits
{formatCreditHours(course)}
{#if course.attributes.length > 0}
Attributes
{#each course.attributes as attr}
{attr}
{/each}
{/if}
{#if course.crossList}
Cross-list
{course.crossList}
{#if course.crossListCount != null && course.crossListCapacity != null}
{course.crossListCount}/{course.crossListCapacity}
{/if}
Group {course.crossList}
{#if course.crossListCount != null && course.crossListCapacity != null}
โ {course.crossListCount} enrolled across {course.crossListCapacity} shared seats
{/if}
{/if}
{#if course.waitCapacity > 0}
Waitlist
{course.waitCount} / {course.waitCapacity}
{/if}