<eg-string #archiveSuccessString i18n-text text="Archival of {{tableName}} succeeded"></eg-string>
<eg-string #flairTooltip i18n-text text="Limited Editing"></eg-string>
-<div class="w-100 mt-2 mb-2">
- <eg-grid #grid idlClass={{idlClass}}
- [dataSource]="grid_source"
- [sortable]="true">
- <eg-grid-toolbar-button
- label="Create {{tableName}}" (onClick)="createNew()" i18n-label>
- </eg-grid-toolbar-button>
- <eg-grid-toolbar-action label="Edit Selected" i18n-label (onClick)="editSelected($event)">
- </eg-grid-toolbar-action>
- <eg-grid-toolbar-action label="Delete Selected" i18n-label (onClick)="deleteSelected($event)">
- </eg-grid-toolbar-action>
- <eg-grid-toolbar-action label="Archive Selected" i18n-label (onClick)="archiveSelected($event)">
- </eg-grid-toolbar-action>
- <eg-grid-column label="ID" path="id" [index]=true [hidden]="true" i18n-label></eg-grid-column>
- <eg-grid-column label="Title" name="name" i18n-label></eg-grid-column>
- <eg-grid-column label="CourseNumber" name="course_number" i18n-label></eg-grid-column>
- <eg-grid-column label="Section Number" name="section_number" i18n-label></eg-grid-column>
- <eg-grid-column label="Is Archived?" name="is_archived" i18n-label datatype="bool"></eg-grid-column>
- </eg-grid>
-</div>
+<ul ngbNav #courseListNav="ngbNav" class="nav-tabs">
+ <li ngbNavItem>
+ <a ngbNavLink i18n>Course list</a>
+ <ng-template ngbNavContent>
+ <div class="w-100 mt-2 mb-2">
+ <eg-grid #grid idlClass={{idlClass}}
+ [dataSource]="grid_source"
+ [sortable]="true">
+ <eg-grid-toolbar-button
+ label="Create {{tableName}}" (onClick)="createNew()" i18n-label>
+ </eg-grid-toolbar-button>
+ <eg-grid-toolbar-action label="Edit Selected" i18n-label (onClick)="editSelected($event)">
+ </eg-grid-toolbar-action>
+ <eg-grid-toolbar-action label="Delete Selected" i18n-label (onClick)="deleteSelected($event)">
+ </eg-grid-toolbar-action>
+ <eg-grid-toolbar-action label="Archive Selected" i18n-label (onClick)="archiveSelected($event)">
+ </eg-grid-toolbar-action>
+ <eg-grid-column label="ID" path="id" [index]=true [hidden]="true" i18n-label></eg-grid-column>
+ <eg-grid-column label="Terms taught" name="terms_map" i18n-label [cellTemplate]="termMapLink"></eg-grid-column>
+ <eg-grid-column label="Title" name="name" i18n-label></eg-grid-column>
+ <eg-grid-column label="CourseNumber" name="course_number" i18n-label></eg-grid-column>
+ <eg-grid-column label="Section Number" name="section_number" i18n-label></eg-grid-column>
+ <eg-grid-column label="Is Archived?" name="is_archived" i18n-label datatype="bool"></eg-grid-column>
+ </eg-grid>
+ </div>
+ </ng-template>
+ </li>
+ <li ngbNavItem>
+ <a ngbNavLink i18n>Terms</a>
+ <ng-template ngbNavContent>
+ <eg-admin-page idlClass="acmt"></eg-admin-page>
+ </ng-template>
+ </li>
+</ul>
+<div [ngbNavOutlet]="courseListNav"></div>
<eg-fm-record-editor #editDialog
idlClass="acmc"
[preloadLinkedValues]="true"
hiddenFields="id,is_archived">
</eg-fm-record-editor>
+
+<ng-template #termMapLink let-row="row" let-col="col">
+ <a routerLink="/staff/admin/local/asset/course_module_term_course_map?gridFilters={'course': {{col['id']}}}" i18n>
+ Terms taught
+ </a>
+</ng-template>
-import {Component, Input, ViewChild, OnInit, TemplateRef} from '@angular/core';
+import {Component, ViewChild, OnInit} from '@angular/core';
import {ActivatedRoute} from '@angular/router';
import {PcrudService} from '@eg/core/pcrud.service';
-import {IdlObject, IdlService} from '@eg/core/idl.service';
+import {IdlObject} from '@eg/core/idl.service';
+import {GridDataSource} from '@eg/share/grid/grid';
import {StringComponent} from '@eg/share/string/string.component';
import {ToastService} from '@eg/share/toast/toast.service';
import {CourseService} from '@eg/staff/share/course.service';
import {CourseAssociateUsersComponent} from './course-associate-users.component';
import {CourseAssociateMaterialComponent} from './course-associate-material.component';
+import {Pager} from '@eg/share/util/pager';
@Component({
selector: 'eg-course-page',
currentCourse: IdlObject;
courseId: any;
+ // Materials Tab
@ViewChild('courseMaterialDialog', {static: true})
private courseMaterialDialog: CourseAssociateMaterialComponent;
@ViewChild('courseUserDialog', {static: true})
@ViewChild('archiveSuccessString', { static: true })
archiveSuccessString: StringComponent;
- // Materials Tab
+ // Course Tab
+ termsDataSource: GridDataSource = new GridDataSource();
constructor(
private course: CourseService,
this.course.getCourses([this.courseId]).then(course => {
this.currentCourse = course[0];
});
+ this.termsDataSource.getRows = (pager: Pager, sort: any[]) => {
+
+ const orderBy: any = {};
+ if (sort.length) {
+ orderBy.acmtcm = sort[0].name + ' ' + sort[0].dir;
+ }
+
+ const searchOps = {
+ offset: pager.offset,
+ limit: pager.limit,
+ order_by: orderBy
+ };
+
+ return this.pcrud.search('acmtcm', {course: this.courseId}, searchOps);
+ };
}
// Edit Tab