diff --git a/src/app/student/vle/student-vle.module.ts b/src/app/student/vle/student-vle.module.ts index 3911921645b..57e05e3dc33 100644 --- a/src/app/student/vle/student-vle.module.ts +++ b/src/app/student/vle/student-vle.module.ts @@ -38,7 +38,6 @@ import { NodeStatusIconComponent } from '../../../assets/wise5/themes/default/th @NgModule({ declarations: [ ChooseBranchPathDialogComponent, - GenerateImageDialogComponent, GroupTabsComponent, NodeNavigationComponent, RunEndedAndLockedMessageComponent, @@ -49,6 +48,7 @@ import { NodeStatusIconComponent } from '../../../assets/wise5/themes/default/th imports: [ CommonModule, ComponentStudentModule, + GenerateImageDialogComponent, MatDialogModule, NavigationComponent, NodeModule, diff --git a/src/assets/wise5/directives/generate-image-dialog/generate-image-dialog.component.html b/src/assets/wise5/directives/generate-image-dialog/generate-image-dialog.component.html index 92748751c32..b05655ff892 100644 --- a/src/assets/wise5/directives/generate-image-dialog/generate-image-dialog.component.html +++ b/src/assets/wise5/directives/generate-image-dialog/generate-image-dialog.component.html @@ -1,26 +1,26 @@ { imports: [ HttpClientTestingModule, MatDialogModule, - MatProgressSpinnerModule, + GenerateImageDialogComponent, StudentTeacherCommonServicesModule ], - declarations: [GenerateImageDialogComponent], providers: [ { provide: MAT_DIALOG_DATA, useValue: {} }, { provide: MatDialogRef, useValue: { close() {} } } - ], - schemas: [NO_ERRORS_SCHEMA] + ] }).compileComponents(); }); beforeEach(() => { fixture = TestBed.createComponent(GenerateImageDialogComponent); - spyOn(TestBed.inject(ProjectService), 'getComponent').and.returnValue({} as ComponentContent); + const projectService = TestBed.inject(ProjectService); + projectService.project = {}; + spyOn(projectService, 'getComponent').and.returnValue({ + type: 'OutsideURL' + } as ComponentContent); component = fixture.componentInstance; fixture.detectChanges(); }); - it('should get component service', () => { - expect(component.getComponentService('ConceptMap')).toEqual(TestBed.inject(ConceptMapService)); - expect(component.getComponentService('Draw')).toEqual(TestBed.inject(DrawService)); - expect(component.getComponentService('Embedded')).toEqual(TestBed.inject(EmbeddedService)); - expect(component.getComponentService('Graph')).toEqual(TestBed.inject(GraphService)); - expect(component.getComponentService('Label')).toEqual(TestBed.inject(LabelService)); - expect(component.getComponentService('Table')).toEqual(TestBed.inject(TableService)); - }); - - it('should call generateImageFromRenderedComponentState', () => { - component.componentState = { componentType: 'Draw' }; - const generateImageSpy = spyOn( - TestBed.inject(DrawService), - 'generateImageFromRenderedComponentState' - ).and.returnValue(Promise.resolve({})); - component.generateImage(); - expect(generateImageSpy).toHaveBeenCalled(); + it('should create', () => { + expect(component).toBeTruthy(); }); }); diff --git a/src/assets/wise5/directives/generate-image-dialog/generate-image-dialog.component.ts b/src/assets/wise5/directives/generate-image-dialog/generate-image-dialog.component.ts index e733d5bfbaf..fe1fdfa0e2e 100644 --- a/src/assets/wise5/directives/generate-image-dialog/generate-image-dialog.component.ts +++ b/src/assets/wise5/directives/generate-image-dialog/generate-image-dialog.component.ts @@ -1,4 +1,4 @@ -import { Component, Inject, OnInit } from '@angular/core'; +import { Component, forwardRef, Inject, OnInit } from '@angular/core'; import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog'; import { Subscription } from 'rxjs'; import { ConceptMapService } from '../../components/conceptMap/conceptMapService'; @@ -8,22 +8,33 @@ import { GraphService } from '../../components/graph/graphService'; import { LabelService } from '../../components/label/labelService'; import { TableService } from '../../components/table/tableService'; import { NodeService } from '../../services/nodeService'; +import { CommonModule } from '@angular/common'; +import { ComponentComponent } from '../../components/component/component.component'; +import { FlexLayoutModule } from '@angular/flex-layout'; +import { MatButtonModule } from '@angular/material/button'; +import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; @Component({ - selector: 'generate-image-dialog', - templateUrl: './generate-image-dialog.component.html', - styleUrls: ['./generate-image-dialog.component.scss'] + imports: [ + CommonModule, + forwardRef(() => ComponentComponent), + FlexLayoutModule, + MatButtonModule, + MatProgressSpinnerModule + ], + standalone: true, + styleUrl: './generate-image-dialog.component.scss', + templateUrl: './generate-image-dialog.component.html' }) export class GenerateImageDialogComponent implements OnInit { - componentState: any; - destroyDoneRenderingComponentListenerTimeout: any; - doneRenderingComponentSubscription: Subscription; - isFailedToImportWork: boolean = false; - isImportingWork: boolean = true; + private destroyDoneRenderingComponentListenerTimeout: any; + private doneRenderingComponentSubscription: Subscription; + protected failedToImportWork: boolean; + protected importingWork: boolean = true; constructor( + @Inject(MAT_DIALOG_DATA) public componentState: any, private conceptMapService: ConceptMapService, - @Inject(MAT_DIALOG_DATA) public data: any, private dialogRef: MatDialogRef, private drawService: DrawService, private embeddedService: EmbeddedService, @@ -34,12 +45,11 @@ export class GenerateImageDialogComponent implements OnInit { ) {} ngOnInit(): void { - this.componentState = this.data; this.subscribeToDoneRenderingComponent(); this.setDestroyTimeout(); } - subscribeToDoneRenderingComponent(): void { + private subscribeToDoneRenderingComponent(): void { this.doneRenderingComponentSubscription = this.nodeService.doneRenderingComponent$.subscribe( ({ nodeId, componentId }) => { if ( @@ -54,7 +64,7 @@ export class GenerateImageDialogComponent implements OnInit { ); } - generateImage(): void { + private generateImage(): void { this.getComponentService(this.componentState.componentType) .generateImageFromRenderedComponentState(this.componentState) .then((image: any) => { @@ -68,23 +78,23 @@ export class GenerateImageDialogComponent implements OnInit { * Set a timeout to destroy the listener in case there is an error creating the image and * we don't get to destroying it after we generate the image. */ - setDestroyTimeout(): void { + private setDestroyTimeout(): void { this.destroyDoneRenderingComponentListenerTimeout = setTimeout(() => { this.doneRenderingComponentSubscription.unsubscribe(); this.setFailedToImportWork(); }, 10000); } - setFailedToImportWork(): void { - this.isImportingWork = false; - this.isFailedToImportWork = true; + private setFailedToImportWork(): void { + this.importingWork = false; + this.failedToImportWork = true; } - closeDialog(): void { + protected closeDialog(): void { this.dialogRef.close(); } - getComponentService(componentType: string): any { + private getComponentService(componentType: string): any { switch (componentType) { case 'ConceptMap': return this.conceptMapService; diff --git a/src/messages.xlf b/src/messages.xlf index 0164e979a15..4b4fd196664 100644 --- a/src/messages.xlf +++ b/src/messages.xlf @@ -339,7 +339,7 @@ src/assets/wise5/directives/generate-image-dialog/generate-image-dialog.component.html - 21 + 20 src/assets/wise5/vle/notifications-dialog/notifications-dialog.component.html @@ -21267,14 +21267,14 @@ If this problem continues, let your teacher know and move on to the next activit Importing Work... src/assets/wise5/directives/generate-image-dialog/generate-image-dialog.component.html - 9 + 8 Error: Failed to import work. src/assets/wise5/directives/generate-image-dialog/generate-image-dialog.component.html - 19 + 18