From be51ca1c4b09ee76630ea8ed3cd70d32fa16cffe Mon Sep 17 00:00:00 2001 From: Geoffrey Kwan Date: Wed, 12 Jul 2023 16:01:39 -0700 Subject: [PATCH] chore(Authoring): Convert structure controllers to Angular (#1331) --- .../choose-structure-location.component.html | 34 +++++ .../choose-structure-location.component.scss | 3 + ...hoose-structure-location.component.spec.ts | 54 +++++++ .../choose-structure-location.component.ts | 79 ++++++++++ .../choose-structure.component.html | 37 +++++ .../choose-structure.component.scss | 4 + .../choose-structure.component.spec.ts | 32 ++++ .../choose-structure.component.ts | 51 +++++++ .../structure/chooseStructure.html | 29 ---- .../structure/chooseStructureController.ts | 47 ------ .../structure/chooseStructureLocation.html | 46 ------ .../chooseStructureLocationController.ts | 85 ----------- .../structure/structure-authoring.module.ts | 4 + .../structure/structureAuthoringModule.ts | 19 ++- src/messages.xlf | 137 ++++++++++++++++-- 15 files changed, 435 insertions(+), 226 deletions(-) create mode 100644 src/assets/wise5/authoringTool/structure/choose-structure-location/choose-structure-location.component.html create mode 100644 src/assets/wise5/authoringTool/structure/choose-structure-location/choose-structure-location.component.scss create mode 100644 src/assets/wise5/authoringTool/structure/choose-structure-location/choose-structure-location.component.spec.ts create mode 100644 src/assets/wise5/authoringTool/structure/choose-structure-location/choose-structure-location.component.ts create mode 100644 src/assets/wise5/authoringTool/structure/choose-structure/choose-structure.component.html create mode 100644 src/assets/wise5/authoringTool/structure/choose-structure/choose-structure.component.scss create mode 100644 src/assets/wise5/authoringTool/structure/choose-structure/choose-structure.component.spec.ts create mode 100644 src/assets/wise5/authoringTool/structure/choose-structure/choose-structure.component.ts delete mode 100644 src/assets/wise5/authoringTool/structure/chooseStructure.html delete mode 100644 src/assets/wise5/authoringTool/structure/chooseStructureController.ts delete mode 100644 src/assets/wise5/authoringTool/structure/chooseStructureLocation.html delete mode 100644 src/assets/wise5/authoringTool/structure/chooseStructureLocationController.ts diff --git a/src/assets/wise5/authoringTool/structure/choose-structure-location/choose-structure-location.component.html b/src/assets/wise5/authoringTool/structure/choose-structure-location/choose-structure-location.component.html new file mode 100644 index 0000000000..ab43db505d --- /dev/null +++ b/src/assets/wise5/authoringTool/structure/choose-structure-location/choose-structure-location.component.html @@ -0,0 +1,34 @@ +
Choose the location for your new lesson:
+ +
+ + + + +
{{ getNodePositionById(group.id) }}: {{ getNodeTitle(group.id) }}
+ +
+
+
+
+ diff --git a/src/assets/wise5/authoringTool/structure/choose-structure-location/choose-structure-location.component.scss b/src/assets/wise5/authoringTool/structure/choose-structure-location/choose-structure-location.component.scss new file mode 100644 index 0000000000..b06d149afd --- /dev/null +++ b/src/assets/wise5/authoringTool/structure/choose-structure-location/choose-structure-location.component.scss @@ -0,0 +1,3 @@ +.mat-icon { + margin: 0px; +} \ No newline at end of file diff --git a/src/assets/wise5/authoringTool/structure/choose-structure-location/choose-structure-location.component.spec.ts b/src/assets/wise5/authoringTool/structure/choose-structure-location/choose-structure-location.component.spec.ts new file mode 100644 index 0000000000..6e5a44ac44 --- /dev/null +++ b/src/assets/wise5/authoringTool/structure/choose-structure-location/choose-structure-location.component.spec.ts @@ -0,0 +1,54 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { ChooseStructureLocationComponent } from './choose-structure-location.component'; +import { UpgradeModule } from '@angular/upgrade/static'; +import { MatIconModule } from '@angular/material/icon'; +import { TeacherProjectService } from '../../../services/teacherProjectService'; +import { StudentTeacherCommonServicesModule } from '../../../../../app/student-teacher-common-services.module'; +import { HttpClientTestingModule } from '@angular/common/http/testing'; + +describe('ChooseStructureLocationComponent', () => { + let component: ChooseStructureLocationComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ChooseStructureLocationComponent], + imports: [ + HttpClientTestingModule, + MatIconModule, + StudentTeacherCommonServicesModule, + UpgradeModule + ], + providers: [TeacherProjectService] + }).compileComponents(); + + TestBed.inject(UpgradeModule).$injector = { + get: (param: string) => { + if (param === '$state') { + return { go: (route: string, params: any) => {} }; + } else if (param === '$stateParams') { + return { + projectId: 1, + structure: { + nodes: [], + group: { + id: 'group2' + } + } + }; + } + } + }; + spyOn(TestBed.inject(TeacherProjectService), 'getGroupNodesIdToOrder').and.returnValue({ + group0: { order: 0 }, + group1: { order: 1 } + }); + fixture = TestBed.createComponent(ChooseStructureLocationComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/wise5/authoringTool/structure/choose-structure-location/choose-structure-location.component.ts b/src/assets/wise5/authoringTool/structure/choose-structure-location/choose-structure-location.component.ts new file mode 100644 index 0000000000..ef04f9da2c --- /dev/null +++ b/src/assets/wise5/authoringTool/structure/choose-structure-location/choose-structure-location.component.ts @@ -0,0 +1,79 @@ +import { Component } from '@angular/core'; +import { TeacherProjectService } from '../../../services/teacherProjectService'; +import { UpgradeModule } from '@angular/upgrade/static'; + +@Component({ + selector: 'choose-structure-location', + templateUrl: './choose-structure-location.component.html', + styleUrls: ['./choose-structure-location.component.scss'] +}) +export class ChooseStructureLocationComponent { + groupNodes: any; + projectId: number; + $state: any; + structure: any; + + constructor(private projectService: TeacherProjectService, private upgrade: UpgradeModule) {} + + ngOnInit(): void { + this.$state = this.upgrade.$injector.get('$state'); + const stateParams = this.upgrade.$injector.get('$stateParams'); + this.projectId = stateParams.projectId; + this.structure = this.injectUniqueIds(stateParams.structure); + const groupNodesIdToOrder = this.projectService.getGroupNodesIdToOrder(); + this.groupNodes = Object.entries(groupNodesIdToOrder).map((entry: any) => { + return { id: entry[0], order: entry[1].order }; + }); + this.groupNodes.sort((a: any, b: any) => { + return a.order - b.order; + }); + } + + protected insertAsFirstActivity(): void { + this.addNodesToProject(this.structure.nodes); + this.projectService.createNodeInside( + this.structure.group, + this.projectService.getStartGroupId() + ); + this.saveAndGoBackToProjectHome(); + } + + protected insertAfterGroup(groupId: string): void { + this.addNodesToProject(this.structure.nodes); + this.projectService.createNodeAfter(this.structure.group, groupId); + this.saveAndGoBackToProjectHome(); + } + + private addNodesToProject(nodes: any[]): void { + for (const node of nodes) { + this.projectService.setIdToNode(node.id, node); + this.projectService.addNode(node); + this.projectService.applicationNodes.push(node); + } + } + + private saveAndGoBackToProjectHome(): void { + this.projectService.checkPotentialStartNodeIdChangeThenSaveProject().then(() => { + this.projectService.refreshProject(); + this.$state.go('root.at.project'); + }); + } + + private injectUniqueIds(structure: any): void { + structure.group.id = this.projectService.getNextAvailableGroupId(); + const oldToNewIds = this.projectService.getOldToNewIds(structure.nodes); + return this.projectService.replaceOldIds(structure, oldToNewIds); + } + + protected getNodeTitle(nodeId: string): string { + return this.projectService.getNodeTitle(nodeId); + } + + protected getNodePositionById(nodeId: string): string { + return this.projectService.getNodePositionById(nodeId); + } + + protected cancel(): void { + this.$state.go('root.at.project'); + } +} diff --git a/src/assets/wise5/authoringTool/structure/choose-structure/choose-structure.component.html b/src/assets/wise5/authoringTool/structure/choose-structure/choose-structure.component.html new file mode 100644 index 0000000000..4bb6eecae0 --- /dev/null +++ b/src/assets/wise5/authoringTool/structure/choose-structure/choose-structure.component.html @@ -0,0 +1,37 @@ +
Choose a Lesson Structure
+

+ Based on our work with classroom teachers, we have developed several lesson structures that follow + the + Knowledge Integration framework + and help teachers productively integrate open educational resources (OERs) into their curricula. + These structures have also proven useful for developing students' capacity for self-directed + learning. We have made the structures very general, so that teachers can customize and incorporate + them into any WISE unit to strengthen support for knowledge integration and self-directed + learning. +

+
+ + +
{{ structure.label }}
+
+ + {{ structure.icon }} + + + + +
+
+
+ diff --git a/src/assets/wise5/authoringTool/structure/choose-structure/choose-structure.component.scss b/src/assets/wise5/authoringTool/structure/choose-structure/choose-structure.component.scss new file mode 100644 index 0000000000..e3bc0634ef --- /dev/null +++ b/src/assets/wise5/authoringTool/structure/choose-structure/choose-structure.component.scss @@ -0,0 +1,4 @@ +.structure-card { + width: 280px; + margin: 8px; +} \ No newline at end of file diff --git a/src/assets/wise5/authoringTool/structure/choose-structure/choose-structure.component.spec.ts b/src/assets/wise5/authoringTool/structure/choose-structure/choose-structure.component.spec.ts new file mode 100644 index 0000000000..fb54b0f19d --- /dev/null +++ b/src/assets/wise5/authoringTool/structure/choose-structure/choose-structure.component.spec.ts @@ -0,0 +1,32 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { ChooseStructureComponent } from './choose-structure.component'; +import { UpgradeModule } from '@angular/upgrade/static'; +import { MatCardModule } from '@angular/material/card'; +import { MatIconModule } from '@angular/material/icon'; + +describe('ChooseStructureComponent', () => { + let component: ChooseStructureComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ChooseStructureComponent], + imports: [MatCardModule, MatIconModule, UpgradeModule] + }).compileComponents(); + + TestBed.inject(UpgradeModule).$injector = { + get: () => { + return { + go: (route: string, params: any) => {} + }; + } + }; + fixture = TestBed.createComponent(ChooseStructureComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/assets/wise5/authoringTool/structure/choose-structure/choose-structure.component.ts b/src/assets/wise5/authoringTool/structure/choose-structure/choose-structure.component.ts new file mode 100644 index 0000000000..4bebb5d323 --- /dev/null +++ b/src/assets/wise5/authoringTool/structure/choose-structure/choose-structure.component.ts @@ -0,0 +1,51 @@ +import { Component } from '@angular/core'; +import { UpgradeModule } from '@angular/upgrade/static'; + +@Component({ + selector: 'choose-structure', + templateUrl: './choose-structure.component.html', + styleUrls: ['./choose-structure.component.scss'] +}) +export class ChooseStructureComponent { + private $state: any; + protected structures = [ + { + label: $localize`Jigsaw`, + description: $localize`The Jigsaw KI lesson structure guides students through learning about specific aspects of a science topic of their choice and engages them in collaboration to learn more. Students share their own ideas and reflect on what they learned from their classmates.`, + icon: 'extension', + route: 'root.at.project.structure.jigsaw' + }, + { + label: $localize`Self-Directed Investigation`, + description: $localize`The Self-Directed Investigation KI lesson structure helps students ask research questions about a science topic, guides them through refining their initial questions to researchable questions, and supports them in finding and evaluating evidence using online resources of their choice. Students synthesize their findings into a product of your choice.`, + icon: 'contact_support', + route: 'root.at.project.structure.self-directed-investigation' + }, + { + label: $localize`Peer Review & Revision`, + description: $localize`The Peer Review & Revision KI lesson structure guides students through writing their own explanation, critiquing explanations of peer learners, and ultimately revising their own initial explanation.`, + icon: 'question_answer', + route: 'root.at.project.structure.peer-review-and-revision' + }, + { + label: $localize`KI Lesson with OER`, + description: $localize`The KI Lesson with OER guides you to embed an open educational resource (OER) of your choice in a lesson structure that promotes knowledge integration (KI). The structure suggests different step types that engage students in eliciting their ideas, discovering new ideas through use of the OER, distinguishing among their initial and new ideas, and making connections to form integrated understanding.`, + icon: 'autorenew', + route: 'root.at.project.structure.ki-cycle-using-oer' + } + ]; + + constructor(private upgrade: UpgradeModule) {} + + ngOnInit(): void { + this.$state = this.upgrade.$injector.get('$state'); + } + + protected chooseStructure(route: string): void { + this.$state.go(route); + } + + protected cancel(): void { + this.$state.go('root.at.project'); + } +} diff --git a/src/assets/wise5/authoringTool/structure/chooseStructure.html b/src/assets/wise5/authoringTool/structure/chooseStructure.html deleted file mode 100644 index fb53cfcc05..0000000000 --- a/src/assets/wise5/authoringTool/structure/chooseStructure.html +++ /dev/null @@ -1,29 +0,0 @@ -
-

-
- - - -
{{ ::structure.label }}
-
-
- - {{ ::structure.icon }} - - - - -
-
-
- diff --git a/src/assets/wise5/authoringTool/structure/chooseStructureController.ts b/src/assets/wise5/authoringTool/structure/chooseStructureController.ts deleted file mode 100644 index 248560600b..0000000000 --- a/src/assets/wise5/authoringTool/structure/chooseStructureController.ts +++ /dev/null @@ -1,47 +0,0 @@ -'use strict'; - -class ChooseStructureController { - structures: any[]; - - static $inject = ['$filter', '$state']; - - constructor(private $filter: any, private $state: any) { - const translate = this.$filter('translate'); - this.structures = [ - { - label: translate('jigsaw.label'), - description: translate('jigsaw.description'), - icon: 'extension', - route: 'root.at.project.structure.jigsaw' - }, - { - label: translate('selfDirectedInvestigation.label'), - description: translate('selfDirectedInvestigation.description'), - icon: 'contact_support', - route: 'root.at.project.structure.self-directed-investigation' - }, - { - label: translate('peerReview.label'), - description: translate('peerReview.description'), - icon: 'question_answer', - route: 'root.at.project.structure.peer-review-and-revision' - }, - { - label: translate('kiOER.label'), - description: translate('kiOER.description'), - icon: 'autorenew', - route: 'root.at.project.structure.ki-cycle-using-oer' - } - ]; - } - - chooseStructure(route) { - this.$state.go(route); - } - - cancel() { - this.$state.go('root.at.project'); - } -} - -export default ChooseStructureController; diff --git a/src/assets/wise5/authoringTool/structure/chooseStructureLocation.html b/src/assets/wise5/authoringTool/structure/chooseStructureLocation.html deleted file mode 100644 index 0f7e70782b..0000000000 --- a/src/assets/wise5/authoringTool/structure/chooseStructureLocation.html +++ /dev/null @@ -1,46 +0,0 @@ -
{{ ::'chooseStructureLocation' | translate }}
-
-
-
-
-
- {{::chooseStructureLocationController.getNodePositionById(group.$key)}}: - {{::chooseStructureLocationController.getNodeTitle(group.$key)}} -
-
-
- - call_received - {{ ::'insertAsFirstActivity' | translate }} - - - subdirectory_arrow_left - {{ ::'insertAfter' | translate }} - -
-
-
-
-
- diff --git a/src/assets/wise5/authoringTool/structure/chooseStructureLocationController.ts b/src/assets/wise5/authoringTool/structure/chooseStructureLocationController.ts deleted file mode 100644 index a0f60b4cad..0000000000 --- a/src/assets/wise5/authoringTool/structure/chooseStructureLocationController.ts +++ /dev/null @@ -1,85 +0,0 @@ -'use strict'; - -import { TeacherProjectService } from '../../services/teacherProjectService'; - -class ChooseStructureLocationController { - groupNodes: any; - projectId: number; - structure: any; - - static $inject = ['$state', '$stateParams', 'ProjectService']; - - constructor( - private $state: any, - private $stateParams: any, - private ProjectService: TeacherProjectService - ) { - this.groupNodes = this.ProjectService.getGroupNodesIdToOrder(); - this.projectId = $stateParams.projectId; - this.structure = this.injectUniqueIds(this.$stateParams.structure); - } - - insertAsFirstActivity() { - this.addNodesToProject(this.structure.nodes); - this.ProjectService.createNodeInside( - this.structure.group, - this.ProjectService.getStartGroupId() - ); - this.saveAndGoBackToProjectHome(); - } - - insertAfterGroup(groupId) { - this.addNodesToProject(this.structure.nodes); - this.ProjectService.createNodeAfter(this.structure.group, groupId); - this.saveAndGoBackToProjectHome(); - } - - addNodesToProject(nodes) { - for (const node of nodes) { - this.ProjectService.setIdToNode(node.id, node); - this.ProjectService.addNode(node); - this.ProjectService.applicationNodes.push(node); - } - } - - saveAndGoBackToProjectHome() { - this.ProjectService.checkPotentialStartNodeIdChangeThenSaveProject().then(() => { - this.ProjectService.refreshProject(); - this.$state.go('root.at.project'); - }); - } - - injectUniqueIds(structure) { - structure.group.id = this.ProjectService.getNextAvailableGroupId(); - const oldToNewIds = this.ProjectService.getOldToNewIds(structure.nodes); - return this.ProjectService.replaceOldIds(structure, oldToNewIds); - } - - addStepsToGroup(group) { - const node1 = this.ProjectService.createNodeAndAddToLocalStorage('Instructions'); - this.ProjectService.addNodeToGroup(node1, group); - const htmlComponent = this.ProjectService.createComponent(node1.id, 'HTML'); - htmlComponent.html = - 'Here are your instructions. Do this activity and discuss with your peers.'; - const node2 = this.ProjectService.createNodeAndAddToLocalStorage('Gather Evidence'); - this.ProjectService.addNodeToGroup(node2, group); - this.ProjectService.checkPotentialStartNodeIdChangeThenSaveProject().then(() => { - this.ProjectService.refreshProject(); - this.$state.go('root.at.project'); - }); - } - - getNodeTitle(nodeId: string): string { - return this.ProjectService.getNodeTitle(nodeId); - } - - getNodePositionById(nodeId: string): string { - return this.ProjectService.getNodePositionById(nodeId); - } - - cancel() { - this.$state.go('root.at.project'); - } -} - -export default ChooseStructureLocationController; diff --git a/src/assets/wise5/authoringTool/structure/structure-authoring.module.ts b/src/assets/wise5/authoringTool/structure/structure-authoring.module.ts index 21e025ab32..3bc653c4dd 100644 --- a/src/assets/wise5/authoringTool/structure/structure-authoring.module.ts +++ b/src/assets/wise5/authoringTool/structure/structure-authoring.module.ts @@ -4,9 +4,13 @@ import { JigsawComponent } from './jigsaw/jigsaw.component'; import { SelfDirectedInvestigationComponent } from './self-directed-investigation/self-directed-investigation.component'; import { KiCycleUsingOerComponent } from './ki-cycle-using-oer/ki-cycle-using-oer.component'; import { PeerReviewAndRevisionComponent } from './peer-review-and-revision/peer-review-and-revision.component'; +import { ChooseStructureComponent } from './choose-structure/choose-structure.component'; +import { ChooseStructureLocationComponent } from './choose-structure-location/choose-structure-location.component'; @NgModule({ declarations: [ + ChooseStructureComponent, + ChooseStructureLocationComponent, JigsawComponent, KiCycleUsingOerComponent, PeerReviewAndRevisionComponent, diff --git a/src/assets/wise5/authoringTool/structure/structureAuthoringModule.ts b/src/assets/wise5/authoringTool/structure/structureAuthoringModule.ts index b6f8980ff6..b9a9a45d3e 100644 --- a/src/assets/wise5/authoringTool/structure/structureAuthoringModule.ts +++ b/src/assets/wise5/authoringTool/structure/structureAuthoringModule.ts @@ -1,18 +1,21 @@ 'use strict'; import * as angular from 'angular'; -import ChooseStructureController from './chooseStructureController'; -import ChooseStructureLocationController from './chooseStructureLocationController'; import { downgradeComponent } from '@angular/upgrade/static'; import { JigsawComponent } from './jigsaw/jigsaw.component'; import { SelfDirectedInvestigationComponent } from './self-directed-investigation/self-directed-investigation.component'; import { KiCycleUsingOerComponent } from './ki-cycle-using-oer/ki-cycle-using-oer.component'; import { PeerReviewAndRevisionComponent } from './peer-review-and-revision/peer-review-and-revision.component'; +import { ChooseStructureComponent } from './choose-structure/choose-structure.component'; +import { ChooseStructureLocationComponent } from './choose-structure-location/choose-structure-location.component'; const structureAuthoringModule = angular .module('structureAuthoringModule', ['ui.router']) - .controller('ChooseStructureLocationController', ChooseStructureLocationController) - .controller('ChooseStructureController', ChooseStructureController) + .directive( + 'chooseStructureLocation', + downgradeComponent({ component: ChooseStructureLocationComponent }) + ) + .directive('chooseStructure', downgradeComponent({ component: ChooseStructureComponent })) .directive('jigsawComponent', downgradeComponent({ component: JigsawComponent })) .directive( 'selfDirectedInvestigation', @@ -34,9 +37,7 @@ const structureAuthoringModule = angular }) .state('root.at.project.structure.choose', { url: '/choose', - templateUrl: 'assets/wise5/authoringTool/structure/chooseStructure.html', - controller: 'ChooseStructureController', - controllerAs: 'chooseStructureController', + component: 'chooseStructure', params: { structure: null } @@ -71,9 +72,7 @@ const structureAuthoringModule = angular }) .state('root.at.project.structure.location', { url: '/location', - templateUrl: 'assets/wise5/authoringTool/structure/chooseStructureLocation.html', - controller: 'ChooseStructureLocationController', - controllerAs: 'chooseStructureLocationController', + component: 'chooseStructureLocation', params: { structure: null } diff --git a/src/messages.xlf b/src/messages.xlf index 01cf0e8ed6..874eccb399 100644 --- a/src/messages.xlf +++ b/src/messages.xlf @@ -416,6 +416,10 @@ src/assets/wise5/authoringTool/node/node-authoring/node-authoring.component.html 316 + + src/assets/wise5/authoringTool/structure/choose-structure-location/choose-structure-location.component.html + 22 + Back @@ -429,7 +433,7 @@ src/assets/wise5/authoringTool/structure/jigsaw/jigsaw.component.html - 23,25 + 27,29 src/assets/wise5/authoringTool/structure/ki-cycle-using-oer/ki-cycle-using-oer.component.html @@ -460,7 +464,7 @@ src/assets/wise5/authoringTool/structure/jigsaw/jigsaw.component.html - 27,29 + 31,33 src/assets/wise5/authoringTool/structure/ki-cycle-using-oer/ki-cycle-using-oer.component.html @@ -553,9 +557,17 @@ src/assets/wise5/authoringTool/peer-grouping/edit-peer-grouping-dialog/edit-peer-grouping-dialog.component.html 66 + + src/assets/wise5/authoringTool/structure/choose-structure-location/choose-structure-location.component.html + 32 + + + src/assets/wise5/authoringTool/structure/choose-structure/choose-structure.component.html + 35 + src/assets/wise5/authoringTool/structure/jigsaw/jigsaw.component.html - 27 + 31 src/assets/wise5/authoringTool/structure/ki-cycle-using-oer/ki-cycle-using-oer.component.html @@ -626,7 +638,7 @@ src/assets/wise5/authoringTool/structure/jigsaw/jigsaw.component.html - 34 + 38 src/assets/wise5/authoringTool/structure/ki-cycle-using-oer/ki-cycle-using-oer.component.html @@ -1475,6 +1487,14 @@ Click "Cancel" to keep the invalid JSON open so you can fix it.src/assets/wise5/authoringTool/addNode/choose-new-node-location/choose-new-node-location.component.html 53,55 + + src/assets/wise5/authoringTool/structure/choose-structure-location/choose-structure-location.component.html + 32,34 + + + src/assets/wise5/authoringTool/structure/choose-structure/choose-structure.component.html + 35,37 + Import Step(s) @@ -1572,7 +1592,7 @@ Click "Cancel" to keep the invalid JSON open so you can fix it. src/assets/wise5/authoringTool/structure/jigsaw/jigsaw.component.html - 37,39 + 41,43 src/assets/wise5/authoringTool/structure/ki-cycle-using-oer/ki-cycle-using-oer.component.html @@ -8797,7 +8817,7 @@ Click "Cancel" to keep the invalid JSON open so you can fix it. src/assets/wise5/authoringTool/structure/jigsaw/jigsaw.component.html - 20 + 24 src/assets/wise5/authoringTool/structure/ki-cycle-using-oer/ki-cycle-using-oer.component.html @@ -10725,6 +10745,105 @@ Click "Cancel" to keep the invalid JSON open so you can fix it.1 + + Choose the location for your new lesson: + + src/assets/wise5/authoringTool/structure/choose-structure-location/choose-structure-location.component.html + 1 + + + + Insert As First Lesson + + src/assets/wise5/authoringTool/structure/choose-structure-location/choose-structure-location.component.html + 9 + + + + Choose a Lesson Structure + + src/assets/wise5/authoringTool/structure/choose-structure/choose-structure.component.html + 1 + + + + Based on our work with classroom teachers, we have developed several lesson structures that follow the Knowledge Integration framework and help teachers productively integrate open educational resources (OERs) into their curricula. These structures have also proven useful for developing students' capacity for self-directed learning. We have made the structures very general, so that teachers can customize and incorporate them into any WISE unit to strengthen support for knowledge integration and self-directed learning. + + + src/assets/wise5/authoringTool/structure/choose-structure/choose-structure.component.html + 2,11 + + + + Choose Structure + + src/assets/wise5/authoringTool/structure/choose-structure/choose-structure.component.html + 25 + + + + Select + + src/assets/wise5/authoringTool/structure/choose-structure/choose-structure.component.html + 28,30 + + + + Jigsaw + + src/assets/wise5/authoringTool/structure/choose-structure/choose-structure.component.ts + 13 + + + + The Jigsaw KI lesson structure guides students through learning about specific aspects of a science topic of their choice and engages them in collaboration to learn more. Students share their own ideas and reflect on what they learned from their classmates. + + src/assets/wise5/authoringTool/structure/choose-structure/choose-structure.component.ts + 14 + + + + Self-Directed Investigation + + src/assets/wise5/authoringTool/structure/choose-structure/choose-structure.component.ts + 19 + + + + The Self-Directed Investigation KI lesson structure helps students ask research questions about a science topic, guides them through refining their initial questions to researchable questions, and supports them in finding and evaluating evidence using online resources of their choice. Students synthesize their findings into a product of your choice. + + src/assets/wise5/authoringTool/structure/choose-structure/choose-structure.component.ts + 20 + + + + Peer Review & Revision + + src/assets/wise5/authoringTool/structure/choose-structure/choose-structure.component.ts + 25 + + + + The Peer Review & Revision KI lesson structure guides students through writing their own explanation, critiquing explanations of peer learners, and ultimately revising their own initial explanation. + + src/assets/wise5/authoringTool/structure/choose-structure/choose-structure.component.ts + 26 + + + + KI Lesson with OER + + src/assets/wise5/authoringTool/structure/choose-structure/choose-structure.component.ts + 31 + + + + The KI Lesson with OER guides you to embed an open educational resource (OER) of your choice in a lesson structure that promotes knowledge integration (KI). The structure suggests different step types that engage students in eliciting their ideas, discovering new ideas through use of the OER, distinguishing among their initial and new ideas, and making connections to form integrated understanding. + + src/assets/wise5/authoringTool/structure/choose-structure/choose-structure.component.ts + 32 + + Jigsaw @@ -10751,21 +10870,21 @@ Click "Cancel" to keep the invalid JSON open so you can fix it.Two groups src/assets/wise5/authoringTool/structure/jigsaw/jigsaw.component.html - 10 + 14 Three groups src/assets/wise5/authoringTool/structure/jigsaw/jigsaw.component.html - 11 + 15 Four groups src/assets/wise5/authoringTool/structure/jigsaw/jigsaw.component.html - 12 + 16