From 7c7c93761328a1ce63fa6e91e1d0fb103fab5e6d Mon Sep 17 00:00:00 2001 From: Geoffrey Kwan Date: Thu, 11 Apr 2024 11:36:05 -0400 Subject: [PATCH] feat(Tag): Implement tag color --- src/app/domain/projectAndTagsResponse.ts | 6 + src/app/domain/tag.ts | 1 + .../library-project-menu.component.spec.ts | 2 +- .../personal-library.component.spec.ts | 2 +- .../teacher/abstract-tag-dialog.component.ts | 37 ----- .../apply-tags-button.component.html | 2 +- .../apply-tags-button.component.ts | 11 +- .../create-tag-dialog.component.html | 13 +- .../create-tag-dialog.component.ts | 38 +++-- .../edit-tag-dialog.component.html | 14 +- .../edit-tag-dialog.component.ts | 28 ++-- .../teacher/edit-tag/edit-tag.component.html | 12 ++ .../teacher/edit-tag/edit-tag.component.scss | 7 + .../edit-tag/edit-tag.component.spec.ts | 27 +++ .../teacher/edit-tag/edit-tag.component.ts | 75 +++++++++ .../manage-tags-dialog.component.html | 4 +- .../run-menu/run-menu.component.spec.ts | 2 +- .../teacher-run-list-item.component.html | 8 +- .../teacher-run-list-item.component.scss | 4 +- .../teacher-run-list-item.component.spec.ts | 2 +- .../teacher-run-list-item.component.ts | 1 + .../teacher-run-list.component.spec.ts | 2 +- .../wise5/services/projectTagService.ts | 17 +- src/messages.xlf | 154 +++++++++--------- 24 files changed, 284 insertions(+), 185 deletions(-) create mode 100644 src/app/domain/projectAndTagsResponse.ts delete mode 100644 src/app/teacher/abstract-tag-dialog.component.ts create mode 100644 src/app/teacher/edit-tag/edit-tag.component.html create mode 100644 src/app/teacher/edit-tag/edit-tag.component.scss create mode 100644 src/app/teacher/edit-tag/edit-tag.component.spec.ts create mode 100644 src/app/teacher/edit-tag/edit-tag.component.ts diff --git a/src/app/domain/projectAndTagsResponse.ts b/src/app/domain/projectAndTagsResponse.ts new file mode 100644 index 00000000000..4217b984a2c --- /dev/null +++ b/src/app/domain/projectAndTagsResponse.ts @@ -0,0 +1,6 @@ +import { Tag } from './tag'; + +export interface ProjectAndTagsResponse { + projectId: number; + tags: Tag[]; +} diff --git a/src/app/domain/tag.ts b/src/app/domain/tag.ts index 67e8c18dbe6..3e6680dff39 100644 --- a/src/app/domain/tag.ts +++ b/src/app/domain/tag.ts @@ -1,5 +1,6 @@ export interface Tag { checked?: boolean; + color: string; id: number; text: string; } diff --git a/src/app/modules/library/library-project-menu/library-project-menu.component.spec.ts b/src/app/modules/library/library-project-menu/library-project-menu.component.spec.ts index e9ef3b5d490..5cbc83ae2d1 100644 --- a/src/app/modules/library/library-project-menu/library-project-menu.component.spec.ts +++ b/src/app/modules/library/library-project-menu/library-project-menu.component.spec.ts @@ -49,7 +49,7 @@ export class MockConfigService { } } -const archivedTag = { id: 1, text: 'archived' }; +const archivedTag = { id: 1, text: 'archived', color: null }; let component: LibraryProjectMenuComponent; let fixture: ComponentFixture; let harness: LibraryProjectMenuHarness; diff --git a/src/app/modules/library/personal-library/personal-library.component.spec.ts b/src/app/modules/library/personal-library/personal-library.component.spec.ts index 56bec46edc4..6d51f83dec4 100644 --- a/src/app/modules/library/personal-library/personal-library.component.spec.ts +++ b/src/app/modules/library/personal-library/personal-library.component.spec.ts @@ -25,7 +25,7 @@ import { MatPaginatorModule } from '@angular/material/paginator'; import { ArchiveProjectsButtonComponent } from '../../../teacher/archive-projects-button/archive-projects-button.component'; import { HttpClient } from '@angular/common/http'; -const archivedTag = { id: 1, text: 'archived' }; +const archivedTag = { id: 1, text: 'archived', color: null }; let archiveProjectService: ArchiveProjectService; let component: PersonalLibraryComponent; let fixture: ComponentFixture; diff --git a/src/app/teacher/abstract-tag-dialog.component.ts b/src/app/teacher/abstract-tag-dialog.component.ts deleted file mode 100644 index 6d94220f7c7..00000000000 --- a/src/app/teacher/abstract-tag-dialog.component.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { Directive, OnInit } from '@angular/core'; -import { - FormControl, - Validators, - ValidatorFn, - AbstractControl, - ValidationErrors -} from '@angular/forms'; -import { ProjectTagService } from '../../assets/wise5/services/projectTagService'; -import { Tag } from '../domain/tag'; - -@Directive() -export abstract class AbstractTagDialogComponent implements OnInit { - protected tags: Tag[] = []; - protected tagControl = new FormControl('', [ - Validators.required, - this.createUniqueTagValidator() - ]); - - constructor(protected projectTagService: ProjectTagService) {} - - ngOnInit(): void { - this.projectTagService.retrieveUserTags().subscribe((tags: Tag[]) => { - this.tags = tags; - }); - } - - private createUniqueTagValidator(): ValidatorFn { - return (control: AbstractControl): ValidationErrors | null => { - return this.doesTagAlreadyExist(control.value) ? { tagAlreadyExists: true } : null; - }; - } - - private doesTagAlreadyExist(tagText: string): boolean { - return this.tags.some((tag: Tag) => tag.text.toLowerCase() === tagText.toLowerCase().trim()); - } -} diff --git a/src/app/teacher/apply-tags-button/apply-tags-button.component.html b/src/app/teacher/apply-tags-button/apply-tags-button.component.html index 96ca90069eb..74cda4073d4 100644 --- a/src/app/teacher/apply-tags-button/apply-tags-button.component.html +++ b/src/app/teacher/apply-tags-button/apply-tags-button.component.html @@ -17,7 +17,7 @@ (change)="toggleTagOnProjects(tag, $event.checked)" (click)="$event.stopPropagation()" > - {{ tag.text }} +
{{ tag.text }}
diff --git a/src/app/teacher/apply-tags-button/apply-tags-button.component.ts b/src/app/teacher/apply-tags-button/apply-tags-button.component.ts index 0b67fbef20d..78400b51a41 100644 --- a/src/app/teacher/apply-tags-button/apply-tags-button.component.ts +++ b/src/app/teacher/apply-tags-button/apply-tags-button.component.ts @@ -39,6 +39,7 @@ export class ApplyTagsButtonComponent implements OnInit { this.projectTagService.tagUpdated$.subscribe((tagThatChanged: Tag) => { const tag = this.tags.find((t: Tag) => t.id === tagThatChanged.id); tag.text = tagThatChanged.text; + tag.color = tagThatChanged.color; this.projectTagService.sortTags(this.tags); }) ); @@ -76,11 +77,13 @@ export class ApplyTagsButtonComponent implements OnInit { protected toggleTagOnProjects(tag: Tag, addTag: boolean): void { if (addTag) { - this.addTagToProjects(tag, this.selectedProjects); - this.projectTagService.applyTagToProjects(tag, this.selectedProjects); + this.projectTagService.applyTagToProjects(tag, this.selectedProjects).subscribe(() => { + this.addTagToProjects(tag, this.selectedProjects); + }); } else { - this.removeTagFromProjects(tag, this.selectedProjects); - this.projectTagService.removeTagFromProjects(tag, this.selectedProjects); + this.projectTagService.removeTagFromProjects(tag, this.selectedProjects).subscribe(() => { + this.removeTagFromProjects(tag, this.selectedProjects); + }); } } diff --git a/src/app/teacher/create-tag-dialog/create-tag-dialog.component.html b/src/app/teacher/create-tag-dialog/create-tag-dialog.component.html index fbdc0f81a11..d9c2cbf68ca 100644 --- a/src/app/teacher/create-tag-dialog/create-tag-dialog.component.html +++ b/src/app/teacher/create-tag-dialog/create-tag-dialog.component.html @@ -1,15 +1,14 @@

Create New Tag

- - Tag Name - - Required - Tag already exists - + - diff --git a/src/app/teacher/create-tag-dialog/create-tag-dialog.component.ts b/src/app/teacher/create-tag-dialog/create-tag-dialog.component.ts index eb2e5b2d0aa..302c00de6b0 100644 --- a/src/app/teacher/create-tag-dialog/create-tag-dialog.component.ts +++ b/src/app/teacher/create-tag-dialog/create-tag-dialog.component.ts @@ -1,13 +1,13 @@ import { CommonModule } from '@angular/common'; import { Component } from '@angular/core'; -import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { FormControl, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms'; import { MatButtonModule } from '@angular/material/button'; import { MatDialogModule, MatDialogRef } from '@angular/material/dialog'; import { MatFormFieldModule } from '@angular/material/form-field'; import { MatInputModule } from '@angular/material/input'; import { MatSnackBar } from '@angular/material/snack-bar'; import { ProjectTagService } from '../../../assets/wise5/services/projectTagService'; -import { AbstractTagDialogComponent } from '../abstract-tag-dialog.component'; +import { EditTagComponent } from '../edit-tag/edit-tag.component'; @Component({ selector: 'create-tag-dialog', @@ -16,6 +16,7 @@ import { AbstractTagDialogComponent } from '../abstract-tag-dialog.component'; standalone: true, imports: [ CommonModule, + EditTagComponent, FormsModule, MatButtonModule, MatDialogModule, @@ -24,26 +25,29 @@ import { AbstractTagDialogComponent } from '../abstract-tag-dialog.component'; ReactiveFormsModule ] }) -export class CreateTagDialogComponent extends AbstractTagDialogComponent { +export class CreateTagDialogComponent { + protected nameControl = new FormControl('', [Validators.required]); + protected colorControl = new FormControl(''); + constructor( private dialogRef: MatDialogRef, - protected projectTagService: ProjectTagService, + private projectTagService: ProjectTagService, private snackBar: MatSnackBar - ) { - super(projectTagService); - } + ) {} protected create(): void { - this.projectTagService.createTag(this.tagControl.value.trim()).subscribe({ - next: () => { - this.snackBar.open($localize`Tag created`); - this.dialogRef.close(); - }, - error: ({ error }) => { - if (error.messageCode === 'tagAlreadyExists') { - this.tagControl.setErrors({ tagAlreadyExists: true }); + this.projectTagService + .createTag(this.nameControl.value.trim(), this.colorControl.value.trim()) + .subscribe({ + next: () => { + this.snackBar.open($localize`Tag created`); + this.dialogRef.close(); + }, + error: ({ error }) => { + if (error.messageCode === 'tagAlreadyExists') { + this.nameControl.setErrors({ tagAlreadyExists: true }); + } } - } - }); + }); } } diff --git a/src/app/teacher/edit-tag-dialog/edit-tag-dialog.component.html b/src/app/teacher/edit-tag-dialog/edit-tag-dialog.component.html index 62cc8157ab0..2c52eba88c9 100644 --- a/src/app/teacher/edit-tag-dialog/edit-tag-dialog.component.html +++ b/src/app/teacher/edit-tag-dialog/edit-tag-dialog.component.html @@ -1,15 +1,15 @@

Edit Tag

- - Tag Name - - Required - Tag already exists - + - diff --git a/src/app/teacher/edit-tag-dialog/edit-tag-dialog.component.ts b/src/app/teacher/edit-tag-dialog/edit-tag-dialog.component.ts index 94bd7534fb3..014956ceb9d 100644 --- a/src/app/teacher/edit-tag-dialog/edit-tag-dialog.component.ts +++ b/src/app/teacher/edit-tag-dialog/edit-tag-dialog.component.ts @@ -1,15 +1,15 @@ import { CommonModule } from '@angular/common'; import { Component, Inject } from '@angular/core'; -import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { FormControl, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms'; import { MatButtonModule } from '@angular/material/button'; import { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog'; import { MatFormFieldModule } from '@angular/material/form-field'; import { MatInputModule } from '@angular/material/input'; -import { AbstractTagDialogComponent } from '../abstract-tag-dialog.component'; import { MatSnackBar } from '@angular/material/snack-bar'; import { ProjectTagService } from '../../../assets/wise5/services/projectTagService'; import { CreateTagDialogComponent } from '../create-tag-dialog/create-tag-dialog.component'; import { Tag } from '../../domain/tag'; +import { EditTagComponent } from '../edit-tag/edit-tag.component'; @Component({ selector: 'edit-tag-dialog', @@ -18,6 +18,7 @@ import { Tag } from '../../domain/tag'; standalone: true, imports: [ CommonModule, + EditTagComponent, FormsModule, MatButtonModule, MatDialogModule, @@ -26,23 +27,20 @@ import { Tag } from '../../domain/tag'; ReactiveFormsModule ] }) -export class EditTagDialogComponent extends AbstractTagDialogComponent { +export class EditTagDialogComponent { + protected nameControl = new FormControl('', [Validators.required]); + protected colorControl = new FormControl(''); + constructor( private dialogRef: MatDialogRef, - protected projectTagService: ProjectTagService, + private projectTagService: ProjectTagService, private snackBar: MatSnackBar, - @Inject(MAT_DIALOG_DATA) private tag: Tag - ) { - super(projectTagService); - } - - ngOnInit(): void { - super.ngOnInit(); - this.tagControl.setValue(this.tag.text); - } + @Inject(MAT_DIALOG_DATA) protected tag: Tag + ) {} protected save(): void { - this.tag.text = this.tagControl.value.trim(); + this.tag.text = this.nameControl.value.trim(); + this.tag.color = this.colorControl.value.trim(); this.projectTagService.updateTag(this.tag).subscribe({ next: () => { this.snackBar.open($localize`Tag updated`); @@ -50,7 +48,7 @@ export class EditTagDialogComponent extends AbstractTagDialogComponent { }, error: ({ error }) => { if (error.messageCode === 'tagAlreadyExists') { - this.tagControl.setErrors({ tagAlreadyExists: true }); + this.nameControl.setErrors({ tagAlreadyExists: true }); } } }); diff --git a/src/app/teacher/edit-tag/edit-tag.component.html b/src/app/teacher/edit-tag/edit-tag.component.html new file mode 100644 index 00000000000..188a661f68b --- /dev/null +++ b/src/app/teacher/edit-tag/edit-tag.component.html @@ -0,0 +1,12 @@ +
+ + Tag Name + + Required + Tag already exists + + + Color + + +
diff --git a/src/app/teacher/edit-tag/edit-tag.component.scss b/src/app/teacher/edit-tag/edit-tag.component.scss new file mode 100644 index 00000000000..d909f4aa56a --- /dev/null +++ b/src/app/teacher/edit-tag/edit-tag.component.scss @@ -0,0 +1,7 @@ +.name-input { + width: 80%; +} + +.color-input { + width: 15%; +} diff --git a/src/app/teacher/edit-tag/edit-tag.component.spec.ts b/src/app/teacher/edit-tag/edit-tag.component.spec.ts new file mode 100644 index 00000000000..5f1f3b8fc16 --- /dev/null +++ b/src/app/teacher/edit-tag/edit-tag.component.spec.ts @@ -0,0 +1,27 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { EditTagComponent } from './edit-tag.component'; +import { ProjectTagService } from '../../../assets/wise5/services/projectTagService'; +import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { FormControl, Validators } from '@angular/forms'; +import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; + +describe('EditTagComponent', () => { + let component: EditTagComponent; + let fixture: ComponentFixture; + + beforeEach(() => { + TestBed.configureTestingModule({ + imports: [BrowserAnimationsModule, EditTagComponent, HttpClientTestingModule], + providers: [ProjectTagService] + }); + fixture = TestBed.createComponent(EditTagComponent); + component = fixture.componentInstance; + component.nameControl = new FormControl('', [Validators.required]); + component.colorControl = new FormControl(''); + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/teacher/edit-tag/edit-tag.component.ts b/src/app/teacher/edit-tag/edit-tag.component.ts new file mode 100644 index 00000000000..6d9dfe4d4b3 --- /dev/null +++ b/src/app/teacher/edit-tag/edit-tag.component.ts @@ -0,0 +1,75 @@ +import { CommonModule } from '@angular/common'; +import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { + AbstractControl, + FormControl, + FormsModule, + ReactiveFormsModule, + ValidationErrors, + ValidatorFn, + Validators +} from '@angular/forms'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatInputModule } from '@angular/material/input'; +import { ProjectTagService } from '../../../assets/wise5/services/projectTagService'; +import { Tag } from '../../domain/tag'; +import { FlexLayoutModule } from '@angular/flex-layout'; + +@Component({ + selector: 'edit-tag', + templateUrl: './edit-tag.component.html', + styleUrls: ['./edit-tag.component.scss'], + standalone: true, + imports: [ + CommonModule, + FormsModule, + FlexLayoutModule, + MatFormFieldModule, + MatInputModule, + ReactiveFormsModule + ] +}) +export class EditTagComponent { + @Input() colorControl: FormControl; + @Input() nameControl: FormControl; + @Input() tag: Tag; + private tags: Tag[] = []; + @Output() enterKeyEvent: EventEmitter = new EventEmitter(); + + constructor(private projectTagService: ProjectTagService) {} + + ngOnInit(): void { + if (this.tag != null) { + this.nameControl.setValue(this.tag.text); + this.colorControl.setValue(this.tag.color); + } + this.nameControl.addValidators([Validators.required, this.createUniqueTagValidator()]); + this.projectTagService.retrieveUserTags().subscribe((tags: Tag[]) => { + this.tags = tags; + if (this.tag != null) { + this.tags = this.tags.filter((tag: Tag) => tag.id !== this.tag.id); + } + }); + } + + private createUniqueTagValidator(): ValidatorFn { + return (control: AbstractControl): ValidationErrors | null => { + if (this.doesTagAlreadyExist(control.value)) { + control.markAsTouched(); + return { tagAlreadyExists: true }; + } else { + return null; + } + }; + } + + private doesTagAlreadyExist(tagText: string): boolean { + return this.tags.some((tag: Tag) => tag.text.toLowerCase() === tagText.toLowerCase().trim()); + } + + protected enterKeyPressed(): void { + if (this.nameControl.valid) { + this.enterKeyEvent.emit(); + } + } +} diff --git a/src/app/teacher/manage-tags-dialog/manage-tags-dialog.component.html b/src/app/teacher/manage-tags-dialog/manage-tags-dialog.component.html index 6d1a9444745..bd79c6d5042 100644 --- a/src/app/teacher/manage-tags-dialog/manage-tags-dialog.component.html +++ b/src/app/teacher/manage-tags-dialog/manage-tags-dialog.component.html @@ -5,7 +5,9 @@

Manage Tags

-
{{ tag.text }}
+
+ {{ tag.text }} +
-
{{ tag.text }}
+
+ {{ tag.text }} +
diff --git a/src/app/teacher/teacher-run-list-item/teacher-run-list-item.component.scss b/src/app/teacher/teacher-run-list-item/teacher-run-list-item.component.scss index 53c13d319a4..0bd9885647a 100644 --- a/src/app/teacher/teacher-run-list-item/teacher-run-list-item.component.scss +++ b/src/app/teacher/teacher-run-list-item/teacher-run-list-item.component.scss @@ -34,7 +34,7 @@ .tag { margin-right: 10px; - padding: 0px 5px; + padding: 0px 6px; border: 1px solid gray; - border-radius: 5px; + border-radius: 6px; } \ No newline at end of file diff --git a/src/app/teacher/teacher-run-list-item/teacher-run-list-item.component.spec.ts b/src/app/teacher/teacher-run-list-item/teacher-run-list-item.component.spec.ts index 75900103d41..c177c5850c1 100644 --- a/src/app/teacher/teacher-run-list-item/teacher-run-list-item.component.spec.ts +++ b/src/app/teacher/teacher-run-list-item/teacher-run-list-item.component.spec.ts @@ -37,7 +37,7 @@ export class MockConfigService { } } -const archivedTag = { id: 1, text: 'archived' }; +const archivedTag = { id: 1, text: 'archived', color: null }; let component: TeacherRunListItemComponent; let fixture: ComponentFixture; let http: HttpClient; diff --git a/src/app/teacher/teacher-run-list-item/teacher-run-list-item.component.ts b/src/app/teacher/teacher-run-list-item/teacher-run-list-item.component.ts index f52dda2c049..01d5361add9 100644 --- a/src/app/teacher/teacher-run-list-item/teacher-run-list-item.component.ts +++ b/src/app/teacher/teacher-run-list-item/teacher-run-list-item.component.ts @@ -59,6 +59,7 @@ export class TeacherRunListItemComponent implements OnInit { const tagOnProject = this.run.project.tags.find((tag: Tag) => tag.id === tagThatChanged.id); if (tagOnProject != null) { tagOnProject.text = tagThatChanged.text; + tagOnProject.color = tagThatChanged.color; this.projectTagService.sortTags(this.run.project.tags); } }) diff --git a/src/app/teacher/teacher-run-list/teacher-run-list.component.spec.ts b/src/app/teacher/teacher-run-list/teacher-run-list.component.spec.ts index a94a28d59b8..3d9e7304a23 100644 --- a/src/app/teacher/teacher-run-list/teacher-run-list.component.spec.ts +++ b/src/app/teacher/teacher-run-list/teacher-run-list.component.spec.ts @@ -36,7 +36,7 @@ import { ProjectTagService } from '../../../assets/wise5/services/projectTagServ class TeacherScheduleStubComponent {} -const archivedTag = { id: 1, text: 'archived' }; +const archivedTag = { id: 1, text: 'archived', color: null }; let component: TeacherRunListComponent; let configService: ConfigService; const currentTime = new Date().getTime(); diff --git a/src/assets/wise5/services/projectTagService.ts b/src/assets/wise5/services/projectTagService.ts index 39df0a139d8..b9526a51897 100644 --- a/src/assets/wise5/services/projectTagService.ts +++ b/src/assets/wise5/services/projectTagService.ts @@ -1,8 +1,9 @@ import { HttpClient, HttpParams } from '@angular/common/http'; import { Injectable } from '@angular/core'; -import { Subject, Observable, Subscription, tap } from 'rxjs'; +import { Subject, Observable, tap } from 'rxjs'; import { Project } from '../../../app/domain/project'; import { Tag } from '../../../app/domain/tag'; +import { ProjectAndTagsResponse } from '../../../app/domain/projectAndTagsResponse'; @Injectable() export class ProjectTagService { @@ -19,17 +20,19 @@ export class ProjectTagService { return this.http.get(`/api/user/tags`); } - applyTagToProjects(tag: Tag, projects: Project[]): Subscription { + applyTagToProjects(tag: Tag, projects: Project[]): Observable { const projectIds = projects.map((project) => project.id); - return this.http.put(`/api/projects/tag/${tag.text}`, projectIds).subscribe(); + return this.http.put(`/api/projects/tag/${tag.id}`, projectIds); } - removeTagFromProjects(tag: Tag, projects: Project[]): Subscription { + removeTagFromProjects(tag: Tag, projects: Project[]): Observable { let params = new HttpParams(); for (const project of projects) { params = params.append('projectIds', project.id); } - return this.http.delete(`/api/projects/tag/${tag.text}`, { params: params }).subscribe(); + return this.http.delete(`/api/projects/tag/${tag.id}`, { + params: params + }); } updateTag(tag: Tag): Observable { @@ -40,8 +43,8 @@ export class ProjectTagService { ); } - createTag(tagName: string): Observable { - return this.http.post(`/api/user/tag`, { text: tagName }).pipe( + createTag(tagName: string, color: string): Observable { + return this.http.post(`/api/user/tag`, { text: tagName, color: color }).pipe( tap((tag: Tag) => { this.newTagSource.next(tag); }) diff --git a/src/messages.xlf b/src/messages.xlf index b345720cdb4..db71c75726c 100644 --- a/src/messages.xlf +++ b/src/messages.xlf @@ -291,7 +291,7 @@ src/app/teacher/manage-tags-dialog/manage-tags-dialog.component.html - 33 + 35 src/app/teacher/share-run-code-dialog/share-run-code-dialog.component.html @@ -437,7 +437,7 @@ src/app/teacher/create-tag-dialog/create-tag-dialog.component.html - 11 + 10 src/app/teacher/edit-run-warning-dialog/edit-run-warning-dialog.component.html @@ -731,7 +731,7 @@ src/app/teacher/manage-tags-dialog/manage-tags-dialog.component.html - 23 + 25 src/assets/wise5/authoringTool/project-asset-authoring/project-asset-authoring.component.html @@ -1054,12 +1054,8 @@ Click "Cancel" to keep the invalid JSON open so you can fix it.23 - src/app/teacher/create-tag-dialog/create-tag-dialog.component.html - 4 - - - src/app/teacher/edit-tag-dialog/edit-tag-dialog.component.html - 4 + src/app/teacher/edit-tag/edit-tag.component.html + 3 @@ -5520,7 +5516,7 @@ Click "Cancel" to keep the invalid JSON open so you can fix it. src/app/teacher/teacher-run-list-item/teacher-run-list-item.component.html - 86 + 92 @@ -5665,7 +5661,7 @@ Click "Cancel" to keep the invalid JSON open so you can fix it. src/app/teacher/manage-tags-dialog/manage-tags-dialog.component.html - 13 + 15 src/assets/wise5/authoringTool/peer-grouping/select-peer-grouping-option/select-peer-grouping-option.component.html @@ -7758,7 +7754,7 @@ Click "Cancel" to keep the invalid JSON open so you can fix it. src/app/teacher/teacher-run-list-item/teacher-run-list-item.component.html - 122 + 128 @@ -8216,44 +8212,18 @@ Click "Cancel" to keep the invalid JSON open so you can fix it.1 - - Required - - src/app/teacher/create-tag-dialog/create-tag-dialog.component.html - 6 - - - src/app/teacher/edit-tag-dialog/edit-tag-dialog.component.html - 6 - - - src/assets/wise5/authoringTool/node/advanced/required-error-label/required-error-label.component.html - 3 - - - - Tag already exists - - src/app/teacher/create-tag-dialog/create-tag-dialog.component.html - 7 - - - src/app/teacher/edit-tag-dialog/edit-tag-dialog.component.html - 7 - - Create src/app/teacher/create-tag-dialog/create-tag-dialog.component.html - 12,14 + 11,13 Tag created src/app/teacher/create-tag-dialog/create-tag-dialog.component.ts - 47 + 43 @@ -8351,7 +8321,64 @@ Click "Cancel" to keep the invalid JSON open so you can fix it.Tag updated src/app/teacher/edit-tag-dialog/edit-tag-dialog.component.ts - 52 + 46 + + + + Required + + src/app/teacher/edit-tag/edit-tag.component.html + 5 + + + src/assets/wise5/authoringTool/node/advanced/required-error-label/required-error-label.component.html + 3 + + + + Tag already exists + + src/app/teacher/edit-tag/edit-tag.component.html + 6 + + + + Color + + src/app/teacher/edit-tag/edit-tag.component.html + 9 + + + src/assets/wise5/components/conceptMap/concept-map-authoring/concept-map-authoring.component.html + 249 + + + src/assets/wise5/components/graph/edit-graph-advanced/edit-graph-advanced.component.html + 107 + + + src/assets/wise5/components/graph/edit-graph-advanced/edit-graph-advanced.component.html + 148 + + + src/assets/wise5/components/graph/graph-authoring/graph-authoring.component.html + 191 + + + src/assets/wise5/components/graph/graph-authoring/graph-authoring.component.html + 250 + + + src/assets/wise5/components/graph/graph-authoring/graph-authoring.component.html + 431 + + + src/assets/wise5/components/label/label-authoring/label-authoring.component.html + 147 + + + src/assets/wise5/components/summary/summary-authoring/summary-authoring.component.html + 146 @@ -8785,7 +8812,7 @@ Click "Cancel" to keep the invalid JSON open so you can fix it. src/app/teacher/teacher-run-list-item/teacher-run-list-item.component.html - 65 + 71 @@ -9119,28 +9146,28 @@ Click "Cancel" to keep the invalid JSON open so you can fix it.(Legacy Unit) src/app/teacher/teacher-run-list-item/teacher-run-list-item.component.html - 89 + 95 Last student login: src/app/teacher/teacher-run-list-item/teacher-run-list-item.component.html - 119 + 125 Teacher Tools src/app/teacher/teacher-run-list-item/teacher-run-list-item.component.html - 130 + 136 Class Periods: src/app/teacher/teacher-run-list-item/teacher-run-list-item.component.ts - 115 + 116 @@ -16820,41 +16847,6 @@ Are you ready to receive feedback on this answer? 245 - - Color - - src/assets/wise5/components/conceptMap/concept-map-authoring/concept-map-authoring.component.html - 249 - - - src/assets/wise5/components/graph/edit-graph-advanced/edit-graph-advanced.component.html - 107 - - - src/assets/wise5/components/graph/edit-graph-advanced/edit-graph-advanced.component.html - 148 - - - src/assets/wise5/components/graph/graph-authoring/graph-authoring.component.html - 191 - - - src/assets/wise5/components/graph/graph-authoring/graph-authoring.component.html - 250 - - - src/assets/wise5/components/graph/graph-authoring/graph-authoring.component.html - 431 - - - src/assets/wise5/components/label/label-authoring/label-authoring.component.html - 147 - - - src/assets/wise5/components/summary/summary-authoring/summary-authoring.component.html - 146 - - Are you sure you want to delete this node?