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 @@
-
- Importing Work...
-
-
-
- Error: Failed to import work.
-
-
+ @if (importingWork) {
+
+ Importing Work...
+
+
+ }
+ @if (failedToImportWork) {
+
+ Error: Failed to import work.
+
+
+ }
{
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