diff --git a/src/app/authoring-tool/edit-advanced-component/edit-advanced-component.component.ts b/src/app/authoring-tool/edit-advanced-component/edit-advanced-component.component.ts index 3c9cea77c49..50855761e40 100644 --- a/src/app/authoring-tool/edit-advanced-component/edit-advanced-component.component.ts +++ b/src/app/authoring-tool/edit-advanced-component/edit-advanced-component.component.ts @@ -4,6 +4,7 @@ import { Component } from '../../../assets/wise5/common/Component'; import { NotebookService } from '../../../assets/wise5/services/notebookService'; import { TeacherProjectService } from '../../../assets/wise5/services/teacherProjectService'; import { TeacherNodeService } from '../../../assets/wise5/services/teacherNodeService'; +import { moveObjectDown, moveObjectUp } from '../../../assets/wise5/common/array/array'; @Directive() export abstract class EditAdvancedComponentComponent { @@ -48,12 +49,12 @@ export abstract class EditAdvancedComponentComponent { } moveObjectUp(objects: any[], index: number): void { - this.teacherProjectService.moveObjectUp(objects, index); + moveObjectUp(objects, index); this.componentChanged(); } moveObjectDown(objects: any[], index: number): void { - this.teacherProjectService.moveObjectDown(objects, index); + moveObjectDown(objects, index); this.componentChanged(); } } diff --git a/src/app/authoring-tool/edit-advanced-component/edit-component-default-feedback/edit-component-default-feedback.component.ts b/src/app/authoring-tool/edit-advanced-component/edit-component-default-feedback/edit-component-default-feedback.component.ts index f3476421805..152d68e38eb 100644 --- a/src/app/authoring-tool/edit-advanced-component/edit-component-default-feedback/edit-component-default-feedback.component.ts +++ b/src/app/authoring-tool/edit-advanced-component/edit-component-default-feedback/edit-component-default-feedback.component.ts @@ -2,6 +2,7 @@ import { Component, Input } from '@angular/core'; import { Subject, Subscription } from 'rxjs'; import { debounceTime, distinctUntilChanged } from 'rxjs/operators'; import { TeacherProjectService } from '../../../../assets/wise5/services/teacherProjectService'; +import { moveObjectDown, moveObjectUp } from '../../../../assets/wise5/common/array/array'; @Component({ selector: 'edit-component-default-feedback', @@ -37,12 +38,12 @@ export class EditComponentDefaultFeedback { } moveDefaultFeedbackUp(index: number): void { - this.ProjectService.moveObjectUp(this.componentContent.defaultFeedback, index); + moveObjectUp(this.componentContent.defaultFeedback, index); this.componentChanged(); } moveDefaultFeedbackDown(index: number): void { - this.ProjectService.moveObjectDown(this.componentContent.defaultFeedback, index); + moveObjectDown(this.componentContent.defaultFeedback, index); this.componentChanged(); } diff --git a/src/app/services/teacherProjectService.spec.ts b/src/app/services/teacherProjectService.spec.ts index 1e57289e529..9c710ea1617 100644 --- a/src/app/services/teacherProjectService.spec.ts +++ b/src/app/services/teacherProjectService.spec.ts @@ -16,7 +16,6 @@ let http: HttpTestingController; let demoProjectJSON: any; let scootersProjectJSON: any; let teacherProjectJSON: any; -let objects; const scootersProjectJSONString = JSON.stringify(demoProjectJSON_import); const scootersProjectName = 'scooters'; @@ -29,9 +28,14 @@ const wiseBaseURL = '/wise'; describe('TeacherProjectService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [StudentTeacherCommonServicesModule], - providers: [DeleteNodeService, TeacherProjectService, provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting()] -}); + imports: [StudentTeacherCommonServicesModule], + providers: [ + DeleteNodeService, + TeacherProjectService, + provideHttpClient(withInterceptorsFromDi()), + provideHttpClientTesting() + ] + }); http = TestBed.inject(HttpTestingController); service = TestBed.inject(TeacherProjectService); configService = TestBed.inject(ConfigService); @@ -79,8 +83,6 @@ describe('TeacherProjectService', () => { getOldToNewIds(); replaceOldIds(); replaceIds(); - moveObjectUp(); - moveObjectDown(); removeNodeIdFromTransitions(); }); @@ -750,54 +752,6 @@ function replaceIds() { }); } -function moveObjectUp() { - describe('moveObjectUp()', () => { - beforeEach(() => { - objects = [1, 2, 3]; - }); - moveObjectUpTopElement(); - moveObjectUpNotTopElement(); - }); -} - -function moveObjectUpTopElement() { - it('should not move an object up when the object is the top element', () => { - service.moveObjectUp(objects, 0); - expect(objects).toEqual([1, 2, 3]); - }); -} - -function moveObjectUpNotTopElement() { - it('should move an object up when the object is not the top element', () => { - service.moveObjectUp(objects, 1); - expect(objects).toEqual([2, 1, 3]); - }); -} - -function moveObjectDown() { - describe('moveObjectDown()', () => { - beforeEach(() => { - objects = [1, 2, 3]; - }); - moveObjectDownNotBottomElement(); - moveObjectDownIsBottomElement(); - }); -} - -function moveObjectDownNotBottomElement() { - it('should move an object down when the object is not the bottom element', () => { - service.moveObjectDown(objects, 1); - expect(objects).toEqual([1, 3, 2]); - }); -} - -function moveObjectDownIsBottomElement() { - it('should not move an object down when the object is the bottom element', () => { - service.moveObjectDown(objects, 2); - expect(objects).toEqual([1, 2, 3]); - }); -} - function removeNodeIdFromTransitions() { describe('removeNodeIdFromTransitions()', () => { beforeEach(() => { diff --git a/src/assets/wise5/authoringTool/components/AbstractComponentAuthoring.ts b/src/assets/wise5/authoringTool/components/AbstractComponentAuthoring.ts index 45baa89d086..b4f86df4f63 100644 --- a/src/assets/wise5/authoringTool/components/AbstractComponentAuthoring.ts +++ b/src/assets/wise5/authoringTool/components/AbstractComponentAuthoring.ts @@ -5,6 +5,7 @@ import { ProjectAssetService } from '../../../../app/services/projectAssetServic import { ConfigService } from '../../services/configService'; import { TeacherProjectService } from '../../services/teacherProjectService'; import { TeacherNodeService } from '../../services/teacherNodeService'; +import { moveObjectDown, moveObjectUp } from '../../common/array/array'; @Directive() export abstract class AbstractComponentAuthoring { @@ -114,12 +115,12 @@ export abstract class AbstractComponentAuthoring { } moveObjectUp(objects: any[], index: number): void { - this.projectService.moveObjectUp(objects, index); + moveObjectUp(objects, index); this.componentChanged(); } moveObjectDown(objects: any[], index: number): void { - this.projectService.moveObjectDown(objects, index); + moveObjectDown(objects, index); this.componentChanged(); } } diff --git a/src/assets/wise5/common/array/array.spec.ts b/src/assets/wise5/common/array/array.spec.ts index ef3494eebcb..3981b0868e2 100644 --- a/src/assets/wise5/common/array/array.spec.ts +++ b/src/assets/wise5/common/array/array.spec.ts @@ -1,4 +1,10 @@ -import { arraysContainSameValues, CSVToArray, reduceByUniqueId } from './array'; +import { + arraysContainSameValues, + CSVToArray, + moveObjectDown, + moveObjectUp, + reduceByUniqueId +} from './array'; import csvArraySample from './arraySample'; import { getIntersectOfArrays } from './array'; @@ -94,3 +100,48 @@ describe('reduceByUniqueId', () => { expect(result[2].id).toEqual(3); }); }); + +let objects; +describe('moveObjectUp()', () => { + beforeEach(() => { + objects = [1, 2, 3]; + }); + moveObjectUpTopElement(); + moveObjectUpNotTopElement(); +}); + +function moveObjectUpTopElement() { + it('should not move an object up when the object is the top element', () => { + moveObjectUp(objects, 0); + expect(objects).toEqual([1, 2, 3]); + }); +} + +function moveObjectUpNotTopElement() { + it('should move an object up when the object is not the top element', () => { + moveObjectUp(objects, 1); + expect(objects).toEqual([2, 1, 3]); + }); +} + +describe('moveObjectDown()', () => { + beforeEach(() => { + objects = [1, 2, 3]; + }); + moveObjectDownNotBottomElement(); + moveObjectDownIsBottomElement(); +}); + +function moveObjectDownNotBottomElement() { + it('should move an object down when the object is not the bottom element', () => { + moveObjectDown(objects, 1); + expect(objects).toEqual([1, 3, 2]); + }); +} + +function moveObjectDownIsBottomElement() { + it('should not move an object down when the object is the bottom element', () => { + moveObjectDown(objects, 2); + expect(objects).toEqual([1, 2, 3]); + }); +} diff --git a/src/assets/wise5/common/array/array.ts b/src/assets/wise5/common/array/array.ts index cd3d324a2ff..b674c6ad1c3 100644 --- a/src/assets/wise5/common/array/array.ts +++ b/src/assets/wise5/common/array/array.ts @@ -95,3 +95,19 @@ export function reduceByUniqueId(objArr: any[]): any[] { } return result; } + +export function moveObjectUp(objects: any[], index: number): void { + if (index !== 0) { + const object = objects[index]; + objects.splice(index, 1); + objects.splice(index - 1, 0, object); + } +} + +export function moveObjectDown(objects: any[], index: number): void { + if (index !== objects.length - 1) { + const object = objects[index]; + objects.splice(index, 1); + objects.splice(index + 1, 0, object); + } +} diff --git a/src/assets/wise5/services/teacherProjectService.ts b/src/assets/wise5/services/teacherProjectService.ts index d257de2a80d..ce9eb60b0c8 100644 --- a/src/assets/wise5/services/teacherProjectService.ts +++ b/src/assets/wise5/services/teacherProjectService.ts @@ -2902,22 +2902,6 @@ export class TeacherProjectService extends ProjectService { this.projectSavedSource.next(); } - moveObjectUp(objects: any[], index: number): void { - if (index !== 0) { - const object = objects[index]; - objects.splice(index, 1); - objects.splice(index - 1, 0, object); - } - } - - moveObjectDown(objects: any[], index: number): void { - if (index !== objects.length - 1) { - const object = objects[index]; - objects.splice(index, 1); - objects.splice(index + 1, 0, object); - } - } - getNodesInOrder(): any[] { return Object.entries(this.idToOrder) .map((entry: any) => { diff --git a/src/messages.xlf b/src/messages.xlf index e0f753ce163..66d482aef1d 100644 --- a/src/messages.xlf +++ b/src/messages.xlf @@ -814,7 +814,7 @@ Are you sure you want to delete this default feedback? src/app/authoring-tool/edit-advanced-component/edit-component-default-feedback/edit-component-default-feedback.component.ts - 50 + 51