From 77c01b80bd9cec81a024389eb49a3522fd68d5a1 Mon Sep 17 00:00:00 2001
From: pnogal <paulina.nogal@wisc.edu>
Date: Mon, 26 Aug 2019 12:42:27 -0500
Subject: [PATCH] Use LiveAnnouncer for audit actions

---
 src/app/dars/audit/audit.component.ts         | 20 +++++++++++--------
 .../metadata-table.component.html             |  3 +--
 .../metadata-table.component.scss             |  2 ++
 .../metadata-table.component.ts               |  8 ++++++++
 .../new-degree-audit-dialog.component.ts      |  3 +++
 .../new-what-if-audit-dialog.component.ts     |  3 +++
 6 files changed, 29 insertions(+), 10 deletions(-)

diff --git a/src/app/dars/audit/audit.component.ts b/src/app/dars/audit/audit.component.ts
index a0760e4..1c4cc48 100644
--- a/src/app/dars/audit/audit.component.ts
+++ b/src/app/dars/audit/audit.component.ts
@@ -45,17 +45,20 @@ export class DarsAuditComponent implements OnInit {
     'degreeCreditsValue',
     'courseCreditsValue',
   ];
-  constructor(private announcer: LiveAnnouncer, public symbol: AuditSymbolsService) { }
+  constructor(
+    private announcer: LiveAnnouncer,
+    public symbol: AuditSymbolsService,
+  ) {}
   public announce(btn) {
     btn === 'expand'
       ? this.announcer.announce(
-        'Expanded All Requirements Sections',
-        'assertive',
-      )
+          'Expanded All Requirements Sections',
+          'assertive',
+        )
       : this.announcer.announce(
-        'Collapsed All Requirements Sections',
-        'assertive',
-      );
+          'Collapsed All Requirements Sections',
+          'assertive',
+        );
   }
 
   // Checking for window scroll events
@@ -68,7 +71,7 @@ export class DarsAuditComponent implements OnInit {
 
   public ngOnInit() {
     // Filter out LEGEND from audit data
-    this.audit.requirements = this.audit.requirements.filter(function (
+    this.audit.requirements = this.audit.requirements.filter(function(
       requirement,
     ) {
       return requirement.requirementName !== 'LEGEND';
@@ -81,6 +84,7 @@ export class DarsAuditComponent implements OnInit {
       top: 0,
       behavior: 'smooth',
     });
+    this.announcer.announce('Scrolling window to the top', 'assertive');
   }
 
   public openAllRequirements() {
diff --git a/src/app/dars/metadata-table/metadata-table.component.html b/src/app/dars/metadata-table/metadata-table.component.html
index 5e9201d..69eb5cf 100644
--- a/src/app/dars/metadata-table/metadata-table.component.html
+++ b/src/app/dars/metadata-table/metadata-table.component.html
@@ -86,6 +86,5 @@
     <tr mat-header-row *matHeaderRowDef="displayedColumns"></tr>
     <tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
   </table>
-
-  <mat-paginator (page)="pageEvent = $event" [pageSize]='5' aria-live="polite" attr.aria-label="{{ pageEvent ? 'Switched to page ' + pageEvent.pageIndex + ' of ' + title + ' table.' : '' }}"></mat-paginator>
+  <mat-paginator (page)="onPaginationChange($event)" hidePageSize="true" [pageSize]='5'></mat-paginator>
 </div>
diff --git a/src/app/dars/metadata-table/metadata-table.component.scss b/src/app/dars/metadata-table/metadata-table.component.scss
index 66dadd6..bfd6c67 100644
--- a/src/app/dars/metadata-table/metadata-table.component.scss
+++ b/src/app/dars/metadata-table/metadata-table.component.scss
@@ -53,6 +53,8 @@ $black: #000000;
   .mat-paginator {
     font-size: 14px;
     background-color: #f5f5f5;
+    border-right: solid 1px #e3e3e3;
+    border-left: solid 1px #e3e3e3;
     border-bottom: solid 1px #e3e3e3;
     border-top-width: 0;
     border-radius: 0 0 5px 5px;
diff --git a/src/app/dars/metadata-table/metadata-table.component.ts b/src/app/dars/metadata-table/metadata-table.component.ts
index 7b1fb28..72dcba9 100644
--- a/src/app/dars/metadata-table/metadata-table.component.ts
+++ b/src/app/dars/metadata-table/metadata-table.component.ts
@@ -11,6 +11,7 @@ import { MatPaginator } from '@angular/material/paginator';
 import { MatTableDataSource } from '@angular/material/table';
 import { Observable, combineLatest } from 'rxjs';
 import { PageEvent } from '@angular/material/paginator';
+import { LiveAnnouncer } from '@angular/cdk/a11y';
 
 interface MinimumAuditMetadata {
   darsAuditRunDate: AuditMetadata['darsAuditRunDate'];
@@ -48,6 +49,13 @@ export class DarsMetadataTableComponent implements OnInit {
     'status',
     'actions',
   ];
+  constructor(private announcer: LiveAnnouncer) {}
+  onPaginationChange(event) {
+    this.announcer.announce(
+      `Switched page of the ${this.title} table`,
+      'assertive',
+    );
+  }
 
   public static sortMetadata(metadata: MinimumAuditMetadata[]) {
     return metadata.sort((a, b) => {
diff --git a/src/app/dars/new-degree-audit-dialog/new-degree-audit-dialog.component.ts b/src/app/dars/new-degree-audit-dialog/new-degree-audit-dialog.component.ts
index 1a744e3..b596f86 100644
--- a/src/app/dars/new-degree-audit-dialog/new-degree-audit-dialog.component.ts
+++ b/src/app/dars/new-degree-audit-dialog/new-degree-audit-dialog.component.ts
@@ -27,6 +27,7 @@ import { DegreePlan } from '@app/core/models/degree-plan';
 import { MatDialogRef } from '@angular/material';
 import { RawTermCode } from '@app/degree-planner/shared/term-codes/without-era';
 import { DegreePlannerApiService } from '@app/degree-planner/services/api.service';
+import { MatSnackBar } from '@angular/material';
 
 const inclusiveRange = (from: number, to: number) => {
   const range: number[] = [];
@@ -112,6 +113,7 @@ export class NewDegreeAuditDialogComponent implements OnInit {
     private degreePlannerApi: DegreePlannerApiService,
     private store: Store<GlobalState>,
     private dialogRef: MatDialogRef<NewDegreeAuditDialogComponent>,
+    private snackBar: MatSnackBar,
   ) {
     this.chosenProgram = fb.control('', Validators.required);
 
@@ -334,5 +336,6 @@ export class NewDegreeAuditDialogComponent implements OnInit {
       whichEnrolledCoursesIncluded: this.includeCoursesFrom(''),
       fixedCredits: this.fixedCredits(),
     });
+    this.snackBar.open('New Degree Audit has been requested');
   }
 }
diff --git a/src/app/dars/new-what-if-audit-dialog/new-what-if-audit-dialog.component.ts b/src/app/dars/new-what-if-audit-dialog/new-what-if-audit-dialog.component.ts
index 2a301a8..549d66f 100644
--- a/src/app/dars/new-what-if-audit-dialog/new-what-if-audit-dialog.component.ts
+++ b/src/app/dars/new-what-if-audit-dialog/new-what-if-audit-dialog.component.ts
@@ -25,6 +25,7 @@ import { DegreePlan } from '@app/core/models/degree-plan';
 import { MatDialogRef } from '@angular/material';
 import { DegreePlannerApiService } from '@app/degree-planner/services/api.service';
 import { RawTermCode } from '@app/degree-planner/shared/term-codes/without-era';
+import { MatSnackBar } from '@angular/material';
 
 const inclusiveRange = (from: number, to: number) => {
   const range: number[] = [];
@@ -113,6 +114,7 @@ export class NewWhatIfAuditDialogComponent implements OnInit {
       NewWhatIfAuditDialogComponent,
       NewWhatIfAuditFields
     >,
+    private snackBar: MatSnackBar,
   ) {
     this.chosenProgram = fb.group({
       institution: fb.control('', Validators.required),
@@ -310,5 +312,6 @@ export class NewWhatIfAuditDialogComponent implements OnInit {
       whichEnrolledCoursesIncluded: this.includeCoursesFrom(''),
       fixedCredits: this.fixedCredits(),
     });
+    this.snackBar.open("New 'what-if' Audit has been requested");
   }
 }
-- 
GitLab