src/app/course-tabs/course-sidebar/course-sidebar.component.ts
The sidebar containing selected course management and the CourseSelectionComponent.
| selector | app-course-sidebar |
| styleUrls | course-sidebar.component.css |
| templateUrl | ./course-sidebar.component.html |
Properties |
|
Methods |
constructor(courseService: CourseService, toolService: ToolService)
|
||||||||||||
|
Constructor
Parameters :
|
| courseOverlay |
courseOverlay()
|
|
Toggles the CourseSelectionComponent overlay open and closed.
Returns :
void
|
| removeAll |
removeAll()
|
|
Removes all courses from the sidebar.
Returns :
void
|
| setSelectedCourse | ||||||||
setSelectedCourse(course: Course)
|
||||||||
|
Sets the currently selected course to the one provided.
Parameters :
Returns :
void
|
| Public courseService |
courseService:
|
Type : CourseService
|
|
Provides information and management for selected courses.
|
import { Component } from '@angular/core';
import { CourseService } from '../../course.service';
import { ToolService } from '../../tool.service'; // Used in course-sidebar.component.html (i.e. DO NOT DELETE)
import { Course } from '../../interfaces';
/**
* The sidebar containing selected course management and the
* {@link CourseSelectionComponent}.
*/
@Component({
selector: 'app-course-sidebar',
templateUrl: './course-sidebar.component.html',
styleUrls: ['./course-sidebar.component.css']
})
export class CourseSidebarComponent {
/**
* Constructor
* @param courseService Provides information and management for selected courses.
* @param toolService Provides information and management for available tools.
* Used in course-sidebar.component.html (i.e. DO NOT DELETE).
*/
constructor(public courseService: CourseService,
private toolService: ToolService) { }
/**
* Toggles the {@link CourseSelectionComponent} overlay open and closed.
*/
courseOverlay() {
// cast the returned Element object to an HTMLElement object
let overlay: HTMLElement = document.querySelector('app-course-selection');
// toggle add the 'open' class to the app-course-selection component
if (overlay.className === 'open') {
overlay.className = 'close';
} else if (overlay.className === 'close') {
overlay.className = 'open';
} else {
overlay.style.display = 'block';
overlay.className = 'open';
}
this.courseService.courseSelectionOpen = !this.courseService.courseSelectionOpen;
}
/**
* Sets the currently selected course to the one provided.
* @param {Course} course The course to be set as the currently selected course.
*/
setSelectedCourse(course: Course) {
if (window.location.href.includes('tool-view')) {
this.courseService.selectedCourse = course;
}
}
/** Removes all courses from the sidebar. */
removeAll() {
this.courseService.courses.forEach(c => this.courseService.removeCourse(c));
}
}
<div class="courseSidebar">
<h1 class="courseSidebar__title">Courses</h1>
<div class="courseSidebar__courseChip__container" [class.toolView]="toolService.toolViewOpen">
<button *ngIf="courseService.courseSelectionOpen" class="waves-effect red lighten-1 btn removeAll" (click)="removeAll()">Remove All</button>
<app-course-chip *ngFor="let course of courseService.courses" [course]="course" (click)="this.courseService.selectedCourse = course"></app-course-chip>
</div>
<div class="courseSidebar__expandSidebar">
<div class="courseSidebar__actionItem" *ngIf="!toolService.toolViewOpen">
<i class="blue accent-3 z-depth-2 material-icons addButton no-select" [class.pulse]="courseService.courses.length === 0 && !courseService.courseSelectionOpen"
[class.enabled]="courseService.courseSelectionOpen" (click)="courseOverlay()" materialize="tooltip" data-position="right"
data-tooltip="Add Courses">{{courseService.courseSelectionOpen ? 'close' : 'add'}}</i>
</div>
</div>
</div>
<app-course-selection></app-course-selection>
<div (click)="toggleEditWindow()" *ngIf="courseService.courseEditOpen" class="dark-overlay"></div>