File

src/app/course-tabs/course-sidebar/course-sidebar.component.ts

Description

The sidebar containing selected course management and the CourseSelectionComponent.

Metadata

selector app-course-sidebar
styleUrls course-sidebar.component.css
templateUrl ./course-sidebar.component.html

Index

Properties
Methods

Constructor

constructor(courseService: CourseService, toolService: ToolService)

Constructor

Parameters :
Name Type Optional Description
courseService CourseService no

Provides information and management for selected courses.

toolService ToolService no

Provides information and management for available tools. Used in course-sidebar.component.html (i.e. DO NOT DELETE).

Methods

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 :
Name Type Optional Description
course Course no

The course to be set as the currently selected course.

Returns : void

Properties

Public courseService
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>
Legend
Html element
Component
Html element with directive

results matching ""

    No results matching ""